Могу ли я безопасно использовать `spread` для копирования из среза массива в тот же массив? - PullRequest
1 голос
/ 08 октября 2019

2D-данные хранятся в файле, который я хочу загрузить и распределить в 3D-массив по последнему индексу. Могу ли я безопасно загрузить данные в срез, а затем использовать спред из этого, например, так:

real, dimension(nx,ny,nz) :: data

call load_some_data(data(:,:,1))

data = spread(data(:,:,1), 3, nz)

Или мне нужен временный 2D-массив, чтобы спред соответствовал стандарту? Будет ли spread вызов работать также в предложении OpenMP workshare?

1 Ответ

1 голос
/ 08 октября 2019

Да, вы можете сделать это. В зависимости от уровня оптимизации компилятора он будет использовать или не будет использовать временный массив, но это допустимо.

Нет, он не будет распараллелен в конструкции workshare. Простое присвоение массива будет, но я боюсь, что результат функции будет проблематичным. И звонок на spread, безусловно, будет последовательным.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...