3 Commits

Author SHA1 Message Date
Adam Basfop Cavendish
032361a177 chore(example): add nvvm library path to LD_LIBRARY_PATH and add back the add example in CI (#190)
When linking `libnvvm.so.4` into `librustc_codegen_nvvm.so` shared
library via the `cust_raw` package, we specified the following
parameters in the `build.rs`:

- cargo::rustc-link-search=native=xxx
- cargo::rustc-link-lib=dylib=nvvm

According to the [Cargo documentation](https://doc.rust-lang.org/cargo/reference/build-scripts.html#rustc-link-search),
the path we added to the `rustc-link-search` parameter is not further
populated to the `LD_LIBRARY_PATH` for search by the transitive
dependencies.

> These paths are also added to the dynamic library search path
> environment variable if they are within the OUT_DIR.

The behavior is intended to be limited to the OUT_DIR so the
`libnvvm.so.4`, which lives as a part of the CUDA SDK, is excluded.
Therefore, we must add it to the LD_LIBRARY_PATH manually in our
container build stage.
2025-04-05 13:26:45 -07:00
Adam Basfop Cavendish
9856aad6d3 feat(ci): Split Linux CI workflow and add container images pipeline (#188)
Added a new workflow, container_images.yml, to automate building and
pushing CI container images to GitHub Container Registry, ensuring
consistent environments for CI runs across Linux distributions.

Added a dedicated CI workflow for Linux to streamline testing across
multiple CUDA and OS configurations. It reuses the images built from
container_images.yml workflow to avoid installing CUDA toolkits every
time to save time.

Key changes:
- Matrix configurations for Ubuntu 22/24, RockyLinux 9 with CUDA 12.8.1
- Dockerfiles updated with required dependencies (clang, CUDA
  toolchains, etc.) to support bindgen and build examples.
- Removed redundant CI steps from `rust.yml` now handled in
  `ci_linux.yml`
2025-04-03 17:30:16 -07:00
Adam Basfop Cavendish
7eb199cb9a chore(docker): add support for multiple Linux distributions and CUDA versions
The Docker setup has been refactored to support Ubuntu 20.04, 24.04, and
Rocky Linux 9 with CUDA 11/12. The original Dockerfile (Ubuntu 18.04 +
CUDA 11.4) has been replaced with a matrix of distribution-specific
Dockerfiles. Dependencies like LLVM 7 and Rust are now configured to
work across these environments.
2025-03-24 17:41:51 -04:00