-
Notifications
You must be signed in to change notification settings - Fork 68
Description
Hi people,
I had some difficulty trying to install this library. For one part that was because I didn't see that there is a guide until after I got it working. For the other part is was because cgoflags.go isn't entirely correct.
I got this error:
$ go install -v gorgonia.org/cu/cmd/cudatest
# gorgonia.org/cu
/home/markkremer/go/pkg/mod/gorgonia.org/[email protected]/addressing.go:3:11: fatal error: cuda.h: No such file or directory
// #include <cuda.h>
^~~~~~~~
compilation terminated.I did have cuda version 10.2 installed and symlinked to /usr/local/cuda/.
The start of cgoflags.go reads:
package cu
// This file provides CGO flags to find CUDA libraries and headers.
//#cgo LDFLAGS:-lcuda
//
////default location:
//#cgo linux,windows LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
//#cgo linux,windows CFLAGS: -I/usr/local/cuda/include/
//
////default location if not properly symlinked:
//#cgo linux LDFLAGS:-L/usr/local/cuda-10.1/lib64 -L/usr/local/cuda-10.1/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-6.0/lib64 -L/usr/local/cuda-6.0/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-5.5/lib64 -L/usr/local/cuda-5.5/lib
//#cgo linux LDFLAGS:-L/usr/local/cuda-5.0/lib64 -L/usr/local/cuda-5.0/lib
//#cgo linux CFLAGS: -I/usr/local/cuda-10.2/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-6.0/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-5.5/include/
//#cgo linux CFLAGS: -I/usr/local/cuda-5.0/include/When running go install -v -n gorgonia.org/cu/cmd/cudatest (with -n) to view the commands go runs, it doesn't use the top two /usr/local/cuda/... at all:
#
# gorgonia.org/cu
#
mkdir -p $WORK/b033/
cd /home/markkremer/go/pkg/mod/gorgonia.org/[email protected]
CGO_LDFLAGS='"-g" "-O2" "-lcuda" "-L/usr/local/cuda-10.1/lib64" "-L/usr/local/cuda-10.1/lib" "-L/usr/local/cuda-6.0/lib64" "-L/usr/local/cuda-6.0/lib" "-L/usr/local/cuda-5.5/lib64" "-L/usr/local/cuda-5.5/lib" "-L/usr/local/cuda-5.0/lib64" "-L/usr/local/cuda-5.0/lib" "-L/usr/lib/x86_64-linux-gnu/" "-L/opt/cuda/lib64" "-L/opt/cuda/lib"' /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/b033/ -importpath gorgonia.org/cu -- -I $WORK/b033/ -g -O2 -g -O3 -std=c99 -I/usr/local/cuda-10.1/include/ -I/usr/local/cuda-6.0/include/ -I/usr/local/cuda-5.5/include/ -I/usr/local/cuda-5.0/include/ -I/usr/include -I/opt/cuda/include ./addressing.go ./api.go ./array.go ./attributes.go ./batch.go ./batchedPatterns.go ./cgoflags.go ./context.go ./convenience.go ./ctx.go ./ctx_api.go ./cu.go ./cucontext.go ./device.go ./event.go ./execution.go ./flags.go ./jit.go ./memory.go ./module.go ./occupancy.go ./result.go ./stream.go ./surfref.go ./texref.go
cd $WORKIt does use all the other cuda directories. Unfortunately for me, 10.2 isn't in there.
I think the build constraint tags should be separated by spaces instead of commas:
- //#cgo linux,windows LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
+ //#cgo linux windows LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
- //#cgo linux,windows CFLAGS: -I/usr/local/cuda/include/
+ //#cgo linux windows CFLAGS: -I/usr/local/cuda/include/Now it does show up:
#
# gorgonia.org/cu
#
mkdir -p $WORK/b033/
cd /home/markkremer/go/pkg/mod/gorgonia.org/[email protected]
CGO_LDFLAGS='"-g" "-O2" "-lcuda" "-L/usr/local/cuda/lib64" "-L/usr/local/cuda/lib" "-L/usr/local/cuda-10.2/lib64" "-L/usr/local/cuda-10.2/lib" "-L/usr/local/cuda-6.0/lib64" "-L/usr/local/cuda-6.0/lib" "-L/usr/local/cuda-5.5/lib64" "-L/usr/local/cuda-5.5/lib" "-L/usr/local/cuda-5.0/lib64" "-L/usr/local/cuda-5.0/lib" "-L/usr/lib/x86_64-linux-gnu/" "-L/opt/cuda/lib64" "-L/opt/cuda/lib"' /usr/local/go/pkg/tool/linux_amd64/cgo -objdir $WORK/b033/ -importpath gorgonia.org/cu -- -I $WORK/b033/ -g -O2 -g -O3 -std=c99 -I/usr/local/cuda/include/ -I/usr/local/cuda-10.1/include/ -I/usr/local/cuda-6.0/include/ -I/usr/local/cuda-5.5/include/ -I/usr/local/cuda-5.0/include/ -I/usr/include -I/opt/cuda/include ./addressing.go ./api.go ./array.go ./attributes.go ./batch.go ./batchedPatterns.go ./cgoflags.go ./context.go ./convenience.go ./ctx.go ./ctx_api.go ./cu.go ./cucontext.go ./device.go ./event.go ./execution.go ./flags.go ./jit.go ./memory.go ./module.go ./occupancy.go ./result.go ./stream.go ./surfref.go ./texref.go
cd $WORKAlthough that isn't a Windows path so it's best to entirely remove the Windows part for that build constraint:
- //#cgo linux,windows LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
+ //#cgo linux LDFLAGS:-L/usr/local/cuda/lib64 -L/usr/local/cuda/lib
- //#cgo linux,windows CFLAGS: -I/usr/local/cuda/include/
+ //#cgo linux CFLAGS: -I/usr/local/cuda/include/I still don't have everything working locally but at least it builds now.