Может ли встроенное устройство nvlink функционировать из отдельных модулей компиляции?

Если отдельные единицы компиляции, которые подают в качестве входных данных для nvlink содержит ядра cuda и функции устройства, которые вызывают функции устройства, помеченные как __forceinline__Будут ли эти функции встроены? Предположим, что они будут встроены, если поместить весь исходный код в один файл.

1 ответ

Если отдельные модули компиляции, которые передаются в качестве входных данных для nvlink, содержат ядра cuda и функции устройства, которые вызывают функции устройства, помеченные как __forceinline__Будут ли эти функции встроены?

Насколько мне известно, компоновщик кода устройства CUDA не может этого сделать. __forceinline__ Директива является операцией на уровне компилятора, и после компиляции нет способа пометить код как встроенный в PTX или SASS. Компилятор кода устройства CUDA должен выдавать предупреждение о том, что была использована внешняя встроенная функция, но не определена, если вы попробуете это.

Если вы хотите, чтобы функции компилировались внутри строки, вы должны (неудивительно) использовать компилятор, а не компоновщик.

Другие вопросы по тегам