Ошибка компилятора PGI OpenACC "pgf90_mzero8" не определена
Я пытаюсь скомпилировать подпрограмму в Фортран как!$ Acc рутина seq Я получаю следующее сообщение об ошибке
/scratch/tmp/pgaccKU0jSWcDesiI.gpu(93): ошибка: идентификатор "pgf90_mzero8" не определен
1 ошибка обнаружена в компиляции "/scratch/tmp/pgnvdgV0jsxZLyFWv.nv0"
PGI компилятор версия 17.4
Текстовый кейс
подпрограмма xx(ndime,pgaus,yy)!$acc стандартная последовательность
неявное целое число (4):: ndime, pgaus
real(8):: yy(ndime,ndime,pgaus)
уу =0,0
конец подпрограммы хх
1 ответ
Это известная проблема. Я предполагаю, что вы в своем коде обнуляете массив, используя синтаксис массива, что-то вроде "arr=0.0d0". Компилятор внешнего интерфейса распознает эту идиому и заменяет оптимизированную подпрограмму времени выполнения. Это происходит очень рано во время компиляции, задолго до того, как компилятор узнает, что этот раздел кода будет скомпилирован на устройстве. К сожалению, мы еще не перенесли эту подпрограмму времени выполнения на устройство и, следовательно, на ошибку.
Самый простой способ обойти это скомпилировать с флагом "-Mnoidiom", чтобы отключить эту оптимизацию.