CudaMalloc не работает при выделении памяти - PullRequest
0 голосов
/ 23 сентября 2018

Я пытаюсь выделить большой объем памяти на графическом процессоре, используя cudaMalloc: cudaMalloc((void**)&count_d, N*sizeof(long)); с

unsigned long N = 999999999L;

Я получил сообщение об ошибке в этом месте, поэтому возникает вопрос, если я выделяю слишком много памятиили я делаю что-то не так.

Сообщение об ошибке, что я получаю:

CUDA error : an illegal memory access was encountered (77)

1 Ответ

0 голосов
/ 24 сентября 2018

Как сказал @talonmies, и как говорит cudaMalloc() документация , вызов cudaMalloc() не может вызвать ошибку "недопустимого доступа к памяти" - это о недопустимом доступе устройством код(Код на стороне хоста, создающий недопустимый доступ к памяти, приводит к появлению сигнала SIGSEGV в Unix или сбоя защиты в Windows).

Так как же возможно, что вы видите эту ошибку после вашего cudaMalloc()?Просто: это случилось раньше, и вы просто не проверяли ошибки раньше;или вы не синхронизировали свои потоки с ожидающими выполнения ядрами.

Наконец, попробуйте перейти по ссылке @alterIgel, опубликованной в качестве комментария, чтобы прочитать о правильной проверке ошибок вызовов API CUDA.

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