-
Notifications
You must be signed in to change notification settings - Fork 7
Expand file tree
/
Copy pathSingularity.openpose-multi
More file actions
145 lines (129 loc) · 4.29 KB
/
Singularity.openpose-multi
File metadata and controls
145 lines (129 loc) · 4.29 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
Bootstrap: docker
From: nvcr.io/nvidia/caffe:20.03-py3
%files
CMakeLists.patch
cudacap.cxx
%post
# Packages
export LC_ALL=C
apt-get -y --no-install-recommends update && \
apt-get -y --no-install-recommends upgrade
apt-get install -y --no-install-recommends \
build-essential \
git \
wget \
nano \
dialog \
software-properties-common \
libatlas-base-dev \
libleveldb-dev \
libsnappy-dev \
libhdf5-serial-dev \
libboost-all-dev \
libgflags-dev \
libgoogle-glog-dev \
liblmdb-dev \
pciutils \
python3-setuptools \
python3-dev \
python3-pip \
opencl-headers \
ocl-icd-opencl-dev \
libviennacl-dev \
libavcodec-dev \
libavformat-dev \
libswscale-dev \
libv4l-dev \
libxvidcore-dev \
libx264-dev \
libgtk-3-dev \
gfortran \
pkg-config \
libssl-dev \
libcanberra-gtk-module && \
python3 -m pip install \
numpy \
opencv-python
# Up to date ffmpeg
add-apt-repository -y ppa:jonathonf/ffmpeg-4 && \
apt-get -y --no-install-recommends update && \
apt-get -y --no-install-recommends install ffmpeg \
# Up to date CMake (Ubuntu 18.04 includes 3.10 which is too old)
wget -O - \
https://apt.kitware.com/keys/kitware-archive-latest.asc | \
gpg --dearmor - | \
tee /etc/apt/trusted.gpg.d/kitware.gpg && \
apt-add-repository -y 'deb https://apt.kitware.com/ubuntu/ bionic main' && \
apt-get update && \
apt-get -y --no-install-recommends install cmake
# Get OpenPose
cd /opt && \
git clone --depth 1 https://github.com/CMU-Perceptual-Computing-Lab/openpose.git --branch v1.6.0 --single-branch && \
cp -R openpose openpose_cpu && \
cp -R openpose openpose_legacy_gpu
# Fix up stubs
ln -s /usr/local/cuda/lib64/stubs/libnvidia-ml.so /usr/local/cuda/lib64/stubs/libnvidia-ml.so.1
# Build GPU + NVCaffe OpenPose
mkdir -p /opt/openpose/build && \
cd /opt/openpose/ && git apply /CMakeLists.patch
cd build && \
cmake \
-DGPU_MODE=CUDA \
-DBUILD_PYTHON=ON \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath-link=/usr/local/cuda/lib64/stubs" \
-DDL_FRAMEWORK=NV_CAFFE \
-DCaffe_INCLUDE_DIRS=/usr/local/include/caffe \
-DCaffe_LIBS_RELEASE=/usr/local/lib/libcaffe-nv.so \
-DCaffe_LIBS=/usr/local/lib/libcaffe-nv.so \
-DBUILD_CAFFE=OFF \
-DCUDA_ARCH=All \
.. && \
make -j`nproc`
# Build CPU OpenPose
mkdir -p /opt/openpose_cpu/build && \
cd /opt/openpose_cpu/ && git apply /CMakeLists.patch &&
cd build &&
cmake \
-DGPU_MODE=CPU_ONLY \
-DBUILD_PYTHON=ON \
.. && \
make -j`nproc`
# Build legacy GPU OpenPose
mkdir -p /opt/openpose_legacy_gpu/build && \
cd /opt/openpose_legacy_gpu/ && git apply /CMakeLists.patch &&
cd build &&
cmake \
-DGPU_MODE=CUDA \
-DBUILD_PYTHON=ON \
-DCMAKE_EXE_LINKER_FLAGS="-Wl,-rpath-link=/usr/local/cuda/lib64/stubs" \
-DCUDA_ARCH=All \
.. && \
make -j`nproc`
# Build CUDA capability checker
g++ /cudacap.cxx -I/usr/local/cuda/include -o /cudacap /usr/local/cuda/lib64/libcudart.so
%environment
if [ -z "$LD_LIBRARY_PATH" ]; then
LD_LIBRARY_PATH="/.singularity.d/libs"
else
LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/.singularity.d/libs"
fi
if nvidia-smi; then
if [ "$(/cudacap)" -ge "50" ]; then
echo "#### USING GPU with NVCaffe ####"
export OPENPOSE_SRC=/opt/openpose
export OPENPOSE_VAR=gpu
else
echo "#### USING Legacy GPU with Custom Caffe ####"
export OPENPOSE_SRC=/opt/openpose_legacy_gpu
export OPENPOSE_VAR=legacy_gpu
fi
else
echo "#### USING CPU ####"
export OPENPOSE_SRC=/opt/openpose_cpu
export OPENPOSE_VAR=cpu
fi
export OPENPOSE=$OPENPOSE_SRC/build
export OPENPOSE_BIN=$OPENPOSE/examples/openpose/openpose.bin
export PYTHONPATH="$OPENPOSE/python:$PYTHONPATH"
%runscript
cd $OPENPOSE_SRC && exec $OPENPOSE_BIN "$@"