Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
154 changes: 154 additions & 0 deletions C/CUDA/CUDA_Runtime/build_10.0.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,154 @@
dependencies = [BuildDependency(PackageSpec(name="CUDA_full_jll", version=v"10.0.130"))]

script = raw"""
# First, find (true) CUDA toolkit directory in ~/.artifacts somewhere
CUDA_ARTIFACT_DIR=$(dirname $(dirname $(realpath $prefix/cuda/bin/ptxas${exeext})))
cd ${CUDA_ARTIFACT_DIR}

# Clear out our prefix
rm -rf ${prefix}/*

# license
install_license EULA.txt

# headers
mkdir -p ${prefix}/include
mv include/* ${prefix}/include
rm -rf ${prefix}/include/thrust

# binaries
mkdir -p ${bindir} ${libdir} ${prefix}/lib ${prefix}/share
if [[ ${target} == x86_64-linux-gnu ]]; then
# CUDA Runtime
mv lib64/libcudart.so* lib64/libcudadevrt.a ${libdir}

# CUDA FFT Library
mv lib64/libcufft.so* lib64/libcufftw.so* ${libdir}

# CUDA BLAS Library
mv lib64/libcublas.so* ${libdir}

# CUDA Sparse Matrix Library
mv lib64/libcusparse.so* ${libdir}

# CUDA Linear Solver Library
mv lib64/libcusolver.so* ${libdir}

# CUDA Random Number Generation Library
mv lib64/libcurand.so* ${libdir}

# NVIDIA Optimizing Compiler Library
mv nvvm/lib64/libnvvm.so* ${libdir}

# NVIDIA Common Device Math Functions Library
mkdir ${prefix}/share/libdevice
mv nvvm/libdevice/libdevice.10.bc ${prefix}/share/libdevice

# CUDA Profiling Tools Interface (CUPTI) Library
mv extras/CUPTI/lib64/libcupti.so* ${libdir}

# NVIDIA Tools Extension Library
mv lib64/libnvToolsExt.so* ${libdir}

# Additional binaries
mv bin/ptxas ${bindir}
mv bin/nvdisasm ${bindir}
mv bin/nvlink ${bindir}
elif [[ ${target} == x86_64-apple-darwin* ]]; then
# CUDA Runtime
mv lib/libcudart.*dylib lib/libcudadevrt.a ${libdir}

# CUDA FFT Library
mv lib/libcufft.*dylib lib/libcufftw.*dylib ${libdir}

# CUDA BLAS Library
mv lib/libcublas.*dylib ${libdir}

# CUDA Sparse Matrix Library
mv lib/libcusparse.*dylib ${libdir}

# CUDA Linear Solver Library
mv lib/libcusolver.*dylib ${libdir}

# CUDA Random Number Generation Library
mv lib/libcurand.*dylib ${libdir}

# NVIDIA Optimizing Compiler Library
mv nvvm/lib/libnvvm.*dylib ${libdir}

# NVIDIA Common Device Math Functions Library
mkdir ${prefix}/share/libdevice
mv nvvm/libdevice/libdevice.10.bc ${prefix}/share/libdevice

# CUDA Profiling Tools Interface (CUPTI) Library
mv extras/CUPTI/lib/libcupti.*dylib ${libdir}

# NVIDIA Tools Extension Library
mv lib/libnvToolsExt.*dylib ${libdir}

# Additional binaries
mv bin/ptxas ${bindir}
mv bin/nvdisasm ${bindir}
mv bin/nvlink ${bindir}
elif [[ ${target} == x86_64-w64-mingw32 ]]; then
# CUDA Runtime
mv bin/cudart64_*.dll ${bindir}
mv lib/x64/cudadevrt.lib ${prefix}/lib

# CUDA FFT Library
mv bin/cufft64_*.dll bin/cufftw64_*.dll ${bindir}

# CUDA BLAS Library
mv bin/cublas64_*.dll ${bindir}

# CUDA Sparse Matrix Library
mv bin/cusparse64_*.dll ${bindir}

# CUDA Linear Solver Library
mv bin/cusolver64_*.dll ${bindir}

# CUDA Random Number Generation Library
mv bin/curand64_*.dll ${bindir}

# NVIDIA Optimizing Compiler Library
mv nvvm/bin/nvvm64_*.dll ${bindir}

# NVIDIA Common Device Math Functions Library
mkdir ${prefix}/share/libdevice
mv nvvm/libdevice/libdevice.10.bc ${prefix}/share/libdevice

# CUDA Profiling Tools Interface (CUPTI) Library
mv extras/CUPTI/libx64/cupti64_*.dll ${bindir}

# NVIDIA Tools Extension Library
mv bin/nvToolsExt64_1.dll ${bindir}

# Additional binaries
mv bin/ptxas.exe ${bindir}
mv bin/nvdisasm.exe ${bindir}
mv bin/nvlink.exe ${bindir}

# Fix permissions
chmod +x ${bindir}/*.{exe,dll}
fi
"""

products = [
LibraryProduct(["libnvvm", "nvvm64_33_0"], :libnvvm),
LibraryProduct(["libcufft", "cufft64_100"], :libcufft),
LibraryProduct(["libcublas", "cublas64_100"], :libcublas),
LibraryProduct(["libcusparse", "cusparse64_100"], :libcusparse),
LibraryProduct(["libcusolver", "cusolver64_100"], :libcusolver),
LibraryProduct(["libcurand", "curand64_100"], :libcurand),
LibraryProduct(["libcupti", "cupti64_100"], :libcupti),
LibraryProduct(["libnvToolsExt", "nvToolsExt64_1"], :libnvtoolsext),
FileProduct(["lib/libcudadevrt.a", "lib/cudadevrt.lib"], :libcudadevrt),
FileProduct("share/libdevice/libdevice.10.bc", :libdevice),
ExecutableProduct("ptxas", :ptxas),
ExecutableProduct("nvdisasm", :nvdisasm),
ExecutableProduct("nvlink", :nvlink),
]

platforms = [Platform("x86_64", "linux"; cuda="10.0"),
Platform("x86_64", "macos"; cuda="10.0"),
Platform("x86_64", "windows"; cuda="10.0")]
128 changes: 128 additions & 0 deletions C/CUDA/CUDA_Runtime/build_10.2.jl
Original file line number Diff line number Diff line change
@@ -0,0 +1,128 @@
dependencies = [BuildDependency(PackageSpec(name="CUDA_full_jll", version=v"10.2.89"))]

script = raw"""
# First, find (true) CUDA toolkit directory in ~/.artifacts somewhere
CUDA_ARTIFACT_DIR=$(dirname $(dirname $(realpath $prefix/cuda/bin/ptxas${exeext})))
cd ${CUDA_ARTIFACT_DIR}

# Clear out our prefix
rm -rf ${prefix}/*

# license
install_license EULA.txt

# headers
mkdir -p ${prefix}/include
mv include/* ${prefix}/include
rm -rf ${prefix}/include/thrust

# binaries
mkdir -p ${bindir} ${libdir} ${prefix}/lib ${prefix}/share
if [[ ${target} == x86_64-linux-gnu || ${target} == aarch64-linux-gnu ]]; then
# CUDA Runtime
mv lib64/libcudart.so* lib64/libcudadevrt.a ${libdir}

# CUDA FFT Library
mv lib64/libcufft.so* lib64/libcufftw.so* ${libdir}

# CUDA BLAS Library
mv lib64/libcublas.so* lib64/libcublasLt.so* ${libdir}

# CUDA Sparse Matrix Library
mv lib64/libcusparse.so* ${libdir}

# CUDA Linear Solver Library
mv lib64/libcusolver.so* ${libdir}

# CUDA Linear Solver Multi GPU Library
if [[ $target != aarch64-linux-gnu ]]; then
mv lib64/libcusolverMg.so* ${libdir}
fi

# CUDA Random Number Generation Library
mv lib64/libcurand.so* ${libdir}

# NVIDIA Optimizing Compiler Library
mv nvvm/lib64/libnvvm.so* ${libdir}

# NVIDIA Common Device Math Functions Library
mkdir ${prefix}/share/libdevice
mv nvvm/libdevice/libdevice.10.bc ${prefix}/share/libdevice

# CUDA Profiling Tools Interface (CUPTI) Library
mv extras/CUPTI/lib64/libcupti.so* ${libdir}

# NVIDIA Tools Extension Library
mv lib64/libnvToolsExt.so* ${libdir}

# Additional binaries
mv bin/ptxas ${bindir}
mv bin/nvdisasm ${bindir}
mv bin/nvlink ${bindir}
elif [[ ${target} == x86_64-w64-mingw32 ]]; then
# CUDA Runtime
mv bin/cudart64_*.dll ${bindir}
mv lib/x64/cudadevrt.lib ${prefix}/lib

# CUDA FFT Library
mv bin/cufft64_*.dll bin/cufftw64_*.dll ${bindir}

# CUDA BLAS Library
mv bin/cublas64_*.dll bin/cublasLt64_*.dll ${bindir}

# CUDA Sparse Matrix Library
mv bin/cusparse64_*.dll ${bindir}

# CUDA Linear Solver Library
mv bin/cusolver64_*.dll ${bindir}

# CUDA Linear Solver Nulti GPU Library
mv bin/cusolverMg64_*.dll ${bindir}

# CUDA Random Number Generation Library
mv bin/curand64_*.dll ${bindir}

# NVIDIA Optimizing Compiler Library
mv nvvm/bin/nvvm64_*.dll ${bindir}

# NVIDIA Common Device Math Functions Library
mkdir ${prefix}/share/libdevice
mv nvvm/libdevice/libdevice.10.bc ${prefix}/share/libdevice

# CUDA Profiling Tools Interface (CUPTI) Library
mv extras/CUPTI/lib64/cupti64_*.dll ${bindir}

# NVIDIA Tools Extension Library
mv bin/nvToolsExt64_1.dll ${bindir}

# Additional binaries
mv bin/ptxas.exe ${bindir}
mv bin/nvdisasm.exe ${bindir}
mv bin/nvlink.exe ${bindir}

# Fix permissions
chmod +x ${bindir}/*.{exe,dll}
fi
"""

products = [
LibraryProduct(["libnvvm", "nvvm64_33_0"], :libnvvm),
LibraryProduct(["libcufft", "cufft64_10"], :libcufft),
LibraryProduct(["libcublas", "cublas64_10"], :libcublas),
LibraryProduct(["libcusparse", "cusparse64_10"], :libcusparse),
LibraryProduct(["libcusolver", "cusolver64_10"], :libcusolver),
LibraryProduct(["libcurand", "curand64_10"], :libcurand),
LibraryProduct(["libcupti", "cupti64_102"], :libcupti),
LibraryProduct(["libnvToolsExt", "nvToolsExt64_1"], :libnvtoolsext),
FileProduct(["lib/libcudadevrt.a", "lib/cudadevrt.lib"], :libcudadevrt),
FileProduct("share/libdevice/libdevice.10.bc", :libdevice),
ExecutableProduct("ptxas", :ptxas),
ExecutableProduct("nvdisasm", :nvdisasm),
ExecutableProduct("nvlink", :nvlink),
]

platforms = [
Platform("aarch64", "linux"; cuda="10.2"),
Platform("x86_64", "linux"; cuda="10.2"),
Platform("x86_64", "windows"; cuda="10.2")
]
Loading