Skip to content

Commit 7498392

Browse files
committed
Merge branch 'main' into load_nvidia_dynamic_lib_conda_specific
2 parents 5fd4801 + d2978aa commit 7498392

9 files changed

Lines changed: 94 additions & 52 deletions

File tree

.github/workflows/build-wheel.yml

Lines changed: 0 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -111,15 +111,6 @@ jobs:
111111

112112
- name: Build cuda.core wheel
113113
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
114-
env:
115-
CIBW_BUILD: ${{ env.CIBW_BUILD }}
116-
CIBW_ARCHS_LINUX: "native"
117-
CIBW_BUILD_VERBOSITY: 1
118-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
119-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
120-
CIBW_ENVIRONMENT: >
121-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
122-
CIBW_ENABLE: "cpython-freethreading"
123114
with:
124115
package-dir: ./cuda_core/
125116
output-dir: ${{ env.CUDA_CORE_ARTIFACTS_DIR }}
@@ -154,20 +145,6 @@ jobs:
154145

155146
- name: Build cuda.bindings wheel
156147
uses: pypa/cibuildwheel@c923d83ad9c1bc00211c5041d0c3f73294ff88f6 # v3.1.4
157-
env:
158-
CIBW_BUILD: ${{ env.CIBW_BUILD }}
159-
CIBW_ARCHS_LINUX: "native"
160-
CIBW_BUILD_VERBOSITY: 1
161-
# CIBW mounts the host filesystem under /host
162-
CIBW_ENVIRONMENT_LINUX: >
163-
CUDA_PATH=/host/${{ env.CUDA_PATH }}
164-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
165-
CIBW_ENVIRONMENT_WINDOWS: >
166-
CUDA_HOME="$(cygpath -w ${{ env.CUDA_PATH }})"
167-
CUDA_PYTHON_PARALLEL_LEVEL=${{ env.CUDA_PYTHON_PARALLEL_LEVEL }}
168-
CIBW_BEFORE_BUILD_WINDOWS: "pip install delvewheel"
169-
CIBW_REPAIR_WHEEL_COMMAND_WINDOWS: "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
170-
CIBW_ENABLE: "cpython-freethreading"
171148
with:
172149
package-dir: ./cuda_bindings/
173150
output-dir: ${{ env.CUDA_BINDINGS_ARTIFACTS_DIR }}

ci/tools/env-vars

Lines changed: 23 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,11 @@ if [[ ${#} -ne 1 ]]; then
1616
fi
1717

1818
PYTHON_VERSION_FORMATTED=$(echo "${PY_VER}" | tr -d '.')
19+
1920
if [[ "${HOST_PLATFORM}" == linux* ]]; then
20-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-manylinux*"
2121
REPO_DIR=$(pwd)
2222
TOOLS_PATH="${REPO_DIR}/ci/tools"
2323
elif [[ "${HOST_PLATFORM}" == win* ]]; then
24-
CIBW_BUILD="cp${PYTHON_VERSION_FORMATTED}-win_amd64"
2524
PWD=$(pwd)
2625
REPO_DIR=$(cygpath -w ${PWD})
2726
TOOLS_PATH=$(cygpath -w ${PWD}/ci/tools)
@@ -30,14 +29,18 @@ fi
3029
echo "${TOOLS_PATH}" >> $GITHUB_PATH
3130
echo "CUDA_PYTHON_PARALLEL_LEVEL=$(nproc)" >> $GITHUB_ENV
3231
CUDA_CORE_ARTIFACT_BASENAME="cuda-core-python${PYTHON_VERSION_FORMATTED}-${HOST_PLATFORM}"
33-
echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}" >> $GITHUB_ENV
34-
echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV
35-
echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")" >> $GITHUB_ENV
36-
echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")" >> $GITHUB_ENV
37-
echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}" >> $GITHUB_ENV
32+
{
33+
echo "CUDA_CORE_ARTIFACT_BASENAME=${CUDA_CORE_ARTIFACT_BASENAME}"
34+
echo "CUDA_CORE_ARTIFACT_NAME=${CUDA_CORE_ARTIFACT_BASENAME}-${SHA}"
35+
echo "CUDA_CORE_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_core/dist")"
36+
echo "CUDA_CORE_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_core/tests/cython")"
37+
echo "PYTHON_VERSION_FORMATTED=${PYTHON_VERSION_FORMATTED}"
38+
} >> $GITHUB_ENV
3839

3940
if [[ "${1}" == "build" ]]; then
40-
echo "CIBW_BUILD=${CIBW_BUILD}" >> $GITHUB_ENV
41+
# platform is handled by the default value of platform (`auto`) in cibuildwheel
42+
# here we only need to specify the python version we want
43+
echo "CIBW_BUILD=cp${PYTHON_VERSION_FORMATTED}-*" >> $GITHUB_ENV
4144
CUDA_BINDINGS_ARTIFACT_BASENAME="cuda-bindings-python${PYTHON_VERSION_FORMATTED}-cuda${CUDA_VER}-${HOST_PLATFORM}"
4245
elif [[ "${1}" == "test" ]]; then
4346
BUILD_CUDA_MAJOR="$(cut -d '.' -f 1 <<< ${BUILD_CUDA_VER})"
@@ -66,13 +69,17 @@ elif [[ "${1}" == "test" ]]; then
6669
SETUP_SANITIZER=0
6770
echo "SANITIZER_CMD=" >> $GITHUB_ENV
6871
fi
69-
echo "SETUP_SANITIZER=${SETUP_SANITIZER}" >> $GITHUB_ENV
70-
echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}" >> $GITHUB_ENV
71-
echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}" >> $GITHUB_ENV
72-
echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}" >> $GITHUB_ENV
72+
{
73+
echo "SETUP_SANITIZER=${SETUP_SANITIZER}"
74+
echo "SKIP_CUDA_BINDINGS_TEST=${SKIP_CUDA_BINDINGS_TEST}"
75+
echo "SKIP_CYTHON_TEST=${SKIP_CYTHON_TEST}"
76+
echo "TEST_CUDA_MAJOR=${TEST_CUDA_MAJOR}"
77+
} >> $GITHUB_ENV
7378
fi
7479

75-
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}" >> $GITHUB_ENV
76-
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}" >> $GITHUB_ENV
77-
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")" >> $GITHUB_ENV
78-
echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")" >> $GITHUB_ENV
80+
{
81+
echo "CUDA_BINDINGS_ARTIFACT_BASENAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}"
82+
echo "CUDA_BINDINGS_ARTIFACT_NAME=${CUDA_BINDINGS_ARTIFACT_BASENAME}-${SHA}"
83+
echo "CUDA_BINDINGS_ARTIFACTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/dist")"
84+
echo "CUDA_BINDINGS_CYTHON_TESTS_DIR=$(realpath "${REPO_DIR}/cuda_bindings/tests/cython")"
85+
} >> $GITHUB_ENV

cuda_bindings/cuda/bindings/_internal/cufile_linux.pyx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -108,10 +108,8 @@ cdef void* load_library() except* with gil:
108108
return <void*>handle
109109

110110

111-
cdef int _check_or_init_cufile() except -1 nogil:
111+
cdef int __check_or_init_cufile() except -1 nogil:
112112
global __py_cufile_init
113-
if __py_cufile_init:
114-
return 0
115113

116114
cdef void* handle = NULL
117115

@@ -422,6 +420,13 @@ cdef int _check_or_init_cufile() except -1 nogil:
422420
return 0
423421

424422

423+
cdef inline int _check_or_init_cufile() except -1 nogil:
424+
if __py_cufile_init:
425+
return 0
426+
427+
return __check_or_init_cufile()
428+
429+
425430
cdef dict func_ptrs = None
426431

427432

cuda_bindings/cuda/bindings/_internal/nvjitlink_linux.pyx

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -77,10 +77,8 @@ cdef void* load_library() except* with gil:
7777
return <void*>handle
7878

7979

80-
cdef int _check_or_init_nvjitlink() except -1 nogil:
80+
cdef int __check_or_init_nvjitlink() except -1 nogil:
8181
global __py_nvjitlink_init
82-
if __py_nvjitlink_init:
83-
return 0
8482

8583
cdef void* handle = NULL
8684

@@ -188,6 +186,12 @@ cdef int _check_or_init_nvjitlink() except -1 nogil:
188186
return 0
189187

190188

189+
cdef inline int _check_or_init_nvjitlink() except -1 nogil:
190+
if __py_nvjitlink_init:
191+
return 0
192+
193+
return __check_or_init_nvjitlink()
194+
191195
cdef dict func_ptrs = None
192196

193197

cuda_bindings/cuda/bindings/_internal/nvjitlink_windows.pyx

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ cdef void* __nvJitLinkGetInfoLog = NULL
9393
cdef void* __nvJitLinkVersion = NULL
9494

9595

96-
cdef int _check_or_init_nvjitlink() except -1 nogil:
96+
cdef int __check_or_init_nvjitlink() except -1 nogil:
9797
global __py_nvjitlink_init
9898
if __py_nvjitlink_init:
9999
return 0
@@ -149,6 +149,13 @@ cdef int _check_or_init_nvjitlink() except -1 nogil:
149149
return 0
150150

151151

152+
cdef inline int _check_or_init_nvjitlink() except -1 nogil:
153+
if __py_nvjitlink_init:
154+
return 0
155+
156+
return __check_or_init_nvjitlink()
157+
158+
152159
cdef dict func_ptrs = None
153160

154161

cuda_bindings/cuda/bindings/_internal/nvvm_linux.pyx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -76,10 +76,8 @@ cdef void* load_library() except* with gil:
7676
return <void*>handle
7777

7878

79-
cdef int _check_or_init_nvvm() except -1 nogil:
79+
cdef int __check_or_init_nvvm() except -1 nogil:
8080
global __py_nvvm_init
81-
if __py_nvvm_init:
82-
return 0
8381

8482
cdef void* handle = NULL
8583

@@ -180,6 +178,13 @@ cdef int _check_or_init_nvvm() except -1 nogil:
180178
return 0
181179

182180

181+
cdef inline int _check_or_init_nvvm() except -1 nogil:
182+
if __py_nvvm_init:
183+
return 0
184+
185+
return __check_or_init_nvvm()
186+
187+
183188
cdef dict func_ptrs = None
184189

185190

cuda_bindings/cuda/bindings/_internal/nvvm_windows.pyx

Lines changed: 8 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,10 +92,8 @@ cdef void* __nvvmGetProgramLogSize = NULL
9292
cdef void* __nvvmGetProgramLog = NULL
9393

9494

95-
cdef int _check_or_init_nvvm() except -1 nogil:
95+
cdef int __check_or_init_nvvm() except -1 nogil:
9696
global __py_nvvm_init
97-
if __py_nvvm_init:
98-
return 0
9997

10098
with gil, __symbol_lock:
10199
# Load library
@@ -145,6 +143,13 @@ cdef int _check_or_init_nvvm() except -1 nogil:
145143
return 0
146144

147145

146+
cdef inline int _check_or_init_nvvm() except -1 nogil:
147+
if __py_nvvm_init:
148+
return 0
149+
150+
return __check_or_init_nvvm()
151+
152+
148153
cdef dict func_ptrs = None
149154

150155

cuda_bindings/pyproject.toml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -110,3 +110,21 @@ exclude = ["cuda/bindings/_version.py"]
110110
"UP022",
111111
"E402", # module level import not at top of file
112112
"F841"] # F841 complains about unused variables, but some assignments have side-effects that could be useful for tests (func calls for example)
113+
114+
[tool.cibuildwheel]
115+
skip = "*-musllinux_*"
116+
enable = "cpython-freethreading"
117+
build-verbosity = 1
118+
environment-pass = ["CUDA_PATH", "CUDA_PYTHON_PARALLEL_LEVEL"]
119+
120+
[tool.cibuildwheel.linux]
121+
archs = "native"
122+
# CIBW mounts the host filesystem under /host
123+
environment-pass = ["CUDA_PATH"]
124+
environment = { CUDA_HOME = "/host/$CUDA_PATH" }
125+
126+
[tool.cibuildwheel.windows]
127+
archs = "AMD64"
128+
before-build = "pip install delvewheel"
129+
repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"
130+
environment = { CUDA_HOME = "$(cygpath -w $CUDA_PATH)" }

cuda_core/pyproject.toml

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -114,3 +114,17 @@ exclude = ["cuda/core/_version.py"]
114114
[tool.ruff.lint.per-file-ignores]
115115
"__init__.py" = ["F401"]
116116
"setup.py" = ["F401"]
117+
118+
[tool.cibuildwheel]
119+
skip = "*-musllinux_*"
120+
enable = "cpython-freethreading"
121+
build-verbosity = 1
122+
environment-pass = ["CUDA_PYTHON_PARALLEL_LEVEL"]
123+
124+
[tool.cibuildwheel.linux]
125+
archs = "native"
126+
127+
[tool.cibuildwheel.windows]
128+
archs = "AMD64"
129+
before-build = "pip install delvewheel"
130+
repair-wheel-command = "delvewheel repair --namespace-pkg cuda -w {dest_dir} {wheel}"

0 commit comments

Comments
 (0)