Я создал пакет Haskell, который вызывает вызовы FFI для функций, определенных в коде CUDA. Я хотел бы скомпилировать файл .cu в файл объекта (.o) во время сборки пакета и принудительного компоновщика, чтобы связать его.
До сих пор я пытался использовать технику этот вопрос. Я настроил buildHook для:
- запустить nvcc
- запустить по умолчанию buildHook
- создать файл ar библиотеки с помощью скомпилированного кода nvcc.
Setup.hs доступен здесь.
Это решение имеет большой недостаток в ограничении этого пакета статической привязкой. Хотя cabal создает общую библиотеку, он не будет работать, поскольку он не имеет способа разрешать символы, находящиеся в объектном файле.
Есть ли более простой способ связать пользовательский код во время сборки?