Haskell FFI与CUDA使用堆栈构建工具设置?

时间:2017-04-24 21:21:20

标签: haskell cuda haskell-stack

我有一个项目,通过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?

1 个答案:

答案 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-librariesghc-options