I am trying to call a CUDA function from Go code. I have the following three files.
test.h:
int test_add(void);
test.cu:
__global__ void add(int *a, int *b, int *c){ *c = *a + *b; } int test_add(void) { int a, b, c;
test.go:
package main import "fmt" //#cgo CFLAGS: -I. //#cgo LDFLAGS: -L. -ltest //#cgo LDFLAGS: -lcudart //#include <test.h> import "C" func main() { fmt.Printf("Invoking cuda library...\n") fmt.Println("Done ", C.test_add()) }
I am compiling CUDA code with:
nvcc -m64 -arch=sm_20 -o libtest.so --shared -Xcompiler -fPIC test.cu
All three files - test.h, test.cu and test.go are in the same directory. The error I get when I try to build with go is "undefined reference to" test_add "".
I have very little experience with C / C ++ and am just new to CUDA.
I have been trying to solve my problem in two days and will be very grateful for any input.
Thanks.
source share