Skip to content
This repository was archived by the owner on Mar 20, 2023. It is now read-only.

Commit 9fff9e0

Browse files
iomaganarispramodk
authored andcommitted
Added neuron direct test in CoreNeuron Jenkins pipeline (#187)
- Install with spack neuron master branch and run all the tests requiring neuron with it - Added neuron_direct.py script for direct checking
1 parent b858a08 commit 9fff9e0

File tree

7 files changed

+164
-26
lines changed

7 files changed

+164
-26
lines changed

tests/jenkins/Jenkinsfile

Lines changed: 42 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -4,21 +4,33 @@ pipeline {
44
}
55
stages {
66

7+
stage('install Spack'){
8+
steps {
9+
sh 'source $WORKSPACE/tests/jenkins/spack_setup.sh'
10+
}
11+
}
12+
13+
stage('spack install neuron@develop'){
14+
steps {
15+
sh 'sh tests/jenkins/install_neuron.sh'
16+
}
17+
}
18+
719
stage('build corenrn AoS'){
820
steps {
9-
sh 'sh tests/jenkins/install.sh AoS'
21+
sh 'sh tests/jenkins/install_coreneuron.sh AoS'
1022
}
1123
}
1224

1325
stage('build corenrn SoA'){
1426
steps {
15-
sh 'sh tests/jenkins/install.sh SoA'
27+
sh 'sh tests/jenkins/install_coreneuron.sh SoA'
1628
}
1729
}
1830

1931
stage('build corenrn GPU'){
2032
steps {
21-
sh 'sh tests/jenkins/install.sh GPU'
33+
sh 'sh tests/jenkins/install_coreneuron.sh GPU'
2234
}
2335
}
2436

@@ -42,6 +54,21 @@ pipeline {
4254
}
4355
}
4456

57+
stage('neuron_direct'){
58+
parallel{
59+
stage('AoS'){
60+
steps{
61+
sh 'sh tests/jenkins/run_neuron_direct.sh AoS'
62+
}
63+
}
64+
stage('SoA'){
65+
steps{
66+
sh 'sh tests/jenkins/run_neuron_direct.sh SoA'
67+
}
68+
}
69+
}
70+
}
71+
4572
stage('checkout testcorenrn and ringtest'){
4673
steps{
4774
dir('testcorenrn'){
@@ -94,17 +121,17 @@ pipeline {
94121
stages{
95122
stage('neuron'){
96123
steps{
97-
sh 'sh tests/jenkins/run_neuron.sh testcorenrn deriv 6'
124+
sh 'sh tests/jenkins/run_neuron.sh testcorenrn deriv 1'
98125
}
99126
}
100127
stage('corenrn AoS'){
101128
steps{
102-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS deriv 6'
129+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS deriv 1'
103130
}
104131
}
105132
stage('corenrn SoA'){
106133
steps{
107-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA deriv 6'
134+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA deriv 1'
108135
}
109136
}
110137
}
@@ -132,17 +159,17 @@ pipeline {
132159
stages{
133160
stage('neuron'){
134161
steps{
135-
sh 'sh tests/jenkins/run_neuron.sh testcorenrn kin 6'
162+
sh 'sh tests/jenkins/run_neuron.sh testcorenrn kin 1'
136163
}
137164
}
138165
stage('corenrn AoS'){
139166
steps{
140-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS kin 6'
167+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS kin 1'
141168
}
142169
}
143170
stage('corenrn SoA'){
144171
steps{
145-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA kin 6'
172+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA kin 1'
146173
}
147174
}
148175
}
@@ -151,17 +178,17 @@ pipeline {
151178
stages{
152179
stage('neuron'){
153180
steps{
154-
sh 'sh tests/jenkins/run_neuron.sh testcorenrn conc 6'
181+
sh 'sh tests/jenkins/run_neuron.sh testcorenrn conc 1'
155182
}
156183
}
157184
stage('corenrn AoS'){
158185
steps{
159-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS conc 6'
186+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS conc 1'
160187
}
161188
}
162189
stage('corenrn SoA'){
163190
steps{
164-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA conc 6'
191+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA conc 1'
165192
}
166193
}
167194
}
@@ -189,17 +216,17 @@ pipeline {
189216
stages{
190217
stage('neuron'){
191218
steps{
192-
sh 'sh tests/jenkins/run_neuron.sh testcorenrn bbcore 6'
219+
sh 'sh tests/jenkins/run_neuron.sh testcorenrn bbcore 1'
193220
}
194221
}
195222
stage('corenrn AoS'){
196223
steps{
197-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS bbcore 6'
224+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn AoS bbcore 1'
198225
}
199226
}
200227
stage('corenrn SoA'){
201228
steps{
202-
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA bbcore 6'
229+
sh 'sh tests/jenkins/run_corenrn.sh testcorenrn SoA bbcore 1'
203230
}
204231
}
205232
}

tests/jenkins/install_neuron.sh

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
#!/usr/bin/bash
2+
3+
set -x
4+
set -e
5+
6+
export SPACK_INSTALL_PREFIX="${SPACK_INSTALL_PREFIX:-${WORKSPACE}/INSTALL_HOME}"
7+
source $WORKSPACE/BUILD_HOME/spack/share/spack/setup-env.sh
8+
source /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/modules.sh
9+
export PATH=$WORKSPACE/BUILD_HOME/spack/bin:/usr/bin:$PATH
10+
export MODULEPATH=$SPACK_INSTALL_PREFIX/modules/tcl/$(spack arch):$MODULEPATH
11+
12+
unset $(env|awk -F= '/^(PMI|SLURM)_/ {if ($1 != "SLURM_ACCOUNT") print $1}')
13+
14+
spack install neuron@develop
15+
module av neuron

tests/jenkins/neuron_direct.py

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
from neuron import h, gui
2+
import sys
3+
4+
h('''create soma''')
5+
h.soma.L=5.6419
6+
h.soma.diam=5.6419
7+
h.soma.insert("hh")
8+
ic = h.IClamp(h.soma(.5))
9+
ic.delay = .5
10+
ic.dur = 0.1
11+
ic.amp = 0.3
12+
13+
v = h.Vector()
14+
v.record(h.soma(.5)._ref_v, sec = h.soma)
15+
tv = h.Vector()
16+
tv.record(h._ref_t, sec=h.soma)
17+
h.run()
18+
vstd = v.cl()
19+
tvstd = tv.cl()
20+
21+
#h.CoreNeuronRun[0].run()
22+
pc = h.ParallelContext()
23+
h.cvode.cache_efficient(1)
24+
h.stdinit()
25+
pc.nrncore_run("-e %g"%h.tstop, 0)
26+
27+
if not bool(tv.eq(tvstd)):
28+
print("Voltage times are different")
29+
sys.exit(-1)
30+
if v.cl().sub(vstd).abs().max() >= 1e-10:
31+
print("Voltage difference greater than or equal to 1e-10")
32+
sys.exit(-1)
33+
34+
print("Voltage times are same and difference is less than 1e-10")
35+
h.quit()

tests/jenkins/nrnivmodl.sh

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,15 @@
11
#!/usr/bin/bash
22

33
set -e
4-
set +x
54

65
TEST_DIR="$1"
76

87
. /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/modules.sh
9-
module load intel
8+
export SPACK_INSTALL_PREFIX="${SPACK_INSTALL_PREFIX:-${WORKSPACE}/INSTALL_HOME}"
9+
export PATH=$WORKSPACE/BUILD_HOME/spack/bin:/usr/bin:$PATH
10+
export MODULEPATH=$SPACK_INSTALL_PREFIX/modules/tcl/$(spack arch):$MODULEPATH
1011

11-
neuron_version=$(module av neuron 2>&1 | grep -o -m 1 '^neuron.*/parallel$' | awk -F' ' '{print $1}')
12-
if [[ $neuron_version ]]; then
13-
module load $neuron_version
14-
module list
15-
else
16-
echo "Error: no compatible neuron version found." >&2
17-
module list
18-
exit 1
19-
fi
12+
module load intel neuron
2013

2114
unset $(env|awk -F= '/^(PMI|SLURM)_/ {if ($1 != "SLURM_ACCOUNT") print $1}')
2215

tests/jenkins/run_neuron_direct.sh

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/bash
2+
3+
set -e
4+
set -x
5+
6+
CORENRN_TYPE="$1"
7+
8+
unset MODULEPATH
9+
. /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/modules.sh
10+
export SPACK_INSTALL_PREFIX="${SPACK_INSTALL_PREFIX:-${WORKSPACE}/INSTALL_HOME}"
11+
export PATH=$WORKSPACE/BUILD_HOME/spack/bin:/usr/bin:$PATH
12+
export MODULEPATH=$SPACK_INSTALL_PREFIX/modules/tcl/$(spack arch):$MODULEPATH
13+
14+
module load hpe-mpi neuron
15+
16+
export CORENEURONLIB=$WORKSPACE/install_${CORENRN_TYPE}/lib64/libcoreneuron.so
17+
18+
unset $(env|awk -F= '/^(PMI|SLURM)_/ {if ($1 != "SLURM_ACCOUNT") print $1}')
19+
20+
nrniv -python $WORKSPACE/tests/jenkins/neuron_direct.py

tests/jenkins/spack_setup.sh

Lines changed: 48 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
#!/bin/bash
2+
3+
# Based on spack_setup.sh from blueconfigs repo
4+
5+
echo "
6+
=====================================================================
7+
Preparing spack environment...
8+
====================================================================="
9+
10+
export SPACK_INSTALL_PREFIX="${SPACK_INSTALL_PREFIX:-${WORKSPACE}/INSTALL_HOME}"
11+
export SOFTS_DIR_PATH=$SPACK_INSTALL_PREFIX # Deprecated, but might still be reqd
12+
13+
BUILD_HOME="${WORKSPACE}/BUILD_HOME"
14+
export SPACK_ROOT="${BUILD_HOME}/spack"
15+
16+
# ENV SETUP
17+
18+
# TODO: /usr/bin was added as a quickfix due to git dependencies probs
19+
export PATH=$SPACK_ROOT/bin/spack:/usr/bin:$PATH
20+
21+
# MODULES
22+
# Use spack only modules. Last one is added by changing MODULEPATH since it might not exist yet
23+
module purge
24+
unset MODULEPATH
25+
source /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/modules.sh
26+
export MODULEPATH=$SPACK_INSTALL_PREFIX/modules/tcl/$(spack arch):$MODULEPATH
27+
28+
############################# CLONE/SETUP REPOSITORY #############################
29+
30+
install_spack() (
31+
set -e
32+
BASEDIR="$(dirname "$SPACK_ROOT")"
33+
mkdir -p $BASEDIR && cd $BASEDIR
34+
rm -rf .spack # CLEANUP SPACK CONFIGS
35+
SPACK_REPO=https://github.com/BlueBrain/spack.git
36+
SPACK_BRANCH=${SPACK_BRANCH:-"develop"}
37+
38+
echo "Installing SPACK. Cloning $SPACK_REPO $SPACK_ROOT --depth 1 -b $SPACK_BRANCH"
39+
git clone $SPACK_REPO $SPACK_ROOT --depth 1 -b $SPACK_BRANCH
40+
# Use BBP configs
41+
mkdir -p $SPACK_ROOT/etc/spack/defaults/linux
42+
cp /gpfs/bbp.cscs.ch/apps/hpc/jenkins/config/*.yaml $SPACK_ROOT/etc/spack/
43+
44+
)
45+
46+
47+
install_spack
48+

0 commit comments

Comments
 (0)