nvcc --ptxas-options=-v (регистр и использование памяти) ОШИБКА

Я хочу скомпилировать свою программу cuda с флагом --ptxas-options=-v nvcc, чтобы добиться использования регистра и памяти, чтобы использовать их в калькуляторе занятости графического процессора CUDA.

ошибка: идентификатор "atomicAdd" не определен

Я использовал atomicAdd в своем ядре. Как я могу решить эту проблему?


person Community    schedule 26.03.2012    source источник


Ответы (1)


Атомарные операции поддерживаются не всеми поколениями графических процессоров, а цель по умолчанию для nvcc — sm_10. Предполагая, что ваш графический процессор поддерживает атомарные операции (подробности о том, что функции поддерживаются вашим графическим процессором, приложение F.1), тогда вам нужно будет ориентироваться на эту архитектуру, например -gencode arch=compute_20,code=\'compute_20,sm_20\' для Fermi и новее. Дополнительную информацию о параметрах генкода см. в руководстве по NVCC.

Кстати, действительно ли добавление флага --ptxas-options=-v меняет поведение? Если нет, то заголовок вашего вопроса вводит в заблуждение.

person Tom    schedule 26.03.2012
comment
Атомарные операции поддерживаются графическим процессором, который я использую. Я скомпилировал свою программу с помощью nvcc -arch=sm_20 test.cu -o test и получил правильный результат. Я просто хочу использовать указанную опцию, чтобы зарегистрировать и использовать общую память моей программы. - person ; 26.03.2012
comment
Итак, ваша проблема решена? Другими словами, вы больше не получаете ошибку? - person Tom; 26.03.2012
comment
Нет, моя проблема не решена. У меня все еще есть проблема с упомянутой опцией. Я не могу использовать указанную опцию для компиляции моей программы. - person ; 26.03.2012
comment
Вам нужно будет использовать вместе -arch=sm_20 и --ptxas-options=-v. Если это не сработает, пожалуйста, опубликуйте полную командную строку... - person Tom; 26.03.2012
comment
Вы имеете в виду, что проблема устранена, когда у вас есть оба варианта вместе? - person Tom; 30.03.2012