Skip to content

Commit 080655f

Browse files
committed
HiCMA v0.1.3
1 parent 28bb223 commit 080655f

File tree

136 files changed

+57624
-3571
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

136 files changed

+57624
-3571
lines changed

.gitmodules

+4-2
Original file line numberDiff line numberDiff line change
@@ -6,5 +6,7 @@
66
url = https://github.com/ecrc/stars-h.git
77
[submodule "chameleon"]
88
path = chameleon
9-
url = https://gitlab.inria.fr/solverstack/chameleon.git
10-
#url = [email protected]:ecrc/chameleon.git
9+
url = https://gitlab.inria.fr/solverstack/chameleon.git
10+
[submodule "hcore"]
11+
path = hcore
12+
url = https://github.com/ecrc/hcore

CMakeLists.txt

+104-304
Large diffs are not rendered by default.

INSTALL INSTALL.md

+28
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,22 @@
1+
# Installation on ECRC servers
2+
3+
1. Go to home directory
4+
5+
2. Get HiCMA from git repository
6+
7+
git clone [email protected]:ecrc/hicma-dev
8+
9+
3. Run the following command: (This command will also setup PKG_CONFIG_PATH for STARS-H)
10+
11+
. hicma-dev/scripts/build-nompi.sh
12+
13+
4. Run the following command for seeing which experimental cases will be executed:
14+
15+
cd ./hicma-dev
16+
./exp/distruns.sh exp/cases/statistics.sh dry
17+
18+
5. Remove the keyword "dry" to really run the cases.
19+
120
# Installation
221

322
Installation requires `CMake` of version 3.2.3 at least. To build HiCMA,
@@ -46,6 +65,15 @@ Now you can use `pkg-config` executable to collect compiler and linker flags for
4665

4766
There are `scripts/build.sh` and `scripts/build-nompi.sh` scripts in the repository to build the whole software stack.
4867

68+
# CTests
69+
70+
You can run CTests in the build folder via the following command:
71+
72+
ctest
73+
74+
A specific test can be run in verbose mode as follows:
75+
76+
ctest -R time_zgemm_tile-mpi-edsin -V
4977

5078
# CMake Configuration
5179

Jenkinsfile

+54-31
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ module load hwloc/1.11.8-gcc-5.5.0
4343
module load openmpi/3.0.0-gcc-5.5.0
4444
module load ecrc-extras
4545
module load starpu/1.2.4-gcc-5.5.0-mkl-openmpi-3.0.0
46-
module load gsl/2.4-gcc-5.5.0
46+
#module load gsl/2.4-gcc-5.5.0
4747
4848
4949
module list
@@ -54,31 +54,43 @@ set -x
5454
5555
HICMADEVDIR=$PWD
5656
57-
# Update submodules
58-
#git submodule update --init --recursive
57+
INSTALLDIR=$PWD/dependencies-prefix
58+
mkdir -p $INSTALLDIR
59+
rm -rf $INSTALLDIR/*
60+
export PKG_CONFIG_PATH=$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH
5961
6062
# STARS-H
63+
cd $HICMADEVDIR
6164
cd stars-h
6265
rm -rf build
63-
mkdir -p build/installdir
66+
mkdir -p build
6467
cd build
65-
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DMPI=OFF -DOPENMP=OFF -DSTARPU=OFF
68+
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR -DMPI=OFF -DOPENMP=OFF -DSTARPU=OFF -DGSL=OFF
6669
make clean
67-
make -j
70+
make -j 4
6871
make install
69-
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
7072
7173
# CHAMELEON
7274
cd $HICMADEVDIR
7375
cd chameleon
7476
rm -rf build
75-
mkdir -p build/installdir
77+
mkdir -p build
7678
cd build
77-
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCHAMELEON_USE_MPI=ON -DCMAKE_INSTALL_PREFIX=$PWD/installdir
79+
cmake .. -DCMAKE_BUILD_TYPE=Debug -DCHAMELEON_USE_MPI=ON -DCMAKE_INSTALL_PREFIX=$INSTALLDIR
7880
make clean
79-
make -j
81+
make -j 4
82+
make install
83+
84+
# HCORE
85+
cd $HICMADEVDIR
86+
cd hcore
87+
rm -rf build
88+
mkdir -p build
89+
cd build
90+
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR
91+
make clean
92+
make -j 4
8093
make install
81-
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
8294
8395
# HICMA
8496
cd $HICMADEVDIR
@@ -87,7 +99,7 @@ mkdir -p build/installdir
8799
cd build
88100
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DHICMA_USE_MPI=ON
89101
make clean
90-
make -j
102+
make -j 4
91103
make install
92104
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
93105
@@ -110,7 +122,7 @@ module load cmake/3.9.6
110122
module load hwloc/1.11.8-gcc-5.5.0
111123
module load ecrc-extras
112124
module load starpu/1.2.4-gcc-5.5.0-mkl-openmpi-3.0.0
113-
module load gsl/2.4-gcc-5.5.0
125+
#module load gsl/2.4-gcc-5.5.0
114126
115127
module list
116128
@@ -120,31 +132,42 @@ set -x
120132
121133
HICMADEVDIR=$PWD
122134
123-
# Update submodules
124-
#git submodule update --init --recursive
135+
INSTALLDIR=$PWD/dependencies-prefix
136+
mkdir -p $INSTALLDIR
137+
rm -rf $INSTALLDIR/*
138+
export PKG_CONFIG_PATH=$INSTALLDIR/lib/pkgconfig:$PKG_CONFIG_PATH
125139
126140
# STARS-H
127141
cd stars-h
128142
rm -rf build
129-
mkdir -p build/installdir
143+
mkdir -p build
130144
cd build
131-
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DMPI=OFF -DOPENMP=OFF -DSTARPU=OFF
145+
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR -DMPI=OFF -DOPENMP=OFF -DSTARPU=OFF -DGSL=OFF
132146
make clean
133-
make -j
147+
make -j 4
134148
make install
135-
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
136149
137150
# CHAMELEON
138151
cd $HICMADEVDIR
139152
cd chameleon
140153
rm -rf build
141-
mkdir -p build/installdir
154+
mkdir -p build
142155
cd build
143-
cmake .. -DCMAKE_BUILD_TYPE=Release -DCHAMELEON_USE_MPI=OFF -DCMAKE_INSTALL_PREFIX=$PWD/installdir
156+
cmake .. -DCMAKE_BUILD_TYPE=Release -DCHAMELEON_USE_MPI=OFF -DCMAKE_INSTALL_PREFIX=$INSTALLDIR
144157
make clean
145-
make -j
158+
make -j 4
159+
make install
160+
161+
# HCORE
162+
cd $HICMADEVDIR
163+
cd hcore
164+
rm -rf build
165+
mkdir -p build
166+
cd build
167+
cmake .. -DCMAKE_INSTALL_PREFIX=$INSTALLDIR
168+
make clean
169+
make -j 4
146170
make install
147-
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
148171
149172
# HICMA
150173
cd $HICMADEVDIR
@@ -153,7 +176,7 @@ mkdir -p build/installdir
153176
cd build
154177
cmake .. -DCMAKE_INSTALL_PREFIX=$PWD/installdir -DHICMA_USE_MPI=OFF
155178
make clean
156-
make -j
179+
make -j 4
157180
make install
158181
export PKG_CONFIG_PATH=$PWD/installdir/lib/pkgconfig:$PKG_CONFIG_PATH
159182
@@ -179,7 +202,7 @@ module load hwloc/1.11.8-gcc-5.5.0
179202
module load openmpi/3.0.0-gcc-5.5.0
180203
module load ecrc-extras
181204
module load starpu/1.2.4-gcc-5.5.0-mkl-openmpi-3.0.0
182-
module load gsl/2.4-gcc-5.5.0
205+
#module load gsl/2.4-gcc-5.5.0
183206
184207
module list
185208
@@ -189,7 +212,7 @@ ctest -T Test --no-compress-output -V
189212
if [ "$BRANCH_NAME" != "master" ]
190213
then
191214
# valgring for timing takes too long. Test the rest
192-
#ctest -T memcheck -LE timing
215+
#ctest -T memcheck -LE timing
193216
:
194217
fi
195218
@@ -215,7 +238,7 @@ module load cmake/3.9.6
215238
module load hwloc/1.11.8-gcc-5.5.0
216239
module load ecrc-extras
217240
module load starpu/1.2.4-gcc-5.5.0-mkl-openmpi-3.0.0
218-
module load gsl/2.4-gcc-5.5.0
241+
#module load gsl/2.4-gcc-5.5.0
219242
220243
module list
221244
@@ -225,7 +248,7 @@ ctest -T Test --no-compress-output -V
225248
if [ "$BRANCH_NAME" != "master" ]
226249
then
227250
# valgring for timing takes too long. Test the rest
228-
#ctest -T memcheck -LE timing
251+
#ctest -T memcheck -LE timing
229252
:
230253
fi
231254
@@ -253,7 +276,7 @@ module load hwloc/1.11.8-gcc-5.5.0
253276
module load openmpi/3.0.0-gcc-5.5.0
254277
module load ecrc-extras
255278
module load starpu/1.2.4-gcc-5.5.0-mkl-openmpi-3.0.0
256-
module load gsl/2.4-gcc-5.5.0
279+
#module load gsl/2.4-gcc-5.5.0
257280
module list
258281
cd $WORKSPACE/build
259282
make docs
@@ -282,10 +305,10 @@ cppcheck-htmlreport --source-encoding="iso8859-1" --title="HiCMA" --source-dir=.
282305
//failure {
283306
//}
284307
unstable {
285-
emailext body: "${env.JOB_NAME} - Please go to ${env.BUILD_URL}", subject: "Jenkins Pipeline build is UNSTABLE", recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']]
308+
emailext body: "${env.JOB_NAME} - Please go to ${env.BUILD_URL}", subject: "Jenkins Pipeline build is UNSTABLE", recipientProviders: [culprits(),requestor()]
286309
}
287310
failure {
288-
emailext body: "${env.JOB_NAME} - Please go to ${env.BUILD_URL}", subject: "Jenkins Pipeline build FAILED", recipientProviders: [[$class: 'CulpritsRecipientProvider'], [$class: 'RequesterRecipientProvider']]
311+
emailext body: "${env.JOB_NAME} - Please go to ${env.BUILD_URL}", subject: "Jenkins Pipeline build FAILED", recipientProviders: [culprits(),requestor()]
289312
}
290313
}
291314
}

README.md

+16-1
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ computations operating on the underlying tile low-rank data format, while satisf
1010
numerical accuracy and leveraging performance from massively parallel hardware architectures.
1111

1212

13-
Features of HiCMA 0.1.1
13+
Features of HiCMA 0.1.3
1414
-----------------------------
1515
* Matrix-Matrix Multiplication
1616
* Cholesky Factorization/Solve
@@ -43,12 +43,27 @@ HiCMA depends on the following libraries:
4343
* StarPU
4444
* MPI
4545

46+
Installation
47+
------------
48+
49+
Please see INSTALL.md for information about installing and testing.
50+
4651

4752
References
4853
-----------
4954
1. K. Akbudak, H. Ltaief, A. Mikhalev, and D. E. Keyes, *Tile Low Rank Cholesky Factorization for
5055
Climate/Weather Modeling Applications on Manycore Architectures*, **International Supercomputing
5156
Conference (ISC17)**, June 18-22, 2017, Frankfurt, Germany.
5257

58+
2. K. Akbudak, H. Ltaief, A. Mikhalev, A. Charara, and D. E. Keyes, *Exploiting Data Sparsity for Large-Scale Matrix Computations*, **Euro-Par 2018**, August 27-31, 2018, Turin, Italy.
59+
60+
3. Q. Cao, Y. Pei, T. Herauldt, K. Akbudak, A. Mikhalev, G. Bosilca, H. Ltaief, D. E. Keyes, and J. Dongarra, *Performance Analysis of Tile Low-Rank Cholesky Factorization Using PaRSEC Instrumentation Tools*, **2019 IEEE/ACM International Workshop on Programming and Performance Visualization Tools (ProTools)**, Denver, CO, USA, 2019, pp. 25-32.
61+
62+
4. Q. Cao, Y. Pei, K. Akbudak, A. Mikhalev, G. Bosilca, H. Ltaief, D. E. Keyes, and J. Dongarra, *Extreme-Scale Task-Based Cholesky Factorization Toward Climate and Weather Prediction Applications*, **The Platform for Advanced Scientific Computing (PASC 2020)**.
63+
64+
5. N. Al-Harthi, R. Alomairy, K. Akbudak, R. Chen, H. Ltaief, H. Bagci, and D. E. Keyes, *Solving Acoustic Boundary Integral Equations Using High Performance Tile Low-Rank LU Factorization*, **International Supercomputing Conference (ISC 2020)**.
65+
66+
67+
5368

5469
![Handout](docs/HiCMA-handout-SC17.png)

RELEASE.md

+37
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
# Release 0.1.3
2+
3+
## Features
4+
* Support for a new application that simulates the 3D unstructured mesh deformation of a population of the novel coronaviruses (i.e., SARS-CoV-2). This relies on the virus geometry extracted from the Protein Data Bank (PDB) codenamed PDBID 6VXX available at (https://www.rcsb.org/structure/6VXX). The corresponding basis function and data geometry are available at STARS-H (https://github.com/ecrc/stars-h).
5+
6+
# Release 0.1.2
7+
8+
## Features
9+
* New matrix kernel (3D exponential) for statistics application from STARS-H (https://github.com/ecrc/stars-h) is supported.
10+
* Sequential operations on low-rank tiles are moved into a standalone library called HCORE (https://github.com/ecrc/hcore).
11+
* Number of flops is reported. See the driver routines under timing folder.
12+
* Multiplication order of tiles in each inner product performed by HiCMA_GEMM can be changed via adding --reorderinnerproducts flag while calling timing/time_zgemm_tile. This flag enables sorting tiles according to increasing sum of ranks of tile pairs that which will be multiplied.
13+
* More tests in timing/CMakeLists.txt
14+
15+
## Bug Fixes and Other Changes
16+
* Set minimum number of singular vectors in HCORE_GEMM to 1 instead of 2
17+
18+
# Release 0.1.1
19+
20+
## Features
21+
* Triangular solve (left) for low rank A and B/X
22+
* Triangular solve (left, lower) for low rank A and full rank B/X
23+
* Testing routine for POSV and TRSM
24+
* HCORE routine for C=C+AB where A is low rank and B and C are full rank
25+
* Separate routines for dense and low rank matrix generation
26+
27+
# Release 0.1.0
28+
29+
## Features
30+
* Matrix-Matrix Multiplication
31+
* Cholesky Factorization
32+
* Double Precision
33+
* Task-based Programming Models
34+
* Shared and Distributed-Memory Environments
35+
* Support for StarPU Dynamic Runtime Systems
36+
* Testing Suite and Examples
37+

chameleon

Submodule chameleon updated from 8595b23 to 2803719

cmake_modules/GenPkgConfig.cmake

+4-4
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
# @author Emmanuel Agullo
2424
# @author Mathieu Faverge
2525
# @author Florent Pruvost
26-
# @date 2018-11-08
26+
# @date 2020-01-07
2727
#
2828
###
2929

@@ -40,10 +40,10 @@ MACRO(CONVERT_LIBSTYLE_TO_PKGCONFIG _liblist)
4040
if (${_dep} MATCHES "^/")
4141
get_filename_component(dep_libname ${_dep} NAME)
4242
get_filename_component(dep_libdir ${_dep} DIRECTORY)
43+
STRING(REPLACE ".dylib" "" dep_libname "${dep_libname}")
4344
STRING(REPLACE "lib" "" dep_libname "${dep_libname}")
4445
STRING(REPLACE ".so" "" dep_libname "${dep_libname}")
4546
STRING(REPLACE ".a" "" dep_libname "${dep_libname}")
46-
STRING(REPLACE ".dylib" "" dep_libname "${dep_libname}")
4747
STRING(REPLACE ".dll" "" dep_libname "${dep_libname}")
4848
list(APPEND ${_liblist} -L${dep_libdir} -l${dep_libname})
4949
elseif(NOT ${_dep} MATCHES "^-")
@@ -81,11 +81,11 @@ ENDMACRO(CLEAN_LIB_LIST)
8181
MACRO(GENERATE_PKGCONFIG_FILE)
8282
# The link flags specific to this package and any required libraries
8383
# that don't support PkgConfig
84-
set(HICMA_PKGCONFIG_LIBS "-lhicma")
84+
set(HICMA_PKGCONFIG_LIBS "-lhicma -lhcore")
8585

8686
# The link flags for private libraries required by this package but not
8787
# exposed to applications
88-
set(HICMA_PKGCONFIG_LIBS_PRIVATE "")
88+
set(HICMA_PKGCONFIG_LIBS_PRIVATE "-lhcore")
8989

9090
# A list of packages required by this package
9191
set(HICMA_PKGCONFIG_REQUIRED "")

cmake_modules/PrintOpts.cmake

+2-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@
2121
#
2222
# @author Florent Pruvost
2323
# @author Eduardo Gonzalez
24-
# @date 22-08-2017
24+
# @date 2019-11-25
2525
#
2626
###
2727
set(dep_message "\nConfiguration of HiCMA:\n"
@@ -57,6 +57,7 @@ set(dep_message "${dep_message}"
5757
"\n"
5858
" Chameleon ...........: ${CHAMELEON_DIR_FOUND}\n"
5959
" STARS-H .............: ${STARSH_DIR_FOUND}\n"
60+
" HCORE . .............: ${HCORE_DIR_FOUND}\n"
6061
"\n"
6162
" Trace ...............: ${HICMA_ENABLE_TRACING}\n"
6263
" Simulation mode .....: ${HICMA_SIMULATION}\n"

0 commit comments

Comments
 (0)