为了账号安全,请及时绑定邮箱和手机立即绑定

在 Windows 上调用 cuda 库

在 Windows 上调用 cuda 库

Go
HUH函数 2022-08-01 15:07:04
我正在尝试使用cuda来并行化Go项目。我读过Golang多次打电话给CUDA图书馆。我试图在Windows上做同样的事情,但遇到了麻烦。(我假设这个OP是因为文件而使用的是Linux).so我已经成功编译/运行了以下涉及cuda代码的测试程序,以确保我的CGO正常工作。测试.cppextern "C"{    int testfunc(){        return 1000;    }}使用 g++ 编译 g++  test.cpp -o test.dll --sharedcallC.gopackage main//int testfunc();//#cgo LDFLAGS: -L. -ltestimport "C"import "fmt"func main() {    fmt.Println(C.testfunc())}打印 1000 - 太好了!现在我尝试同样的事情,我从ld那里得到一个错误,有一个未定义的引用到testfunc。nvcctest.cuextern "C"{  int testfunc()  {    return 1 + 1;  }}编译与 ...我总是得到:nvcc test.cu -o testcuda.dll --shared --compiler-options -fPICcl : Command line warning D9002 : ignoring unknown option '-fPIC'cl : Command line warning D9002 : ignoring unknown option '-fPIC'cl : Command line warning D9002 : ignoring unknown option '-fPIC'Creating library testcuda.lib and object testcuda.expcallCudaC.gopackage main//int testfunc();//#cgo LDFLAGS: -L. -ltestcuda//#cgo LDFLAGS: -LC:\temppath\CUDA\v11.2\ -lcudartimport "C"import "fmt"func main() {    fmt.Println(C.testfunc())}运行此 go 代码的结果 C:\Users\MICHAE~1\AppData\Local\Temp\go-build045526290\b001\_x002.o: In function `_cgo_701f531a6502_Cfunc_testfunc': /tmp/go-build/cgo-gcc-prolog:52: undefined reference to `testfunc' collect2.exe: error: ld returned 1 exit status你会注意到我的“cuda”代码不涉及任何cuda,只涉及一个导出的函数,并且我尝试将cuda安装移动到一个更简单的路径,所以我实际上可以将其作为目录传递给链接器 - 我不确定它是否需要,因为没有使用cuda语法等。如果有人以前见过这个,将不胜感激调试提示或提示。
查看完整描述

1 回答

?
米脂

TA贡献1836条经验 获得超3个赞

多亏了@talonmies注释的指示,我发现至少在简单的情况下,我可以通过定义一个看起来像这样的头文件来调用cl.exe和nvcc.exe从cgo创建的dll:



#ifdef __cplusplus

extern "C" {  // only need to export C interface if

              // used by C++ source code

#endif


 __declspec(dllexport) int  testfunc();

 

#ifdef __cplusplus

}

#endif

此代码是引用以下两篇 MSDN 文章创建的:https://docs.microsoft.com/en-us/cpp/build/exporting-cpp-functions-for-use-in-c-language-executables?view=msvc-160


https://docs.microsoft.com/en-us/cpp/build/exporting-c-functions-for-use-in-c-or-cpp-language-executables?view=msvc-160


查看完整回答
反对 回复 2022-08-01
  • 1 回答
  • 0 关注
  • 151 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信