Skip to content
Snippets Groups Projects
Commit aabf23df authored by Grégoire Kubler's avatar Grégoire Kubler
Browse files

Merge branch 'fix_cuda_wheel_too_big' into 'main'

fix : cuda wheel too big

Closes #32

See merge request !46
parents 6971fe6c 3ea3f099
No related branches found
No related tags found
1 merge request!46fix : cuda wheel too big
Pipeline #59665 passed
......@@ -40,9 +40,10 @@ release:pip:ubuntu:
DOCKER_HOST='unix:///var/run/docker.sock'
ARCH='x86_64'
CUDNN_VERSION='9'
CUDA_MAJOR_VERSION='11'
CUDA_MINOR_VERSION='8'
CUDA_MAJOR_VERSION='12'
CUDA_MINOR_VERSION='4'
SEARCH_PATH='/home/ubuntu/builds/$CI_RUNNER_SHORT_TOKEN/$CI_CONCURRENT_ID'
CIBW_REPAIR_WHEEL_COMMAND=''
parallel:
matrix:
......
......@@ -17,6 +17,7 @@ else
-name "$repo" \
-not -path "*/install/*" \
-not -path "*/.git/*" \
-not -path "*/.mypy_cache/*" \
-not -path "*/miniconda/*" \
-not -path "*/conda/*" \
-not -path "*/.local/*" \
......
......@@ -28,11 +28,11 @@ set(module_name _${CMAKE_PROJECT_NAME}) # target name
##############################################
# Define options
option(PYBIND "python binding" OFF)
option(WERROR "Warning as error" OFF)
option(TEST "Enable tests" ON)
option(COVERAGE "Enable coverage" OFF)
option(ENABLE_ASAN "Enable ASan (AddressSanitizer) for runtime analysis of memory use (over/underflow, memory leak, ...)" OFF)
option(PYBIND "python binding (Default: OFF)" OFF)
option(WERROR "Warning as error (Default: OFF)" OFF)
option(TEST "Enable tests (Default: ON)" ON)
option(COVERAGE "Enable coverage (Default: OFF)" OFF)
option(ENABLE_ASAN "Enable ASan (AddressSanitizer) for runtime analysis of memory use (over/underflow, memory leak, ...) (Default: OFF)" OFF)
##############################################
# Import utils CMakeLists
......@@ -60,14 +60,14 @@ endif()
##########
# CUDA
if(NOT $ENV{AIDGE_INSTALL} STREQUAL "")
if(NOT $ENV{CIBUILDWHEEL} STREQUAL "")
message(WARNING "Env var CIBUILDWHEEL detected : currently building for a release job."
"\nSetting manually CUDACXX, PATH & LD_LIBRARY_PATH Variables")
list(APPEND ENV{LD_LIBRARY_PATH} /usr/local/cuda/lib64)
list(APPEND ENV{PATH} /usr/local/cuda/bin)
set(ENV{CUDACXX} /usr/local/cuda/bin/nvcc)
endif()
find_package(CUDAToolkit REQUIRED)
find_package(CUDAToolkit 12 REQUIRED)
if(NOT DEFINED CMAKE_CUDA_STANDARD)
set(CMAKE_CUDA_STANDARD 14)
set(CMAKE_CUDA_STANDARD_REQUIRED ON)
......@@ -97,7 +97,7 @@ if (PYBIND)
# Handles Python + pybind11 headers dependencies
include(PybindModuleCreation)
# creates a target of the same name as CMAKE_PROJECT_NAME
generate_python_binding(${CMAKE_PROJECT_NAME} ${module_name}) # the python bindings module has the same name as the project.
generate_python_binding(${CMAKE_PROJECT_NAME} ${module_name}) # the python bindings module has the same name as the project.
target_link_libraries(${module_name}
PUBLIC
......@@ -110,9 +110,10 @@ endif()
target_link_libraries(${module_name}
PUBLIC
_aidge_core # _ is added because we link the target not the project
CUDA::cudart
PRIVATE
CUDA::cublas
cudnn
CUDA::cudart
)
if( ${ENABLE_ASAN} )
......
......@@ -8,6 +8,8 @@ You can find in this folder the library that implements the CUDA operators.
## Installation
### Dependencies
- [CUDA ToolKit 12.4](https://developer.nvidia.com/cuda-12-4-0-download-archive)
- [CUDnn9](https://developer.nvidia.com/cudnn-downloads) make sure to install the CUDA 12 compatible version
- `GCC`
- `Make`/`Ninja`
- `CMake`
......
......@@ -20,6 +20,18 @@ function(generate_python_binding pybind_module_name target_to_bind)
file(GLOB_RECURSE pybind_src_files "python_binding/*.cpp")
pybind11_add_module(${pybind_module_name} MODULE ${pybind_src_files} "NO_EXTRAS") # NO EXTRA recquired for pip install
target_include_directories(${pybind_module_name} PUBLIC "python_binding")
target_link_libraries(${pybind_module_name} PUBLIC ${target_to_bind})
target_include_directories(${pybind_module_name} PRIVATE "python_binding")
target_link_libraries(${pybind_module_name}
PRIVATE
${target_to_bind}
CUDA::cublas
cudnn
CUDA::cudart
)
set_property(TARGET ${pybind_module_name} PROPERTY POSITION_INDEPENDENT_CODE ON)
set_target_properties(${pybind_module_name} PROPERTIES CUDA_SEPARABLE_COMPILATION ON)
set_target_properties(${pybind_module_name} PROPERTIES
CMAKE_SHARED_LINKER_FLAGS "-Wl,--exclude-libs,ALL"
)
set_target_properties(${module} PROPERTIES INSTALL_RPATH "")
endfunction()
......@@ -47,6 +47,8 @@ test-command = "pytest {project}/aidge_backend_cuda/unit_tests"
# "cp310-manylinux_x86_64"
# ]
repair-wheel-command = ""
[tool.cibuildwheel.container-engine]
# pass command line options to 'docker run'
name = "docker"
......@@ -66,8 +68,8 @@ AIDGE_DEPENDENCIES = "aidge_core aidge_backend_cpu" # format => "dep_1 dep_2 ...
AIDGE_INSTALL="/AIDGE_INSTALL_CIBUILDWHEEL"
ARCH="x86_64"
CUDNN_VERSION="9"
CUDA_MAJOR_VERSION="11"
CUDA_MINOR_VERSION="8"
CUDA_MAJOR_VERSION="12"
CUDA_MINOR_VERSION="4"
DOCKER_HOST="unix:///var/run/docker.sock"
SEARCH_PATH="/home/ubuntu/aidge/aidge" # debug path
# these two following variables are set within CMakeLists.txt when calling cibuildwheel from CI
......@@ -103,7 +105,8 @@ before-test= [
"export PATH=/usr/local/cuda/bin:$PATH",
"nvcc --version",
"echo '\n\n\n\nInstalling required dependencies for aidge_backend_cuda.\n\n'",
"bash .gitlab/ci/cibuildwheel_build_deps_before_build_wheel.sh /host/$SEARCH_PATH"
"pip install aidge-core",
"pip install aidge-backend-cpu",
]
[tool.cibuildwheel.windows]
before-build = [
......
......@@ -16,7 +16,14 @@ add_executable(tests${module_name} ${src_files})
target_link_libraries(tests${module_name} PUBLIC ${module_name})
target_link_libraries(tests${module_name} PRIVATE Catch2::Catch2WithMain)
target_link_libraries(tests${module_name}
PRIVATE
Catch2::Catch2WithMain
CUDA::cudart
cudnn
CUDA::cublas
)
list(APPEND CMAKE_MODULE_PATH ${catch2_SOURCE_DIR}/extras)
include(CTest)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment