Projet

Général

Profil

Install the platform » Historique » Version 17

Arnaud Sevin, 08/01/2014 10:37

1 14 Arnaud Sevin
{{toc}}
2 1 Damien Gratadour
3 14 Arnaud Sevin
h1. Install the platform without MAGMA
4
5 1 Damien Gratadour
The COMPASS platform is distributed as a single bundle of CArMA and SuTrA libraries and YoGA and its AO extension for Yorick. 
6
7
h2. Hardware requirements
8 2 Damien Gratadour
9 10 Damien Gratadour
The system must contain at least an x86 CPU and a CUDA capable GPU. list of compatible GPUs can be found here http://www.nvidia.com/object/cuda_gpus.html. Specific requirements apply to clusters (to be updated).
10 1 Damien Gratadour
11
h2. Environment requirements
12 2 Damien Gratadour
13 11 Damien Gratadour
The system must be running a 64 bit distribution of Linux or Mac OS with the latest NVIDIA drivers and "CUDA toolkit":https://developer.nvidia.com/cuda-downloads. The installation of the corresponding version of the "CULA tools":http://www.culatools.com/downloads/dense/ is also required. The following installation instructions are valid if the default installation paths have been selected for these components.
14 1 Damien Gratadour
15 5 Damien Gratadour
Additionally, to benefit from the user-oriented features of the platform, Yorick should be installed as well as the latest version of Python and the associated pygtk module. 
16 1 Damien Gratadour
17 3 Damien Gratadour
To install Yorick, download the latest version from the github repository:
18
<pre>
19
git clone https://github.com/dhmunro/yorick.git yorick.git
20
</pre>
21
then cd onto the created directory and install:
22
<pre>
23
./configure && make && make install
24
</pre>
25
once Yorick is locally installed, you will have to add this directory : yorick.git/relocate/bin to your PATH to have an easy access to the yorick executable. You may want to add support for command history by using rlwrap and alias the yorick executable as :
26
<pre>
27 4 Damien Gratadour
alias yorick='rlwrap path_to_yorick_executable/yorick'
28 3 Damien Gratadour
</pre>
29 1 Damien Gratadour
30 3 Damien Gratadour
31 1 Damien Gratadour
h2. Installation process
32
33
First check out the latest version from the svn repository :
34
<pre>
35 3 Damien Gratadour
svn co https://version-lesia.obspm.fr/repos/compass compass
36 1 Damien Gratadour
</pre>
37
then go in the newly created directory and then trunk:
38
<pre>
39
cd compass/trunk
40
</pre>
41
once there, you need to modify system variables in the define_var.sh executable :
42
<pre>
43
emacs define_var.sh
44
</pre>
45
in this file define properly CUDA_ROOT, CULA_ROOT and YoGA path. Note that for the latter, as YoGA is distributed with SUTrA you should just point to the newly created trunk directory. On a Linux system you should normally have:
46
<pre>
47
export CUDA_ROOT=/usr/local/cuda
48
export CULA_ROOT=/usr/local/cula
49
export YOGA_DIR=/home/MyUserName/path2compass/trunk
50
</pre>
51 12 Damien Gratadour
in this file, you also have to indicate the proper architecture of your GPU so as the compiler will generate the appropriate code. Modify the following line:
52 13 Damien Gratadour
<pre>
53 12 Damien Gratadour
export GENCODE="arch=compute_12,code=sm_12"
54
</pre>
55
and change both 12 to your architecture : for instance a Tesla Fermi will have 3.0 computing capabilities so change 12 to 30, a Kepler GPU will have 3.5 computing capabilities, change 12 to 35
56 1 Damien Gratadour
57
Once this is done, you're ready to compile the whole library. First run define_var.sh to define the system variables that will be used during the compilation process:
58
<pre>
59
./define_var.sh
60
</pre>
61
62
then identify the absolute path to your Yorick executable using: 
63
<pre>
64
which yorick
65
</pre>
66
and run the compilation script:
67
<pre>
68 6 Damien Gratadour
./reinstall absolute_path_to_yorick
69 1 Damien Gratadour
</pre>
70
71 7 Damien Gratadour
If you did not get any error, CArMA, SuTrA and YoGA are now installed on your machine. You can check that everything is working by launching a GUI to test a simulation:
72 1 Damien Gratadour
<pre>
73
yorick -i yoga_ao/ywidgets/widget_ao.i
74
</pre>
75 14 Arnaud Sevin
76
h1. Install the platform with MAGMA
77
78
h2. Why MAGMA ?
79
80
The MAGMA project aims to develop a dense linear algebra library similar to LAPACK but for heterogeneous/hybrid architectures, starting with current "Multicore+GPU" systems.
81
82
Unlike CULA, MAGMA propose a dense linear algebra library handling double for free.
83
84
But MAGMA needs a LAPACK and a BLAS implementation. Actually, we try two options : ATLAS BLAS (free, easy to install) and MKL (free, need a registration but more powerful)
85
86
h2. Configure MAGMA with ATLAS
87
88
h3. Dependencies : blas, lapack, atlas
89
90
Use your package manager to install dependencies:
91
* on scientific linux : yum install blas-devel lapack-devel atlas-devel
92 16 Arnaud Sevin
* on debian : apt-get install libblas-dev liblapack-dev libatlas-base-dev libatlas-dev
93 14 Arnaud Sevin
94
h3. extraction
95
96
MAGMA is available here : http://icl.cs.utk.edu/magma/software/index.html
97
98
extract the tgz file and go into the new directory
99
> ~$ tar xf magma-1.4.1-beta.tar.gz
100
> ~$ cd magma-1.4.1
101
102
h3. configuration
103
104
You have to create your own make.inc :
105
106
* example on a scientific linux : *please verify GPU_TARGET, LAPACKDIR, ATLASDIR, CUDADIR*
107
108
<pre><code class="Makefile">
109
#//////////////////////////////////////////////////////////////////////////////
110
#   -- MAGMA (version 1.4.1) --
111
#      Univ. of Tennessee, Knoxville
112
#      Univ. of California, Berkeley
113
#      Univ. of Colorado, Denver
114
#      November 2013
115
#//////////////////////////////////////////////////////////////////////////////
116
117
# GPU_TARGET specifies for which GPU you want to compile MAGMA:
118
#     "Tesla"  (NVIDIA compute capability 1.x cards)
119
#     "Fermi"  (NVIDIA compute capability 2.x cards)
120
#     "Kepler" (NVIDIA compute capability 3.x cards)
121
# See http://developer.nvidia.com/cuda-gpus
122
123
GPU_TARGET ?= Fermi
124
125
CC        = gcc
126
NVCC      = nvcc
127
FORT      = gfortran
128
129
ARCH      = ar
130
ARCHFLAGS = cr
131
RANLIB    = ranlib
132
133
OPTS      = -fPIC -O3 -DADD_ -fopenmp -DMAGMA_SETAFFINITY
134
F77OPTS   = -fPIC -O3 -DADD_
135
FOPTS     = -fPIC -O3 -DADD_ -x f95-cpp-input
136
NVOPTS    =       -O3 -DADD_ -Xcompiler "-fno-strict-aliasing -fPIC"
137
LDOPTS    = -fPIC -fopenmp
138
139
# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
140
LIB       = -llapack -lf77blas -latlas -lcblas -lcublas -lcudart -lstdc++ -lm -lgfortran
141
142
# define library directories here or in your environment
143
LAPACKDIR = /usr/lib64
144
ATLASDIR  = /usr/lib64/atlas
145
CUDADIR   = /usr/local/cuda
146
147
LIBDIR    = -L$(LAPACKDIR) \
148
            -L$(ATLASDIR) \
149
            -L$(CUDADIR)/lib64
150
151
INC       = -I$(CUDADIR)/include
152
</code></pre>
153
154 17 Arnaud Sevin
* on debian : *please verify GPU_TARGET, LAPACKDIR, ATLASDIR, CUDADIR*
155
<pre><code class="Makefile">
156
#//////////////////////////////////////////////////////////////////////////////
157
#   -- MAGMA (version 1.4.1) --
158
#      Univ. of Tennessee, Knoxville
159
#      Univ. of California, Berkeley
160
#      Univ. of Colorado, Denver
161
#      November 2013
162
#//////////////////////////////////////////////////////////////////////////////
163
164
# GPU_TARGET specifies for which GPU you want to compile MAGMA:
165
#     "Tesla"  (NVIDIA compute capability 1.x cards)
166
#     "Fermi"  (NVIDIA compute capability 2.x cards)
167
#     "Kepler" (NVIDIA compute capability 3.x cards)
168
# See http://developer.nvidia.com/cuda-gpus
169
170
GPU_TARGET ?= Fermi
171
172
CC        = gcc
173
NVCC      = nvcc
174
FORT      = gfortran
175
176
ARCH      = ar
177
ARCHFLAGS = cr
178
RANLIB    = ranlib
179
180
OPTS      = -fPIC -O3 -DADD_ -fopenmp -DMAGMA_SETAFFINITY
181
F77OPTS   = -fPIC -O3 -DADD_
182
FOPTS     = -fPIC -O3 -DADD_ -x f95-cpp-input
183
NVOPTS    =       -O3 -DADD_ -Xcompiler "-fno-strict-aliasing -fPIC" 
184
LDOPTS    = -fPIC -fopenmp
185
186
# Depending on how ATLAS and LAPACK were compiled, you may need one or more of:
187
LIB       = -llapack -lf77blas -latlas -lcblas -lcublas -lcudart -lstdc++ -lm -lgfortran
188
189
# define library directories here or in your environment
190
LAPACKDIR = /usr/lib
191
ATLASDIR  = /usr/lib
192
CUDADIR   = /usr/local/cuda
193
194
LIBDIR    = -L$(LAPACKDIR) \
195
            -L$(ATLASDIR) \
196
            -L$(CUDADIR)/lib64
197
198
INC       = -I$(CUDADIR)/include
199
</code></pre>
200 14 Arnaud Sevin
201
h2. Configure MAGMA with MKL
202
203
h3. extraction
204
205
To download MKL, you have to create a account here : https://registrationcenter.intel.com/RegCenter/NComForm.aspx?ProductID=1517
206
207
extract l_ccompxe_2013_sp1.1.106.tgz and go into l_ccompxe_2013_sp1.1.106
208
209
install it with ./install_GUI.sh and add IPP stuff to default choices
210
211
h3. configuration
212
213
Just copy make.inc.mkl-gcc to make.inc *please verify GPU_TARGET, MKLDIR, CUDADIR*
214
215
h2. compilation and installation
216
217
h3. compilation
218
219
just compile the shared target (and test if you want)
220
> ~$ make -j 8 shared
221
222
h3. installation
223
224
To install libraries and include files in a given prefix, run:
225
> ~$ make install prefix=/usr/local/magma
226
  
227
The default prefix is /usr/local/magma. You can also set prefix in make.inc.
228
229
h3. tune (not tested)
230
231 15 Arnaud Sevin
For multi-GPU functions, set $MAGMA_NUM_GPUS to set the number of GPUs to use.
232
For multi-core BLAS libraries, set $OMP_NUM_THREADS or $MKL_NUM_THREADS or $VECLIB_MAXIMUM_THREADS to set the number of CPU threads, depending on your BLAS library.
233
234
h2. Platform installation
235
236
Just just define $MAGMA_PATH and use the standard procedure