Ошибка компилятора 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", чтобы отключить эту оптимизацию.

Другие вопросы по тегам