Для использования хост-кода:
Единственный общий обходной путь с высокой вероятностью успеха при создании сторонней библиотеки с помощью цепочки инструментов CUDA - это организовать ваш проект таким образом, чтобысторонний код находится в файле, который заканчивается на .cpp и обрабатывается компилятором хоста (например, g ++ в linux, cl.exe в windows).
Ваш код CUDA (например, ядра и т. Д.) Должен находиться в файлах с именами файлов, заканчивающимися на .cu (для стандартного режима обработки).
Если вам нужно использовать этот сторонний код/ библиотеки функций в ваших функциях, которые находятся в файле .cu, вам нужно будет встроить функции оболочки в ваши файлы .cpp, чтобы обеспечить необходимое поведение в качестве вызываемых функций, а затем вызывать эти функции оболочки по мере необходимости из вашего файла .cu(s).
Свяжите все это вместе на уровне проекта.
Возможно, что при анализе конкретной проблемы могут быть использованы другие подходы.Например, иногда обновление до последней версии сторонней библиотеки и / или версии CUDA может решить проблему.
Для использования в коде устройства:
Тамнет общего подхода совместимости.Если вы ожидаете, что какое-то поведение будет использоваться в коде устройства, и вы столкнетесь с ошибкой компиляции, подобной этой, вам нужно будет конкретно решить эту проблему.
По-прежнему могут применяться общие рекомендации, такие как обновление до последней версии сторонней библиотеки, которую вы используете, и / или до последней версии CUDA.