I’m in the process of building a Julia package which uses some custom CUDA kernels that I wrote a few years ago.
I want to provide these CUDA binaries with the package, and have them compiled using BinDeps.jl. I’m following a recipe that worked for some of my C++, but somehow BinDeps does not seem to be happy with my CUDA code.
Here is my build.jl file:
using BinDeps @BinDeps.setup deps = [ cudautils = library_dependency("cudautils") ] prefix=joinpath(BinDeps.depsdir(cudautils)) linscan_aqdbuilddir = joinpath(BinDeps.depsdir(cudautils),"builds") # === CUDA code === provides(BuildProcess, (@build_steps begin CreateDirectory(linscan_aqdbuilddir) @build_steps begin ChangeDirectory(linscan_aqdbuilddir) FileRule(joinpath(prefix,"builds","cudautils.ptx"),@build_steps begin `nvcc -ptx ../src/cudautils.cu -o cudautils.ptx -arch=compute_35` end) end end),cudautils, os = :Linux, installed_libpath=joinpath(prefix,"builds")) @BinDeps.install Dict([(:cudautils, :cudautils)])
However, when I build I always get this message:
LoadError: Provider BinDeps.BuildProcess failed to satisfy dependency cudautils
It is not clear to me why this process works for C++ code that produces
.so files, but not for CUDA code that produces
.ptx files. Any help is appreciated.