Может ли встроенное устройство nvlink функционировать из отдельных модулей компиляции?
Если отдельные единицы компиляции, которые подают в качестве входных данных для nvlink
содержит ядра cuda и функции устройства, которые вызывают функции устройства, помеченные как __forceinline__
Будут ли эти функции встроены? Предположим, что они будут встроены, если поместить весь исходный код в один файл.
1 ответ
Если отдельные модули компиляции, которые передаются в качестве входных данных для nvlink, содержат ядра cuda и функции устройства, которые вызывают функции устройства, помеченные как
__forceinline__
Будут ли эти функции встроены?
Насколько мне известно, компоновщик кода устройства CUDA не может этого сделать. __forceinline__
Директива является операцией на уровне компилятора, и после компиляции нет способа пометить код как встроенный в PTX или SASS. Компилятор кода устройства CUDA должен выдавать предупреждение о том, что была использована внешняя встроенная функция, но не определена, если вы попробуете это.
Если вы хотите, чтобы функции компилировались внутри строки, вы должны (неудивительно) использовать компилятор, а не компоновщик.