-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathDockerfile.Ubuntu20.04
More file actions
149 lines (119 loc) · 6.48 KB
/
Dockerfile.Ubuntu20.04
File metadata and controls
149 lines (119 loc) · 6.48 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
144
145
146
147
148
149
# Part of the examples from the Parallel and High Performance Computing
# Robey and Zamora, Manning Publications
# https://github.com/EssentialsofParallelComputing/Chapter8
#
# The built image can be found at:
#
# https://hub.docker.com/r/essentialsofparallelcomputing/chapter8
#
# Author:
# Bob Robey <brobey@earthlink.net>
FROM ubuntu:20.04
LABEL maintainer Bob Robey <brobey@earthlink.net>
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 wget gnupg \
software-properties-common likwid libzip-dev libhtml-parser-perl \
mpich libmpich-dev \
openmpi-bin openmpi-doc libopenmpi-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Installing latest GCC compiler (version 10)
RUN apt-get -qq update && \
apt-get -qq install -y gcc-10 g++-10 gfortran-10 && \
apt-get clean && rm -rf /var/lib/apt/lists/*
RUN update-alternatives \
--install /usr/bin/gcc gcc /usr/bin/gcc-9 80 \
--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 90 \
--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
RUN apt-get -qq update && \
DEBIAN_FRONTEND=noninteractive \
apt-get -qq install -y texlive-font-utils texlive-latex-extra libpod-latex-perl gnuplot evince && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Installing dmalloc with a package manager
RUN apt-get -qq update && \
apt-get -qq install -y libdmalloc-dev && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Installing dmalloc manually
RUN wget -q https://dmalloc.com/releases/dmalloc-5.5.2.tgz && \
tar -xzf dmalloc-5.5.2.tgz && \
cd dmalloc-5.5.2/ && \
./configure && make && make install
# Intel tools
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 update && \
apt-get -qq install -y intel-oneapi-advisor \
intel-oneapi-vtune \
intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic \
intel-oneapi-ifort \
intel-oneapi-openmp \
intel-oneapi-inspector && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# Installing AMD uProf -- requires a manual process
# Download from https://developer.amd.com/amd-uprof/. Scroll down to bottom of page and select .deb file. Accept EULA and download will start.
#RUN dpkg --install amduprof_x.y-z_amd64.deb
# Nvidia GPU software for computation
# See https://docs.nvidia.com/hpc-sdk/index.html for Nvidia install instructions
RUN wget --no-verbose https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-20-9_20.9_amd64.deb && \
wget --no-verbose https://developer.download.nvidia.com/hpc-sdk/20.9/nvhpc-2020_20.9_amd64.deb && \
DEBIAN_FRONTEND=noninteractive \
apt-get install -y ./nvhpc-20-9_20.9_amd64.deb ./nvhpc-2020_20.9_amd64.deb && \
apt-get clean && rm -rf /var/lib/apt/lists/*
# CodeXL
RUN wget -q https://github.com/GPUOpen-Archive/CodeXL/releases/download/v2.6/codexl-2.6-302.x86_64.rpm
WORKDIR /project
RUN wget -q https://github.com/DynamoRIO/drmemory/releases/download/release_2.3.0/DrMemory-Linux-2.3.0-1.tar.gz
RUN tar -xzf DrMemory-Linux-2.3.0-1.tar.gz && rm -rf DrMemory-Linux-2.3.0-1.tar.gz
WORKDIR /tmp
RUN wget -q ftp://ftp.mcs.anl.gov/pub/darshan/releases/darshan-3.2.1.tar.gz
RUN tar -xzf darshan-3.2.1.tar.gz && cd darshan-3.2.1/darshan-util && ./configure && make && make install && \
cd ../.. && rm -rf darshan-3.2.1 darshan-3.2.1.tar.gz
SHELL ["/bin/bash", "-c"]
ENV PATH=${PATH}:/project/DrMemory-Linux-2.3.0-1/bin64
RUN groupadd chapter17 && useradd -m -s /bin/bash -g chapter17 chapter17
RUN usermod -a -G video chapter17
WORKDIR /home/chapter17
RUN chown -R chapter17:chapter17 /home/chapter17
USER chapter17
ENV LANG='en_US.UTF-8'
ENV DISPLAY=:0
ENV NVIDIA_VISIBLE_DEVICES=all
ENV NVIDIA_DRIVER_CAPABILITIES=display,graphics,utility,compute
#RUN source /opt/intel/oneapi/setvars.sh
# You may want to "source /opt/intel/oneapi/setvars.sh" to get the full set of environment variables
ENV MANPATH=/opt/intel/oneapi/compiler/latest/documentation/en/man/common:${MAN_PATH}
ENV LD_LIBRARY_PATH=/opt/intel/oneapi/compiler/latest/linux/lib:/opt/intel/oneapi/compiler/latest/linux/lib/x64:/opt/intel/oneapi/compiler/latest/linux/lib/emu:/opt/intel/oneapi/compiler/latest/linux/lib/oclfpga/linux64/lib:/opt/intel/oneapi/compiler/latest/linux/compiler/lib/intel64_lin:/opt/intel/oneapi/compiler/latest/linux/compiler/lib:${LD_LIBRARY_PATH}
ENV PATH=/opt/intel/oneapi/compiler/latest/linux/bin/intel64:/opt/intel/oneapi/compiler/latest/linux/bin:/opt/intel/oneapi/compiler/latest/linux/ioc/bin:/opt/intel/oneapi/dev-utilities/latest/bin:/opt/intel/oneapi/advisor/latest/bin64:${PATH}
ENV ADVISOR_2021_DIR=/opt/intel/oneapi/advisor/2021.1-beta10
ENV PKG_CONFIG_PATH=/opt/intel/oneapi/advisor/2021.1-beta10/include/pkgconfig/lib64:${PKG_CONFIG_PATH}
ENV APM=/opt/intel/oneapi/advisor/2021.1-beta10/perfmodels
ENV PYTHONPATH=/opt/intel/oneapi/advisor/2021.1-beta10/pythonapi:${PYTHONPATH}
ENV PATH=${PATH}:/project/DrMemory-Linux-2.3.0-1/bin64
RUN git clone --recursive https://github.com/essentialsofparallelcomputing/Chapter17.git
#RUN darshan-job-summary.pl mpi_io_block2d.darshan
WORKDIR /home/chapter17/Chapter17
#RUN make
ENTRYPOINT ["bash"]