-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathnvpl.Dockerfile
More file actions
42 lines (37 loc) · 2.02 KB
/
nvpl.Dockerfile
File metadata and controls
42 lines (37 loc) · 2.02 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
FROM rocker/r-ver:4.5.2
ARG QUARTO_VERSION=1.8.26
ARG CRAN_DATE=2025-12-22
RUN <<EOF
ARCH=$(dpkg --print-architecture)
apt-get update; apt-get install -y wget time gnupg
cd tmp
# Install Quarto
wget -nv https://github.com/quarto-dev/quarto-cli/releases/download/v${QUARTO_VERSION}/quarto-${QUARTO_VERSION}-linux-${ARCH}.deb
dpkg -i quarto-${QUARTO_VERSION}-linux-${ARCH}.deb
# Install NVPL
wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2404/sbsa/cuda-keyring_1.1-1_all.deb
dpkg -i cuda-keyring_1.1-1_all.deb
apt-get update; apt-get remove -y libopenblas-dev; apt-get -y install nvpl-blas nvpl-lapack
update-alternatives --install \
/usr/lib/aarch64-linux-gnu/libblas.so.3 \
libblas.so.3-aarch64-linux-gnu \
/usr/lib/aarch64-linux-gnu/libnvpl_blas_lp64_seq.so.0 150
update-alternatives --install \
/usr/lib/aarch64-linux-gnu/liblapack.so.3 \
liblapack.so.3-aarch64-linux-gnu \
/usr/lib/aarch64-linux-gnu/libnvpl_lapack_lp64_seq.so.0 150
# Then set
update-alternatives --set libblas.so.3-aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/libnvpl_blas_lp64_seq.so.0
update-alternatives --set liblapack.so.3-aarch64-linux-gnu /usr/lib/aarch64-linux-gnu/libnvpl_lapack_lp64_seq.so.0
echo 'options(repos = c(CRAN = sprintf("https://packagemanager.posit.co/cran/'"${CRAN_DATE}"'/bin/linux/noble-%s/%s", R.version["arch"], substr(getRversion(), 1, 3))))' > ~/.Rprofile
R -e "install.packages(c('SEQTaRget', 'tidyverse', 'quarto', 'tictoc'))"
EOF
RUN <<EOF
# Recompile R packages
rm ~/.Rprofile
echo 'options(repos = c(CRAN = sprintf("https://packagemanager.posit.co/cran/'"${CRAN_DATE}"'")))' > ~/.Rprofile
# R core packages
R -e "getOption('repos'); install.packages(unname(installed.packages(lib.loc = .libPaths()[2])[, 'Package']), type = 'source')"
# Additional packages
R -e "getOption('repos'); install.packages(unname(installed.packages(lib.loc = .libPaths()[1])[, 'Package']), type = 'source')"
EOF