Свойства устройства CUDA и возможности вычислений при компиляции - PullRequest
0 голосов
/ 18 мая 2011

Предположим, у меня есть код, который позволяет пользователю передать threads_per_block для вызова ядра.Затем я хочу проверить, допустим ли ввод (например, <= 512 для вычислительных возможностей CC <2.0 и 1024 для CC> = 2.0).

Теперь мне интересно, что произойдет, если я скомпилирую код с nvcc -arch=sm_13 при наличии видеокарты на моем компьютере с CC2.0, когда пользователь передает threads_per_block == 1024?Является ли это:

  • допустимым вводом - поскольку карта, на которой я работаю, имеет CC2.0, или ...
  • недействительна, поскольку я скомпилировал ее для CC1.3?

Или nvcc -arch=sm_13 просто означает, что CC1.3 по крайней мере необходим, но при запуске его на более высоких CC, хотя эти более высокие функции можно использовать?

1 Ответ

1 голос
/ 18 мая 2011

Из руководства nvcc:

-arch

Архитектура, определяемая этим параметром, - это архитектура, которая предполагается цепочкой компиляции вплоть до этапа ptx, ...

Это означает, что он определяет, какие функции PTX (например, специальные инструкции) может использовать компилятор. Максимальное количество потоков в блоке не определяется ISA PTX, поэтому этот параметр компилятора не имеет отношения к проблеме, которую вы пытаетесь решить.

Лучший способ проверить, является ли thread_per_block действительным, - это просто запустить ядро ​​и посмотреть, нет ли ошибок.

...