-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.DPCPP
More file actions
143 lines (118 loc) · 5.09 KB
/
Dockerfile.DPCPP
File metadata and controls
143 lines (118 loc) · 5.09 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
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
# Part of the examples from the Parallel and High Performance Computing
# Robey and Zamora, Manning Publications
# https://github.com/EssentialsofParallelComputing/Chapter2
#
# The built image can be found at:
#
# https://hub.docker.com/r/essentialsofparallelcomputing/chapter2
#
# Author:
# Bob Robey <brobey@earthlink.net>
FROM ubuntu:20.04 AS builder
ARG DOCKER_LANG=en_US
ARG DOCKER_TIMEZONE=America/Denver
WORKDIR /tmp
RUN apt-get -qq update && \
DEBIAN_FRONTEND=noninteractive \
apt-get -qq install -y locales tzdata && \
apt-get clean && rm -rf /var/lib/apt/lists/*
ENV LANG=$DOCKER_LANG.UTF-8 \
LANGUAGE=$DOCKER_LANG:UTF-8
RUN ln -fs /usr/share/zoneinfo/$DOCKER_TIMEZONE /etc/localtime && \
locale-gen $LANG && update-locale LANG=$LANG && \
dpkg-reconfigure -f noninteractive locales tzdata
ENV LC_ALL=$DOCKER_LANG.UTF-8
RUN apt-get -qq update && \
DEBIAN_FRONTEND=noninteractive \
apt-get -qq install -y cmake git vim gcc g++ gfortran software-properties-common \
wget gnupg xterm libnuma1 kmod && \
apt-get clean && \
rm -rf /var/lib/apt/lists/*
# Installing latest GCC compiler
RUN apt-get -qq update && \
apt-get -qq install -y gcc-8 g++-8 gfortran-8 \
gcc-10 g++-10 gfortran-10 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# We can use the update-alternatives to switch between compiler versions
RUN update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-8 80 \
--slave /usr/bin/g++ g++ /usr/bin/g++-8 \
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-8 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-8 && \
update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-9 90 \
--slave /usr/bin/g++ g++ /usr/bin/g++-9 \
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-9 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-9 && \
update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-10 70 \
--slave /usr/bin/g++ g++ /usr/bin/g++-10 \
--slave /usr/bin/gfortran gfortran /usr/bin/gfortran-10 \
--slave /usr/bin/gcov gcov /usr/bin/gcov-10 && \
chmod u+s /usr/bin/update-alternatives
## Intel graphics software for computation
RUN wget -q https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
RUN apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
RUN rm -f GPG-PUB-KEY-INTEL-SW-PRODUCTS-2023.PUB
RUN echo "deb https://apt.repos.intel.com/oneapi all main" >> /etc/apt/sources.list.d/oneAPI.list
RUN echo "deb [trusted=yes arch=amd64] https://repositories.intel.com/graphics/ubuntu bionic main" >> /etc/apt/sources.list.d/intel-graphics.list
RUN apt-get -qq update && \
apt-get -qq install -y \
intel-basekit-getting-started \
intel-oneapi-advisor \
intel-oneapi-ccl \
intel-oneapi-common-licensing \
intel-oneapi-common-vars \
intel-oneapi-dev-utilities \
intel-oneapi-dpcpp-compiler \
intel-oneapi-dpcpp-ct \
intel-oneapi-dpcpp-debugger \
intel-oneapi-ipp \
intel-oneapi-ipp-devel \
intel-oneapi-libdpstd-devel \
intel-oneapi-mkl \
intel-oneapi-mkl-devel \
intel-oneapi-openmp \
intel-oneapi-tbb \
intel-oneapi-tbb-devel \
intel-oneapi-vtune \
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic \
intel-oneapi-icc-eclipse-cfg \
intel-hpckit-getting-started \
intel-oneapi-ifort \
intel-oneapi-inspector \
intel-oneapi-itac \
intel-opencl && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN apt-get update && apt-get install -y --no-install-recommends \
ocl-icd-libopencl1 \
clinfo \
ocl-icd-opencl-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*
#RUN mkdir -p /etc/OpenCL/vendors && \
# echo "libnvidia-opencl.so.1" > /etc/OpenCL/vendors/nvidia.icd
# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES all
ENV NVIDIA_DRIVER_CAPABILITIES compute,utility
# also could have graphics,video,display
# compute -- CUDA and OpenCL
# graphics -- OpenGL and Vulcan
# utility -- nvidia-smi (default)
# video -- video codec sdk
# display -- X11 display
# all -- enable all
SHELL ["/bin/bash", "-c"]
RUN groupadd chapter12 && useradd -m -s /bin/bash -g chapter12 chapter12
RUN usermod -a -G video chapter12
WORKDIR /home/chapter12
RUN chown -R chapter12:chapter12 /home/chapter12
USER chapter12
RUN source /opt/intel/oneapi/setvars.sh
#ENV PATH=${PATH}:/opt/intel/oneapi/compiler/latest/linux/bin
#ENV LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin:/opt/intel/oneapi/compiler/latest/linux/lib
RUN git clone --recursive https://github.com/essentialsofparallelcomputing/Chapter12.git
WORKDIR /home/chapter12/Chapter12
RUN clinfo
RUN cd DPCPP/StreamTriad && make && ./StreamTriad
#RUN make
ENTRYPOINT ["bash"]