Title: EPIC: Path finder for CUDA components · Issue #451 · NVIDIA/cuda-python · GitHub
Open Graph Title: EPIC: Path finder for CUDA components · Issue #451 · NVIDIA/cuda-python
X Title: EPIC: Path finder for CUDA components · Issue #451 · NVIDIA/cuda-python
Description: In 2025, there are many ways of installing CUDA to a Python environment. One key challenge here is that all header/library search logics implemented in the existing CUDA-enabled libraries (ex: #447) need to be modernized, taking into acc...
Open Graph Description: In 2025, there are many ways of installing CUDA to a Python environment. One key challenge here is that all header/library search logics implemented in the existing CUDA-enabled libraries (ex: #447...
X Description: In 2025, there are many ways of installing CUDA to a Python environment. One key challenge here is that all header/library search logics implemented in the existing CUDA-enabled libraries (ex: #447...
Opengraph URL: https://github.com/NVIDIA/cuda-python/issues/451
X: @github
Domain: github.com
{"@context":"https://schema.org","@type":"DiscussionForumPosting","headline":"EPIC: Path finder for CUDA components","articleBody":"In 2025, there are many ways of installing CUDA to a Python environment. One key challenge here is that all header/library search logics implemented in the existing CUDA-enabled libraries (ex: #447) need to be modernized, taking into account that CUDA these days can be installed on a per-component basis (ex: I just want NVRTC and CCCL and nothing else). The consequence is that any prior arts that rely on checking if a certain piece exists (ex: nvcc, cuda.h, nvvm, ...) and generalizing it to assume the whole Toolkit exists based on known relative paths are no longer valid. Even Linux system package managers may not always behave as expected. (Though setting `CUDA_HOME`/`CUDA_PATH` as a fallback might still be OK.)\n\nThe CUDA Python team is well-positioned to take on the pain points so that all other Python libraries do not need to worry about packaging sources, layouts, and so on. It is our intention to support modern CUDA packages and deployment options in a JIT-compilation friendly way. What this means is that we should be able to return, on a **per-component** basis,\n- where are the component **headers**?\n- where are the component **shared libraries**?\n- ...\n\nSomething like (API design TBD)\n```python\nfrom cuda.core.utils import CUDALocater\n\nlocater = CUDALocater()\nnvcc_incl = locater.nvcc.include # returns a list of valid abs paths to the include directories, or None \ncccl_incl = locater.cccl.include # returns a list of valid abs paths to the include directories, or None\nnvrtc_lib = locater.nvrtc.lib # returns a list of valid abs paths to the shared libraries, or None \n...\n```\n\nThis needs to cover\n- CUDA installed via various package managers (apt, yum, conda, pip, ...)\n- Headers and shared libraries as bare minimum\n - From JIT compilation perspective, headers are considered a kind of shared libraries\n- Linux and Windows\n- Default system search paths, if possible\n - This includes the \"legacy\" CTK locations, such as `/usr/local/cuda` on Linux, as a fallback\n- All CTK components relevant to Python users, such as:\n - nvcc/nvvm\n - this includes libdevice.bc\n - nvrtc\n - nvjitlink\n - cublas\n - cusolver\n - curand\n - cufft\n - cusparse \n - ...\n\nOnce completed, this would also help us unify the treatment of loading shared libraries in `cuda.bindings`, which is currently divergent between Linux/Windows:\n- Linux: hack RPATH and rely on dynamic loader (ld.so)\n- Windows: search possible DLL locations (site-packages, ...)","author":{"url":"https://github.com/leofang","@type":"Person","name":"leofang"},"datePublished":"2025-02-14T05:06:14Z","url":"https://github.com/NVIDIA/cuda-python/issues/451"}
| react-profiling | 0 |
| react-import-map | react,react-dom,react-dom/client,react-dom/profiling,react-is,react-reconciler,react/compiler-runtime,react/jsx-dev-runtime,react/jsx-runtime,scheduler@d5750093facf |
| route-pattern | /_view_fragments/issues/show/:user_id/:repository/:id/issue_layout(.:format) |
| route-controller | voltron_issues_fragments |
| route-action | issue_layout |
| fetch-nonce | v2:9ea3688a-d4bb-2e07-9945-91b66c5cb373 |
| current-catalog-service-hash | 81bb79d38c15960b92d99bca9288a9108c7a47b18f2423d0f6438c5b7bcd2114 |
| request-id | DAD6:3357FE:277174:375670:6AF840D1 |
| html-safe-nonce | 757fdaf52bbb355169c4f06ef423b63588293da0773262d083cac5907a5cc09c |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJEQUQ2OjMzNTdGRToyNzcxNzQ6Mzc1NjcwOjZBRjg0MEQxIiwidmlzaXRvcl9pZCI6Ijc0NDc0NjE3NTI0ODE1MzAwNjUiLCJyZWdpb25fZWRnZSI6ImlhZCIsInJlZ2lvbl9yZW5kZXIiOiJpYWQifQ== |
| visitor-hmac | 98ec01a564c4e5efcdeaa26a38c7d799587a49a9601879087e54c31071930557 |
| hovercard-subject-tag | issue:2852692108 |
| github-keyboard-shortcuts | repository,issues,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/_view_fragments/issues/show/NVIDIA/cuda-python/451/issue_layout |
| twitter:image | https://opengraph.githubassets.com/53b0d3e31f37ced20a9f18fc6614639f8b81740cffd9232ab1e6bf6dfe2b3807/NVIDIA/cuda-python/issues/451 |
| twitter:card | summary_large_image |
| og:image | https://opengraph.githubassets.com/53b0d3e31f37ced20a9f18fc6614639f8b81740cffd9232ab1e6bf6dfe2b3807/NVIDIA/cuda-python/issues/451 |
| og:image:alt | In 2025, there are many ways of installing CUDA to a Python environment. One key challenge here is that all header/library search logics implemented in the existing CUDA-enabled libraries (ex: #447... |
| og:image:width | 1200 |
| og:image:height | 600 |
| og:site_name | GitHub |
| og:type | object |
| og:author:username | leofang |
| hostname | github.com |
| expected-hostname | github.com |
| None | 5713ecd83001b2f55c3509fb7a292bf7d66d0f167c7ae87a9f7eaec5a52bf8db |
| turbo-cache-control | no-preview |
| go-import | github.com/NVIDIA/cuda-python git https://github.com/NVIDIA/cuda-python.git |
| octolytics-dimension-user_id | 1728152 |
| octolytics-dimension-user_login | NVIDIA |
| octolytics-dimension-repository_id | 381173759 |
| octolytics-dimension-repository_nwo | NVIDIA/cuda-python |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 381173759 |
| octolytics-dimension-repository_network_root_nwo | NVIDIA/cuda-python |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | false |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 653be32ff5c755082a4db662491bfbbcfc9112c1 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
| react-app-name | issues |
Links:
Viewport: width=device-width