1+ FROM nvcr.io/nvidia/cuda:12.8.1-cudnn-devel-rockylinux9
2+
3+ RUN dnf -y update && \
4+ dnf -y install \
5+ clang \
6+ openssl-devel \
7+ pkgconfig \
8+ redhat-rpm-config \
9+ which \
10+ xz \
11+ zlib-devel && \
12+ dnf clean all
13+
14+ # Needed to build `path_tracer`, `optix/ex03_window` example
15+ RUN dnf -y install \
16+ cmake \
17+ fontconfig-devel \
18+ libX11-devel \
19+ libXcursor-devel \
20+ libXi-devel \
21+ libXrandr-devel && \
22+ dnf clean all
23+
24+ # Get LLVM 7
25+ WORKDIR /data/llvm7
26+
27+ # Install dependencies for building LLVM
28+ RUN dnf -y install epel-release && \
29+ dnf -y install \
30+ libffi-devel \
31+ ncurses-devel \
32+ libxml2-devel \
33+ libedit-devel \
34+ python3 \
35+ make && \
36+ dnf clean all
37+
38+ # Download and build LLVM 7.1.0 for all architectures
39+ RUN curl -sSf -L -O https://github.com/llvm/llvm-project/releases/download/llvmorg-7.1.0/llvm-7.1.0.src.tar.xz && \
40+ tar -xf llvm-7.1.0.src.tar.xz && \
41+ cd llvm-7.1.0.src && \
42+ mkdir build && cd build && \
43+ ARCH=$(uname -m) && \
44+ if [ "$ARCH" = "x86_64" ]; then \
45+ TARGETS="X86;NVPTX" ; \
46+ else \
47+ TARGETS="AArch64;NVPTX" ; \
48+ fi && \
49+ cmake \
50+ -DCMAKE_BUILD_TYPE=Release \
51+ -DLLVM_TARGETS_TO_BUILD="$TARGETS" \
52+ -DLLVM_BUILD_LLVM_DYLIB=ON \
53+ -DLLVM_LINK_LLVM_DYLIB=ON \
54+ -DLLVM_ENABLE_ASSERTIONS=OFF \
55+ -DLLVM_ENABLE_BINDINGS=OFF \
56+ -DLLVM_INCLUDE_EXAMPLES=OFF \
57+ -DLLVM_INCLUDE_TESTS=OFF \
58+ -DLLVM_INCLUDE_BENCHMARKS=OFF \
59+ -DLLVM_ENABLE_ZLIB=ON \
60+ -DLLVM_ENABLE_TERMINFO=ON \
61+ -DCMAKE_INSTALL_PREFIX=/usr \
62+ .. && \
63+ make -j$(nproc) && \
64+ make install && \
65+ cd ../.. && \
66+ rm -rf llvm-7.1.0.src* && \
67+ ln -s /usr/bin/llvm-config /usr/bin/llvm-config-7 && \
68+ dnf clean all
69+
70+ # Get Rust
71+ RUN curl -sSf -L https://sh.rustup.rs | bash -s -- -y
72+ ENV PATH="/root/.cargo/bin:${PATH}"
73+
74+ # Setup the workspace
75+ WORKDIR /data/rust-cuda
76+ RUN --mount=type=bind,source=rust-toolchain.toml,target=/data/rust-cuda/rust-toolchain.toml \
77+ rustup show
78+
79+ # Add nvvm to LD_LIBRARY_PATH.
80+ ENV LD_LIBRARY_PATH="/usr/local/cuda/nvvm/lib64:${LD_LIBRARY_PATH}"
81+ ENV LLVM_LINK_STATIC=1
82+ ENV RUST_LOG=info
83+
84+ RUN dnf install -y https://repo.radeon.com/amdgpu-install/6.4.3/rhel/9.6/amdgpu-install-6.4.60403-1.el9.noarch.rpm && \
85+ dnf install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm && \
86+ dnf install -y dnf-plugin-config-manager && \
87+ crb enable && \
88+ dnf install -y python3-setuptools python3-wheel ninja-build perl-core perl-devel openssl-devel && \
89+ dnf clean all
90+
91+ RUN \
92+ for ver in 6.4.3 6.4; do \
93+ printf '[ROCm-%s]\n name=ROCm%s\n baseurl=https://repo.radeon.com/rocm/el9/%s/main\n enabled=1\n priority=50\n gpgcheck=1\n gpgkey=https://repo.radeon.com/rocm/rocm.gpg.key\n ' "$ver" "$ver" "$ver" >> /etc/yum.repos.d/rocm.repo; \
94+ done && \
95+ dnf install rocm6.4.3 -y && \
96+ dnf clean all
97+
98+ # Add rocm libraries to LD_LIBRARY_PATH.
99+ ENV LD_LIBRARY_PATH="/opt/rocm/lib:${LD_LIBRARY_PATH}"
100+ # Add rocm binaries to PATH.
101+ ENV PATH="/opt/rocm/bin:${PATH}"
0 commit comments