我有一个项目,通过FFI可以很好地处理haskell,堆栈和一些C代码。我想添加一些CUDA代码来将一些计算卸载到GPU。有点不确定如何配置?
在我的.cabal文件中我只是:
c-sources: src/ccode/blah.c, src/ccode/blah.h, src/ccode/blah2.c, etc..
cc-options: -std=c99
当我运行堆栈构建时,它很好地构建了C和haskell。如何添加CUDA?
答案 0 :(得分:1)
您可以在使用cabal之前手动编译CUDA代码:
nvcc -c cudacode.c
然后用阴谋建造。示例.cabal
文件:
name: package
version: 0.1
build-type: Simple
executable main
main-is: Main.hs
build-depends: base
extra-libraries: stdc++
ghc-options: -pgmlg++ cudacode.o
C-sources: just_c.c, some_cpp.cpp
Includes: just_c.h, cudacode.h, some_cpp.h
如果没有C ++,您可以省略extra-libraries
字段和第一个ghc-option
。
或者,您可以将nvcc
指定为所有内容的编译器,而不必单独编译它:
cabal install --with-gcc=/path/to/nvcc
示例.cabal
文件:
name: package
version: 0.1
build-type: Simple
executable main
main-is: Main.hs
build-depends: base
extra-libraries: stdc++
ghc-options: -pgmlg++
C-sources: just_c.c, cudacode.c, some_cpp.cpp
Includes: just_c.h, cudacode.h, some_cpp.h
同样,只有C ++才需要extra-libraries
和ghc-options
。