Я создал код C++, использующий OpenACC, и скомпилировал его с помощью компилятора PGI для использования на графическом процессоре Tesla.
Компиляция проходит успешно без каких-либо предупреждений.
Запускаю программу и получаю две ошибки:
call to cuStreamSynchronize returned error 717: Invalid address space
call to cuMemFreeHost returned error 717: Invalid address space
Интернет, похоже, мало что знает об этом, кроме предложения включение единой памяти, чтобы проблема автоматически заметалась под ковер. Я не сторонник такого решения.
Как мне отладить это?
С кодом C++, работающим только на ЦП, я запускал gdb, выполнял обратную трассировку и говорил: «Ага!»
Но теперь у меня есть код, живущий на процессоре и на графическом процессоре, и данные передаются между ними. Я даже не знаю, какие инструменты использовать.
Запасной вариант — начать комментировать строки до тех пор, пока проблема не исчезнет, но это тоже кажется неоптимальным.