«Code = sm_X» включает в себя только двоичный (кубиновый) код, или также код PTX, или оба?
Я немного запутался по поводу опции 'code = sm_X' в операторе '-gencode'.
Пример: что делает опция компилятора NVCC
-gencode arch=compute_13,code=sm_13
вставлять в библиотеку?
Только машинный код (код кубина) для графических процессоров с CC 1.3 илитакже код PTX для графических процессоров с CC 1.3?
В «Руководстве по совместимости Maxwell» указано «Только конечные целевые версии, указанные в предложении« code = », будут сохранены в результирующем двоичном файле».
Исходя из этого, я могу сделать вывод, что данная опция компилятора встраивает машинный код только для графических процессоров с CC 1.3 инет Код PTX. Это будет означать, что это будетне можно запустить эту библиотеку, например на плате генерации Максвелла, поскольку в библиотеке нет встроенного кода PTX, из которого машинный код может быть скомпилирован «точно в срок» (JIT).
С другой стороны, в презентации GTC 2013 «Введение в CUDA Toolkit как инструмент для сборки приложений» от NVIDIA говорится, что «-gencode arch = compute_13, code = sm_13» достаточно для всех графических процессоров с CC> = 1,3 и что с этой опцией компилятора для графических процессоров с CC> 1,3 машинный код JIT-редактируется из кода PTX. Таким образом, информация, представленная в руководстве по совместимости Maxwell и этой презентации GTC, на мой взгляд, противоречива.