Почему я получаю неопределенную ошибку символа для cuMemcpyDtoH_v2 в CUDA - PullRequest
0 голосов
/ 08 июня 2018

Я получаю неопределенную ошибку символа для cuMemcpyDtoH_v2 при попытке скомпилировать мой код.Я думаю, мой вопрос, где определяется cuMemcpyDtoH_v2?Я думал, что это будет определено в среде выполнения CUDA, но, похоже, это не так.Вот мой код:

#include </usr/local/cuda/include/cufft.h>
#include </usr/local/cuda/include/cuda.h>

void main()
{
   ...
   cuMemcpyDtoH_v2(v1, v2, ds);
   ...
}

Для компиляции я использую файл pyu disutils.core setup.py, так как я связываю код Python с кодом CUDA и создаю расширение Python C.

python myFunc.py -build_ext --inplace -lcudart -lcufft -L"/usr/local/cuda/lib64/"

myFunc.py имеет вызов команды disutils.core.setup (), которая используется для компиляции расширений Python.

Я предполагаю, что cuMemcpyDtoH_v2 будет определен в среде выполнения cuda, на которую я полагаю, что я связан с командой "-lcudart", но, возможно, это не так.

Я оченьновичок в программировании на C ++ и Cuda, так что я, возможно, где-то допустил очень глупую ошибку.Буду признателен за любую помощь.

1 Ответ

0 голосов
/ 08 июня 2018

Благодаря Роберту Кровелле я смог заставить это работать.Согласно Роберту, вызовы функций, начинающиеся с cu, обычно ссылаются на API драйвера, а функции, начинающиеся с cuda, обычно ссылаются на API-интерфейс CUDA rumtime.Поэтому мне нужно было связаться с API драйвера cuda, используя следующую команду:

python myfunc.py -build-ext --inplace -lcudart -lcudafft -L"/usr/local/cuda/lib64" -lcuda -L"/usr/local/cuda/lib64/stubs/"

Примечание: я использую CUDA версии 9.1

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