Skip to content

Instantly share code, notes, and snippets.

@bbpbuildbot
Created June 12, 2024 08:51
Show Gist options
  • Save bbpbuildbot/cbd05f6360be1b3a4dae4d7c88df6f7d to your computer and use it in GitHub Desktop.
Save bbpbuildbot/cbd05f6360be1b3a4dae4d7c88df6f7d to your computer and use it in GitHub Desktop.
Logfiles for GitLab pipeline https://bbpgitlab.epfl.ch/hpc/nmodl/-/pipelines/216390 (:no_entry:) running on GitHub PR BlueBrain/nmodl#1312.
Running with gitlab-runner 15.5.0 (0d4137b8)
 on BB5 map runner pnPo3yJy
section_start:1718179062:resolve_secrets Resolving secrets
section_end:1718179062:resolve_secrets section_start:1718179062:prepare_executor Preparing the "custom" executor
Using Custom executor with driver BB5 PROD runner v0.0.3...
BB5 PROD runner running on bbpv1.epfl.ch, version 15.5.0, user
TMPDIR is /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/tmp/custom-executor2007772679, slurm job id , CUSTOM_ENV_CI_RUNNER_TAGS is ["bb5_map"]
Runner ID 29, project root hpc, project name nmodl
Pipeline ID 216390, build ref , job ID 1316004
Build dir /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390, optional exclusive flag , optional cpus per task flag --cpus-per-task=6, optional qos flag , optional reservation flag
A slurm job will be created with name GL_J1316004_PROD_P30_CP0_C0
Job parameters: memory=30750M, cpus_per_task=6, duration=1:00:00, constraint=cpu ntasks=1 account=proj9998 user=bbpcihpcproj12 partition=prod qos= reservation=
Not executing the chown -R
sbatch: INFO: Activating auto partition selection plugin, please report errors to HPC/CS
sbatch: INFO: Job specifies cpu constraint, setting --constraint=[skl|clx]
Submitted batch job 2247616
job state: R
sbatch: sbatch -p prod -A proj9998 --ntasks=1 --cpus-per-task=6 --mem=30750M --job-name=GL_J1316004_PROD_P30_CP0_C0 -C cpu --no-requeue -D /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --time=1:00:00 --wrap="sleep infinity"
srun: srun --mpi=none --chdir=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --ntasks=1 --jobid=2247616 --cpus-per-task=6 --mem=30750M
section_end:1718179064:prepare_executor section_start:1718179064:prepare_script Preparing environment
Using git from spack modules
Running on r1i4n18 via bbpv1.epfl.ch...
section_end:1718179067:prepare_script section_start:1718179067:get_sources Getting source from Git repository
Using git from spack modules
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1718179068:get_sources section_start:1718179068:restore_cache Restoring cache
Using git from spack modules
Checking cache for build:intel-2-non_protected...
Runtime platform  arch=amd64 os=linux pid=189376 revision=58ba2b95 version=14.2.0
cache.zip is up to date 
Successfully extracted cache
section_end:1718179074:restore_cache section_start:1718179074:download_artifacts Downloading artifacts
Using git from spack modules
Downloading artifacts for spack_setup (1316003)...
Runtime platform  arch=amd64 os=linux pid=189708 revision=58ba2b95 version=14.2.0
Downloading artifacts from coordinator... ok  id=1316003 responseStatus=200 OK token=glcbt-64
section_end:1718179075:download_artifacts section_start:1718179075:step_script Executing "step_script" stage of the job script
WARNING: Starting with version 14.0 the 'build_script' stage will be replaced with 'step_script': https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26426
Using git from spack modules
$ SPACK_BUILD="${PWD}/spack-build"
$ env -0 | sort -z | xargs -0 -L 1 echo > initial_environment.env
$ . ${SPACK_ROOT}/share/spack/setup-env.sh
$ export SPACK_USER_CONFIG_PATH=${PWD}/spack-config
$ mkdir ${SPACK_USER_CONFIG_PATH}
$ cat > ${SPACK_USER_CONFIG_PATH}/config.yaml << END_SCRIPT # collapsed multi-line command
$ spack ${SPACK_EXTRA_FLAGS} config add concretizer:reuse:false
$ spack ${SPACK_EXTRA_FLAGS} config blame config
--- config:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-config/config.yaml:2 build_stage:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-config/config.yaml:3 - /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-build
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-config/config.yaml:4 source_cache: /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-source-cache
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/config.yaml:2 ccache: True
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:2 install_tree:
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:3 root: $user_cache_path/software
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:4 projections:
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:5 all: install_{compiler.name}-{compiler.version}-{target}/{name}-{version}-{hash:6}
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:7 environments_root: $user_cache_path/environments
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:9 build_jobs: 8
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:18 extensions:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:19 - $spack/bluebrain/spack-scripting
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:37 template_dirs:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:38 - $spack/share/spack/templates
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:41 license_dir: $spack/etc/spack/licenses
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:81 test_stage: $user_cache_path/test
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:94 misc_cache: $user_cache_path/cache
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:100 connect_timeout: 10
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:105 verify_ssl: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:113 suppress_gpg_warnings: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:119 install_missing_compilers: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:124 checksum: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:129 deprecated: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:134 dirty: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:142 build_language: C
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:151 locks: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:156 url_fetch_method: urllib
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:185 concretizer: clingo
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:192 db_lock_timeout: 60
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:200 package_lock_timeout: null
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:205 shared_linking:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:210 type: rpath
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:216 bind: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:221 allow_sgid: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:227 install_status: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:231 binary_index_ttl: 600
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:233 flags:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:235 keep_werror: none
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:240 aliases:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:241 concretise: concretize
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:242 containerise: containerize
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:243 rm: remove
_builtin debug: False
$ spack ${SPACK_EXTRA_FLAGS} config blame concretizer
--- concretizer:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-config/concretizer.yaml:2 reuse: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:23 targets:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:28 granularity: microarchitectures
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:32 host_compatible: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:38 unify: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:40 duplicates:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:44 strategy: minimal
$ export XDG_CONFIG_HOME=${CI_BUILDS_DIR}/J${CI_JOB_ID}_local_config
$ echo "Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (${XDG_CONFIG_HOME})"
Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390/J1316004_local_config)
$ mkdir -p "${XDG_CONFIG_HOME}/git"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = git@bbpgitlab.epfl.ch:" > "${XDG_CONFIG_HOME}/git/config"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = ssh://git@bbpgitlab.epfl.ch/" >> "${XDG_CONFIG_HOME}/git/config"
$ cat "${XDG_CONFIG_HOME}/git/config"
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = git@bbpgitlab.epfl.ch:
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = ssh://git@bbpgitlab.epfl.ch/
$ SPACK_FULL_SPEC="${SPACK_PACKAGE}${SPACK_PACKAGE_COMPILER:+%}${SPACK_PACKAGE_COMPILER} ${SPACK_PACKAGE_SPEC} ${SPACK_PACKAGE_DEPENDENCIES} ${SPACK_PACKAGE_DEPENDENCY_ON_PREVIOUS_JOB}"
$ echo "Preparing to install ${SPACK_FULL_SPEC}"
Preparing to install nmodl%oneapi +python+tests
$ if [ ${SPACK_USE_CCACHE+x} ]; then
$ module load unstable ccache
$ export CCACHE_BASEDIR=$(realpath -P ${CI_BUILDS_DIR})
$ echo CCACHE_BASEDIR=${CCACHE_BASEDIR}
CCACHE_BASEDIR=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390
$ export CCACHE_MAXSIZE=512M
$ export CCACHE_DIR="${TMPDIR}/ccache"
$ mkdir -p ${CCACHE_DIR}
$ if [ -f ${CI_PROJECT_DIR}/ccache.tar ]; then
$ tar -C "${CCACHE_DIR}" -xf "${CI_PROJECT_DIR}/ccache.tar"
$ fi
$ ccache --zero-stats
Statistics zeroed
$ ccache --show-stats --verbose
Cache directory: /nvme/bbpcihpcproj12/2247616/ccache
Config file: /nvme/bbpcihpcproj12/2247616/ccache/ccache.conf
System config file: /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ccache-4.7.4-eompz5/etc/ccache.conf
Stats updated: Wed Jun 12 09:58:00 2024
Local storage:
Cache size (GB): 0.45 / 0.51 (88.86%)
Files: 4320
Hits: 0
Misses: 0
Reads: 0
Writes: 0
$ fi
$ module load unstable git ${SPACK_EXTRA_MODULES}
$ spack ${SPACK_EXTRA_FLAGS} spec -Il ${SPACK_FULL_SPEC}
Input spec
--------------------------------
- nmodl%oneapi+python+tests
Concretized
--------------------------------
- tmos5in nmodl@git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop%oneapi@2023.2.0~ipo~legacy-unit~llvm~llvm_cuda+python+tests build_system=cmake build_type=Release generator=ninja arch=linux-rhel7-skylake
[e] yn5fbwg ^bison@3.8.2%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] pywly2v ^catch2@3.4.0%gcc@12.3.0~ipo+pic~shared build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[^] swjylul ^gmake@4.4.1%gcc@12.3.0~guile build_system=generic arch=linux-rhel7-skylake
[^] ud3echq ^cli11@2.3.2%gcc@12.3.0~ipo build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[e] b5zzpr3 ^cmake@3.27.7%gcc@12.3.0~doc+ncurses+ownlibs build_system=generic build_type=Release arch=linux-rhel7-skylake
[e] 77vzaxs ^flex@2.6.3%gcc@12.3.0+lex~nls build_system=autotools arch=linux-rhel7-skylake
[^] evtttrh ^fmt@10.1.1%gcc@12.3.0~ipo+pic~shared build_system=cmake build_type=Release cxxstd=11 generator=make arch=linux-rhel7-skylake
[e] omn6mm4 ^ninja@1.11.1%gcc@12.3.0+re2c build_system=generic arch=linux-rhel7-skylake
[^] teske2k ^nlohmann-json@3.9.1%gcc@12.3.0~ipo+multiple_headers build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[^] 5dylnca ^py-find-libpython@0.3.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 77ku3vv ^py-pip@23.1.2%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] p3xbqxj ^py-setuptools@68.0.0%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] aj3rk42 ^py-wheel@0.41.2%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] 7validy ^py-jinja2@3.1.2%gcc@12.3.0~i18n build_system=python_pip arch=linux-rhel7-skylake
[^] r3ehtmw ^py-markupsafe@2.1.3%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] wnagrhw ^py-numpy@1.26.1%gcc@12.3.0 build_system=python_pip patches=873745d arch=linux-rhel7-skylake
[e] w2ldcy2 ^intel-oneapi-mkl@2023.2.0%gcc@12.3.0~cluster+envmods~ilp64+shared build_system=generic mpi_family=none threads=none arch=linux-rhel7-skylake
[^] e533uuv ^pkgconf@1.9.5%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] 3rx3xab ^py-cython@3.0.4%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 3y7uuwr ^py-pyproject-metadata@0.7.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] tabj2mo ^py-pybind11@2.11.1%gcc@12.3.0~ipo build_system=cmake build_type=Release generator=ninja arch=linux-rhel7-skylake
[^] lrf2u3h ^py-pytest@7.3.2%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] mvxx6gh ^py-iniconfig@2.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] cbpzath ^py-hatch-vcs@0.3.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 2o7gdvi ^py-hatchling@1.21.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 6domhtg ^py-editables@0.3%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] edobf76 ^py-pathspec@0.11.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] a6ialdh ^py-trove-classifiers@2023.8.7%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] jurd5ga ^py-calver@2022.6.26%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] uqml2to ^py-packaging@23.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] h6f6feu ^py-flit-core@3.9.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 6su7kvx ^py-pluggy@1.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] sokbfzv ^py-setuptools-scm@8.0.4%gcc@12.3.0+toml build_system=python_pip arch=linux-rhel7-skylake
[e] 2sazdxk ^git@2.42.0%gcc@12.3.0+man+nls+perl+subtree~svn~tcltk build_system=autotools arch=linux-rhel7-skylake
[^] xwl5l6q ^py-tomli@2.0.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 275jtek ^py-typing-extensions@4.8.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] z5nf6n2 ^py-pytest-cov@4.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] wuxetkw ^py-coverage@7.2.6%gcc@12.3.0+toml build_system=python_pip arch=linux-rhel7-skylake
[^] 2inh3rt ^py-pyyaml@5.4.1%gcc@12.3.0+libyaml build_system=python_pip arch=linux-rhel7-skylake
[^] bzl4xcz ^libyaml@0.2.5%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] t5tovex ^py-sympy@1.11.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 4fflyib ^py-mpmath@1.2.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[e] 5wl76vp ^python@3.11.6%gcc@12.3.0+bz2+crypt+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib build_system=generic patches=13fa8bf,b0615b2,ebdca64,f2fd060 arch=linux-rhel7-skylake
[^] ihotvbs ^spdlog@1.12.0%gcc@12.3.0+fmt_external~ipo+shared build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
$ set -o pipefail
$ (spack ${SPACK_EXTRA_FLAGS} install --overwrite -y -j${SLURM_CPUS_PER_TASK} --log-format=junit --log-file=${CI_PROJECT_DIR}/install.xml --keep-stage ${SPACK_FULL_SPEC} | tee log) || install_failed=1
==> Warning: Expected user 904556 to own /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390, but it is owned by 0
==> bison@3.8.2 : has external module in ['bison/3.8.2']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/bison-3.8.2-qcx3sg (external bison-3.8.2-yn5fbwgteilgqg6b62shkhkjg3hlwmrq)
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/catch2-3.4.0-pywly2
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/cli11-2.3.2-ud3ech
==> cmake@3.27.7 : has external module in ['cmake/3.27.7']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/cmake-3.27.7-slyoes (external cmake-3.27.7-b5zzpr3mwm7jxv6bvvrs6zpeg62cfhbu)
==> flex@2.6.3 : has external module in ['flex/2.6.3']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/flex-2.6.3-edx4lf (external flex-2.6.3-77vzaxsa3g7wr3omktr4skpetx5ds4pt)
==> ninja@1.11.1 : has external module in ['ninja/1.11.1']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ninja-1.11.1-nxtlgo (external ninja-1.11.1-omn6mm4a3zsbpbkptvdwxs6kkrh6yafw)
==> python@3.11.6 : has external module in ['python/3.11.6']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/python-3.11.6-bj4i6m (external python-3.11.6-5wl76vphfvpcapfaipipf7xn2xylnc4o)
==> intel-oneapi-mkl@2023.2.0 : has external module in ['intel-oneapi-mkl/2023.2.0']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/intel-oneapi-mkl-2023.2.0-twl2n4 (external intel-oneapi-mkl-2023.2.0-w2ldcy2y2urm3uaa7omu3w7nhwsqt433)
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/libyaml-0.2.5-bzl4xc
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/fmt-10.1.1-evtttr
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/nlohmann-json-3.9.1-teske2
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-setuptools-68.0.0-p3xbqx
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-packaging-23.1-uqml2t
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-iniconfig-2.0.0-mvxx6g
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-numpy-1.26.1-wnagrh
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/spdlog-1.12.0-ihotvb
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-markupsafe-2.1.3-r3ehtm
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-mpmath-1.2.1-4fflyi
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-coverage-7.2.6-wuxetk
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pybind11-2.11.1-tabj2m
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-find-libpython-0.3.1-5dylnc
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pyyaml-5.4.1-2inh3r
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pluggy-1.0.0-6su7kv
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-jinja2-3.1.2-7valid
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-sympy-1.11.1-t5tove
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pytest-7.3.2-lrf2u3
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pytest-cov-4.0.0-z5nf6n
==> Installing nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-tmos5inlmymk7g76dtukaltlksjp5ffc [28/28]
==> No binary for nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-tmos5inlmymk7g76dtukaltlksjp5ffc found: installing from source
==> No patches needed for nmodl
==> nmodl: Executing phase: 'cmake'
==> nmodl: Executing phase: 'build'
==> nmodl: Executing phase: 'install'
==> nmodl: Successfully installed nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-tmos5inlmymk7g76dtukaltlksjp5ffc
Stage: 50.01s. Cmake: 4.05s. Build: 2m 44.75s. Install: 9.81s. Post-install: 4.71s. Total: 3m 56.47s
[+] /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/software/install_oneapi-2023.2.0-skylake/nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf_develop-tmos5i
$ set +o pipefail
$ chmod -R g+rX "${SPACK_BUILD}"
$ if [[ ${install_failed} == 1 ]]; then exit 1; fi
$ SPACK_INSTALLED_HASH=$(spack ${SPACK_EXTRA_FLAGS} find --format "{hash}" /$(sed -ne '${s/.*-//;p}' log))
$ echo "Determined the installed hash to be ${SPACK_INSTALLED_HASH}"
Determined the installed hash to be tmos5inlmymk7g76dtukaltlksjp5ffc
$ SPACK_STAGE_DIR=$(spack location -s "${SPACK_FULL_SPEC}")
$ SPACK_BUILD_DIR=$(spack location -b "${SPACK_FULL_SPEC}")
$ SPACK_SOURCE_DIR=${SPACK_STAGE_DIR}/spack-src
$ if [ ${SPACK_USE_CCACHE+x} ]; then
$ ccache --cleanup
$ ccache --show-stats --verbose
Cache directory: /nvme/bbpcihpcproj12/2247616/ccache
Config file: /nvme/bbpcihpcproj12/2247616/ccache/ccache.conf
System config file: /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ccache-4.7.4-eompz5/etc/ccache.conf
Stats updated: Wed Jun 12 10:05:01 2024
Cacheable calls: 144 / 174 (82.76%)
Hits: 132 / 144 (91.67%)
Direct: 28 / 132 (21.21%)
Preprocessed: 104 / 132 (78.79%)
Misses: 12 / 144 ( 8.33%)
Uncacheable calls: 30 / 174 (17.24%)
Called for linking: 28 / 30 (93.33%)
No input file: 2 / 30 ( 6.67%)
Successful lookups:
Direct: 28 / 144 (19.44%)
Preprocessed: 104 / 116 (89.66%)
Local storage:
Cache size (GB): 0.46 / 0.51 (89.08%)
Files: 4334
Hits: 132 / 144 (91.67%)
Misses: 12 / 144 ( 8.33%)
Reads: 288
Writes: 14
$ tar -C "${CCACHE_DIR}" -cf "${CI_PROJECT_DIR}/ccache.tar" .
$ fi
$ touch ${SPACK_STAGE_DIR}/spack-configure-args.txt
$ cp ${SPACK_STAGE_DIR}/spack-{build-env,build-out,configure-args}.txt ${CI_PROJECT_DIR}/
$ echo "SPACK_BUILD_DIR=${SPACK_BUILD_DIR}" > ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_FULL_SPEC=${SPACK_FULL_SPEC}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_SOURCE_DIR=${SPACK_SOURCE_DIR}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_INSTALLED_HASH=${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ SPACK_PACKAGE_SLUGIFY=$(echo -n ${SPACK_PACKAGE} | tr -c '[:alnum:]' '_' | tr '[:lower:]' '[:upper:]')
$ echo "${SPACK_PACKAGE_SLUGIFY}_INSTALLED_HASH=${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_PACKAGE_DEPENDENCY_ON_PREVIOUS_JOB=^/${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ num_failures=$(module load unstable python-dev; python -c "from lxml import etree; xml = etree.parse('${CI_PROJECT_DIR}/install.xml'); print(sum(1 for _ in xml.getroot().iter('failure')) + sum(1 for _ in xml.getroot().iter('error')))")
$ if [[ ${num_failures} > 0 ]]; then exit ${num_failures}; fi
section_end:1718179502:step_script section_start:1718179502:archive_cache Saving cache for successful job
Using git from spack modules
Creating cache build:intel-2-non_protected...
Runtime platform  arch=amd64 os=linux pid=203912 revision=58ba2b95 version=14.2.0
ccache.tar: found 1 matching files and directories
Uploading cache.zip to https://bbpobjectstorage.epfl.ch/gitlab-runners-cache/project/30/build%3Aintel-2-non_protected
Created cache
section_end:1718179527:archive_cache section_start:1718179527:upload_artifacts_on_success Uploading artifacts for successful job
Using git from spack modules
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=204325 revision=58ba2b95 version=14.2.0
install.xml: found 1 matching files and directories
spack_build_info.env: found 1 matching files and directories
spack_clone_variables.env: found 1 matching files and directories
initial_environment.env: found 1 matching files and directories
spack-build-env.txt: found 1 matching files and directories
spack-build-out.txt: found 1 matching files and directories
spack-configure-args.txt: found 1 matching files and directories
Uploading artifacts as "archive" to coordinator... ok id=1316004 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=204359 revision=58ba2b95 version=14.2.0
install.xml: found 1 matching files and directories
Uploading artifacts as "junit" to coordinator... ok id=1316004 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=204386 revision=58ba2b95 version=14.2.0
spack_build_info.env: found 1 matching files and directories
spack_clone_variables.env: found 1 matching files and directories
Uploading artifacts as "dotenv" to coordinator... ok id=1316004 responseStatus=201 Created token=glcbt-64
section_end:1718179529:upload_artifacts_on_success section_start:1718179529:cleanup_file_variables Cleaning up project directory and file based variables
Using git from spack modules
section_end:1718179530:cleanup_file_variables Job succeeded
Running with gitlab-runner 15.5.0 (0d4137b8)
 on BB5 map runner pnPo3yJy
section_start:1718179063:resolve_secrets Resolving secrets
section_end:1718179063:resolve_secrets section_start:1718179063:prepare_executor Preparing the "custom" executor
Using Custom executor with driver BB5 PROD runner v0.0.3...
BB5 PROD runner running on bbpv1.epfl.ch, version 15.5.0, user
TMPDIR is /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/tmp/custom-executor1774275752, slurm job id , CUSTOM_ENV_CI_RUNNER_TAGS is ["bb5_map"]
Runner ID 29, project root hpc, project name nmodl
Pipeline ID 216390, build ref , job ID 1316005
Build dir /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390, optional exclusive flag , optional cpus per task flag --cpus-per-task=6, optional qos flag , optional reservation flag
A slurm job will be created with name GL_J1316005_PROD_P30_CP1_C1
Job parameters: memory=30750M, cpus_per_task=6, duration=1:00:00, constraint=cpu ntasks=1 account=proj9998 user=bbpcihpcproj12 partition=prod qos= reservation=
Not executing the chown -R
sbatch: INFO: Activating auto partition selection plugin, please report errors to HPC/CS
sbatch: INFO: Job specifies cpu constraint, setting --constraint=[skl|clx]
Submitted batch job 2247617
job state: R
sbatch: sbatch -p prod -A proj9998 --ntasks=1 --cpus-per-task=6 --mem=30750M --job-name=GL_J1316005_PROD_P30_CP1_C1 -C cpu --no-requeue -D /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --time=1:00:00 --wrap="sleep infinity"
srun: srun --mpi=none --chdir=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --ntasks=1 --jobid=2247617 --cpus-per-task=6 --mem=30750M
section_end:1718179064:prepare_executor section_start:1718179064:prepare_script Preparing environment
Using git from spack modules
Running on r1i4n18 via bbpv1.epfl.ch...
section_end:1718179067:prepare_script section_start:1718179067:get_sources Getting source from Git repository
Using git from spack modules
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1718179068:get_sources section_start:1718179068:restore_cache Restoring cache
Using git from spack modules
Checking cache for build:nvhpc-2-non_protected...
Runtime platform  arch=amd64 os=linux pid=189330 revision=58ba2b95 version=14.2.0
cache.zip is up to date 
Successfully extracted cache
section_end:1718179074:restore_cache section_start:1718179074:download_artifacts Downloading artifacts
Using git from spack modules
Downloading artifacts for spack_setup (1316003)...
Runtime platform  arch=amd64 os=linux pid=189665 revision=58ba2b95 version=14.2.0
Downloading artifacts from coordinator... ok  id=1316003 responseStatus=200 OK token=glcbt-64
section_end:1718179075:download_artifacts section_start:1718179075:step_script Executing "step_script" stage of the job script
WARNING: Starting with version 14.0 the 'build_script' stage will be replaced with 'step_script': https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26426
Using git from spack modules
$ SPACK_BUILD="${PWD}/spack-build"
$ env -0 | sort -z | xargs -0 -L 1 echo > initial_environment.env
$ . ${SPACK_ROOT}/share/spack/setup-env.sh
$ export SPACK_USER_CONFIG_PATH=${PWD}/spack-config
$ mkdir ${SPACK_USER_CONFIG_PATH}
$ cat > ${SPACK_USER_CONFIG_PATH}/config.yaml << END_SCRIPT # collapsed multi-line command
$ spack ${SPACK_EXTRA_FLAGS} config add concretizer:reuse:false
$ spack ${SPACK_EXTRA_FLAGS} config blame config
--- config:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-config/config.yaml:2 build_stage:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-config/config.yaml:3 - /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-build
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-config/config.yaml:4 source_cache: /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-source-cache
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/config.yaml:2 ccache: True
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:2 install_tree:
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:3 root: $user_cache_path/software
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:4 projections:
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:5 all: install_{compiler.name}-{compiler.version}-{target}/{name}-{version}-{hash:6}
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:7 environments_root: $user_cache_path/environments
/gpfs/bbp.cscs.ch/ssd/apps/bsd//config/config.yaml:9 build_jobs: 8
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:18 extensions:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:19 - $spack/bluebrain/spack-scripting
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:37 template_dirs:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:38 - $spack/share/spack/templates
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:41 license_dir: $spack/etc/spack/licenses
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:81 test_stage: $user_cache_path/test
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:94 misc_cache: $user_cache_path/cache
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:100 connect_timeout: 10
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:105 verify_ssl: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:113 suppress_gpg_warnings: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:119 install_missing_compilers: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:124 checksum: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:129 deprecated: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:134 dirty: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:142 build_language: C
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:151 locks: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:156 url_fetch_method: urllib
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:185 concretizer: clingo
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:192 db_lock_timeout: 60
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:200 package_lock_timeout: null
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:205 shared_linking:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:210 type: rpath
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:216 bind: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:221 allow_sgid: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:227 install_status: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:231 binary_index_ttl: 600
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:233 flags:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:235 keep_werror: none
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:240 aliases:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:241 concretise: concretize
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:242 containerise: containerize
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/config.yaml:243 rm: remove
_builtin debug: False
$ spack ${SPACK_EXTRA_FLAGS} config blame concretizer
--- concretizer:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-config/concretizer.yaml:2 reuse: False
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:23 targets:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:28 granularity: microarchitectures
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:32 host_compatible: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:38 unify: True
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:40 duplicates:
/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003/spack/etc/spack/defaults/concretizer.yaml:44 strategy: minimal
$ export XDG_CONFIG_HOME=${CI_BUILDS_DIR}/J${CI_JOB_ID}_local_config
$ echo "Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (${XDG_CONFIG_HOME})"
Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390/J1316005_local_config)
$ mkdir -p "${XDG_CONFIG_HOME}/git"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = git@bbpgitlab.epfl.ch:" > "${XDG_CONFIG_HOME}/git/config"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = ssh://git@bbpgitlab.epfl.ch/" >> "${XDG_CONFIG_HOME}/git/config"
$ cat "${XDG_CONFIG_HOME}/git/config"
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = git@bbpgitlab.epfl.ch:
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = ssh://git@bbpgitlab.epfl.ch/
$ SPACK_FULL_SPEC="${SPACK_PACKAGE}${SPACK_PACKAGE_COMPILER:+%}${SPACK_PACKAGE_COMPILER} ${SPACK_PACKAGE_SPEC} ${SPACK_PACKAGE_DEPENDENCIES} ${SPACK_PACKAGE_DEPENDENCY_ON_PREVIOUS_JOB}"
$ echo "Preparing to install ${SPACK_FULL_SPEC}"
Preparing to install nmodl%nvhpc +python+tests ^bison%gcc^flex%gcc^py-jinja2%gcc^py-sympy%gcc^py-pyyaml%gcc
$ if [ ${SPACK_USE_CCACHE+x} ]; then
$ module load unstable ccache
$ export CCACHE_BASEDIR=$(realpath -P ${CI_BUILDS_DIR})
$ echo CCACHE_BASEDIR=${CCACHE_BASEDIR}
CCACHE_BASEDIR=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390
$ export CCACHE_MAXSIZE=512M
$ export CCACHE_DIR="${TMPDIR}/ccache"
$ mkdir -p ${CCACHE_DIR}
$ if [ -f ${CI_PROJECT_DIR}/ccache.tar ]; then
$ tar -C "${CCACHE_DIR}" -xf "${CI_PROJECT_DIR}/ccache.tar"
$ fi
$ ccache --zero-stats
Statistics zeroed
$ ccache --show-stats --verbose
Cache directory: /nvme/bbpcihpcproj12/2247617/ccache
Config file: /nvme/bbpcihpcproj12/2247617/ccache/ccache.conf
System config file: /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ccache-4.7.4-eompz5/etc/ccache.conf
Stats updated: Wed Jun 12 09:58:00 2024
Local storage:
Cache size (GB): 0.44 / 0.51 (86.87%)
Files: 3752
Hits: 0
Misses: 0
Reads: 0
Writes: 0
$ fi
$ module load unstable git ${SPACK_EXTRA_MODULES}
$ spack ${SPACK_EXTRA_FLAGS} spec -Il ${SPACK_FULL_SPEC}
Input spec
--------------------------------
- nmodl%nvhpc+python+tests
- ^bison%gcc
- ^flex%gcc
- ^py-jinja2%gcc
- ^py-pyyaml%gcc
- ^py-sympy%gcc
Concretized
--------------------------------
- gwipmw4 nmodl@git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop%nvhpc@23.1~ipo~legacy-unit~llvm~llvm_cuda+python+tests build_system=cmake build_type=Release generator=ninja arch=linux-rhel7-skylake
[e] yn5fbwg ^bison@3.8.2%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] pywly2v ^catch2@3.4.0%gcc@12.3.0~ipo+pic~shared build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[^] swjylul ^gmake@4.4.1%gcc@12.3.0~guile build_system=generic arch=linux-rhel7-skylake
[^] ud3echq ^cli11@2.3.2%gcc@12.3.0~ipo build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[e] b5zzpr3 ^cmake@3.27.7%gcc@12.3.0~doc+ncurses+ownlibs build_system=generic build_type=Release arch=linux-rhel7-skylake
[e] 77vzaxs ^flex@2.6.3%gcc@12.3.0+lex~nls build_system=autotools arch=linux-rhel7-skylake
[^] evtttrh ^fmt@10.1.1%gcc@12.3.0~ipo+pic~shared build_system=cmake build_type=Release cxxstd=11 generator=make arch=linux-rhel7-skylake
[e] omn6mm4 ^ninja@1.11.1%gcc@12.3.0+re2c build_system=generic arch=linux-rhel7-skylake
[^] teske2k ^nlohmann-json@3.9.1%gcc@12.3.0~ipo+multiple_headers build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
[^] 5dylnca ^py-find-libpython@0.3.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 77ku3vv ^py-pip@23.1.2%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] p3xbqxj ^py-setuptools@68.0.0%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] aj3rk42 ^py-wheel@0.41.2%gcc@12.3.0 build_system=generic arch=linux-rhel7-skylake
[^] 7validy ^py-jinja2@3.1.2%gcc@12.3.0~i18n build_system=python_pip arch=linux-rhel7-skylake
[^] r3ehtmw ^py-markupsafe@2.1.3%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] wnagrhw ^py-numpy@1.26.1%gcc@12.3.0 build_system=python_pip patches=873745d arch=linux-rhel7-skylake
[e] w2ldcy2 ^intel-oneapi-mkl@2023.2.0%gcc@12.3.0~cluster+envmods~ilp64+shared build_system=generic mpi_family=none threads=none arch=linux-rhel7-skylake
[^] e533uuv ^pkgconf@1.9.5%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] 3rx3xab ^py-cython@3.0.4%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 3y7uuwr ^py-pyproject-metadata@0.7.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] tabj2mo ^py-pybind11@2.11.1%gcc@12.3.0~ipo build_system=cmake build_type=Release generator=ninja arch=linux-rhel7-skylake
[^] lrf2u3h ^py-pytest@7.3.2%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] mvxx6gh ^py-iniconfig@2.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] cbpzath ^py-hatch-vcs@0.3.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 2o7gdvi ^py-hatchling@1.21.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 6domhtg ^py-editables@0.3%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] edobf76 ^py-pathspec@0.11.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] a6ialdh ^py-trove-classifiers@2023.8.7%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] jurd5ga ^py-calver@2022.6.26%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] uqml2to ^py-packaging@23.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] h6f6feu ^py-flit-core@3.9.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 6su7kvx ^py-pluggy@1.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] sokbfzv ^py-setuptools-scm@8.0.4%gcc@12.3.0+toml build_system=python_pip arch=linux-rhel7-skylake
[e] 2sazdxk ^git@2.42.0%gcc@12.3.0+man+nls+perl+subtree~svn~tcltk build_system=autotools arch=linux-rhel7-skylake
[^] xwl5l6q ^py-tomli@2.0.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 275jtek ^py-typing-extensions@4.8.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] z5nf6n2 ^py-pytest-cov@4.0.0%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] wuxetkw ^py-coverage@7.2.6%gcc@12.3.0+toml build_system=python_pip arch=linux-rhel7-skylake
[^] 2inh3rt ^py-pyyaml@5.4.1%gcc@12.3.0+libyaml build_system=python_pip arch=linux-rhel7-skylake
[^] bzl4xcz ^libyaml@0.2.5%gcc@12.3.0 build_system=autotools arch=linux-rhel7-skylake
[^] t5tovex ^py-sympy@1.11.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[^] 4fflyib ^py-mpmath@1.2.1%gcc@12.3.0 build_system=python_pip arch=linux-rhel7-skylake
[e] 5wl76vp ^python@3.11.6%gcc@12.3.0+bz2+crypt+ctypes+dbm~debug+libxml2+lzma~nis~optimizations+pic+pyexpat+pythoncmd+readline+shared+sqlite3+ssl~tkinter+uuid+zlib build_system=generic patches=13fa8bf,b0615b2,ebdca64,f2fd060 arch=linux-rhel7-skylake
[^] ihotvbs ^spdlog@1.12.0%gcc@12.3.0+fmt_external~ipo+shared build_system=cmake build_type=Release generator=make arch=linux-rhel7-skylake
$ set -o pipefail
$ (spack ${SPACK_EXTRA_FLAGS} install --overwrite -y -j${SLURM_CPUS_PER_TASK} --log-format=junit --log-file=${CI_PROJECT_DIR}/install.xml --keep-stage ${SPACK_FULL_SPEC} | tee log) || install_failed=1
==> Warning: Expected user 904556 to own /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390, but it is owned by 0
==> bison@3.8.2 : has external module in ['bison/3.8.2']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/bison-3.8.2-qcx3sg (external bison-3.8.2-yn5fbwgteilgqg6b62shkhkjg3hlwmrq)
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/catch2-3.4.0-pywly2
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/cli11-2.3.2-ud3ech
==> cmake@3.27.7 : has external module in ['cmake/3.27.7']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/cmake-3.27.7-slyoes (external cmake-3.27.7-b5zzpr3mwm7jxv6bvvrs6zpeg62cfhbu)
==> flex@2.6.3 : has external module in ['flex/2.6.3']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/flex-2.6.3-edx4lf (external flex-2.6.3-77vzaxsa3g7wr3omktr4skpetx5ds4pt)
==> ninja@1.11.1 : has external module in ['ninja/1.11.1']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ninja-1.11.1-nxtlgo (external ninja-1.11.1-omn6mm4a3zsbpbkptvdwxs6kkrh6yafw)
==> python@3.11.6 : has external module in ['python/3.11.6']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/python-3.11.6-bj4i6m (external python-3.11.6-5wl76vphfvpcapfaipipf7xn2xylnc4o)
==> intel-oneapi-mkl@2023.2.0 : has external module in ['intel-oneapi-mkl/2023.2.0']
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/intel-oneapi-mkl-2023.2.0-twl2n4 (external intel-oneapi-mkl-2023.2.0-w2ldcy2y2urm3uaa7omu3w7nhwsqt433)
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/libyaml-0.2.5-bzl4xc
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/nlohmann-json-3.9.1-teske2
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/fmt-10.1.1-evtttr
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pybind11-2.11.1-tabj2m
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-packaging-23.1-uqml2t
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-setuptools-68.0.0-p3xbqx
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-iniconfig-2.0.0-mvxx6g
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-numpy-1.26.1-wnagrh
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/spdlog-1.12.0-ihotvb
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-coverage-7.2.6-wuxetk
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-markupsafe-2.1.3-r3ehtm
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-find-libpython-0.3.1-5dylnc
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pluggy-1.0.0-6su7kv
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-mpmath-1.2.1-4fflyi
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pyyaml-5.4.1-2inh3r
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-jinja2-3.1.2-7valid
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pytest-7.3.2-lrf2u3
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-sympy-1.11.1-t5tove
[+] /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_applications/install_gcc-12.3.0-skylake/py-pytest-cov-4.0.0-z5nf6n
==> Installing nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-gwipmw4dexsywj7x7gvw2qeolqzk66h6 [28/28]
==> No binary for nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-gwipmw4dexsywj7x7gvw2qeolqzk66h6 found: installing from source
==> No patches needed for nmodl
==> nmodl: Executing phase: 'cmake'
==> nmodl: Executing phase: 'build'
==> nmodl: Executing phase: 'install'
==> nmodl: Successfully installed nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop-gwipmw4dexsywj7x7gvw2qeolqzk66h6
Stage: 48.83s. Cmake: 3.01s. Build: 4m 39.17s. Install: 5.69s. Post-install: 3.12s. Total: 5m 41.43s
[+] /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/software/install_nvhpc-23.1-skylake/nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf_develop-gwipmw
$ set +o pipefail
$ chmod -R g+rX "${SPACK_BUILD}"
$ if [[ ${install_failed} == 1 ]]; then exit 1; fi
$ SPACK_INSTALLED_HASH=$(spack ${SPACK_EXTRA_FLAGS} find --format "{hash}" /$(sed -ne '${s/.*-//;p}' log))
$ echo "Determined the installed hash to be ${SPACK_INSTALLED_HASH}"
Determined the installed hash to be gwipmw4dexsywj7x7gvw2qeolqzk66h6
$ SPACK_STAGE_DIR=$(spack location -s "${SPACK_FULL_SPEC}")
$ SPACK_BUILD_DIR=$(spack location -b "${SPACK_FULL_SPEC}")
$ SPACK_SOURCE_DIR=${SPACK_STAGE_DIR}/spack-src
$ if [ ${SPACK_USE_CCACHE+x} ]; then
$ ccache --cleanup
$ ccache --show-stats --verbose
Cache directory: /nvme/bbpcihpcproj12/2247617/ccache
Config file: /nvme/bbpcihpcproj12/2247617/ccache/ccache.conf
System config file: /gpfs/bbp.cscs.ch/ssd/apps/bsd/2024-02-01/stage_externals/install_gcc-12.3.0-skylake/ccache-4.7.4-eompz5/etc/ccache.conf
Stats updated: Wed Jun 12 10:06:38 2024
Cacheable calls: 142 / 165 (86.06%)
Hits: 130 / 142 (91.55%)
Direct: 26 / 130 (20.00%)
Preprocessed: 104 / 130 (80.00%)
Misses: 12 / 142 ( 8.45%)
Uncacheable calls: 23 / 165 (13.94%)
Called for linking: 23 / 23 (100.0%)
Successful lookups:
Direct: 26 / 142 (18.31%)
Preprocessed: 104 / 116 (89.66%)
Local storage:
Cache size (GB): 0.44 / 0.51 (86.21%)
Files: 3738
Cleanups: 1
Hits: 130 / 142 (91.55%)
Misses: 12 / 142 ( 8.45%)
Reads: 284
Writes: 14
$ tar -C "${CCACHE_DIR}" -cf "${CI_PROJECT_DIR}/ccache.tar" .
$ fi
$ touch ${SPACK_STAGE_DIR}/spack-configure-args.txt
$ cp ${SPACK_STAGE_DIR}/spack-{build-env,build-out,configure-args}.txt ${CI_PROJECT_DIR}/
$ echo "SPACK_BUILD_DIR=${SPACK_BUILD_DIR}" > ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_FULL_SPEC=${SPACK_FULL_SPEC}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_SOURCE_DIR=${SPACK_SOURCE_DIR}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_INSTALLED_HASH=${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ SPACK_PACKAGE_SLUGIFY=$(echo -n ${SPACK_PACKAGE} | tr -c '[:alnum:]' '_' | tr '[:lower:]' '[:upper:]')
$ echo "${SPACK_PACKAGE_SLUGIFY}_INSTALLED_HASH=${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ echo "SPACK_PACKAGE_DEPENDENCY_ON_PREVIOUS_JOB=^/${SPACK_INSTALLED_HASH}" >> ${CI_PROJECT_DIR}/spack_build_info.env
$ num_failures=$(module load unstable python-dev; python -c "from lxml import etree; xml = etree.parse('${CI_PROJECT_DIR}/install.xml'); print(sum(1 for _ in xml.getroot().iter('failure')) + sum(1 for _ in xml.getroot().iter('error')))")
$ if [[ ${num_failures} > 0 ]]; then exit ${num_failures}; fi
section_end:1718179601:step_script section_start:1718179601:archive_cache Saving cache for successful job
Using git from spack modules
srun: Job 2247617 step creation temporarily disabled, retrying (Requested nodes are busy)
srun: Step created for job 2247617
Creating cache build:nvhpc-2-non_protected...
Runtime platform  arch=amd64 os=linux pid=209300 revision=58ba2b95 version=14.2.0
ccache.tar: found 1 matching files and directories
Uploading cache.zip to https://bbpobjectstorage.epfl.ch/gitlab-runners-cache/project/30/build%3Anvhpc-2-non_protected
Created cache
section_end:1718179649:archive_cache section_start:1718179649:upload_artifacts_on_success Uploading artifacts for successful job
Using git from spack modules
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=210863 revision=58ba2b95 version=14.2.0
install.xml: found 1 matching files and directories
spack_build_info.env: found 1 matching files and directories
spack_clone_variables.env: found 1 matching files and directories
initial_environment.env: found 1 matching files and directories
spack-build-env.txt: found 1 matching files and directories
spack-build-out.txt: found 1 matching files and directories
spack-configure-args.txt: found 1 matching files and directories
Uploading artifacts as "archive" to coordinator... ok id=1316005 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=210895 revision=58ba2b95 version=14.2.0
install.xml: found 1 matching files and directories
Uploading artifacts as "junit" to coordinator... ok id=1316005 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=210920 revision=58ba2b95 version=14.2.0
spack_build_info.env: found 1 matching files and directories
spack_clone_variables.env: found 1 matching files and directories
Uploading artifacts as "dotenv" to coordinator... ok id=1316005 responseStatus=201 Created token=glcbt-64
section_end:1718179651:upload_artifacts_on_success section_start:1718179651:cleanup_file_variables Cleaning up project directory and file based variables
Using git from spack modules
section_end:1718179652:cleanup_file_variables Job succeeded
Running with gitlab-runner 15.5.0 (0d4137b8)
 on BB5 map runner pnPo3yJy
section_start:1718178942:resolve_secrets Resolving secrets
section_end:1718178942:resolve_secrets section_start:1718178942:prepare_executor Preparing the "custom" executor
Using Custom executor with driver BB5 PROD runner v0.0.3...
BB5 PROD runner running on bbpv1.epfl.ch, version 15.5.0, user
TMPDIR is /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/tmp/custom-executor1026703435, slurm job id , CUSTOM_ENV_CI_RUNNER_TAGS is ["bb5_map"]
Runner ID 29, project root hpc, project name nmodl
Pipeline ID 216390, build ref , job ID 1316003
Build dir /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390, optional exclusive flag , optional cpus per task flag --cpus-per-task=6, optional qos flag , optional reservation flag
A slurm job will be created with name GL_J1316003_PROD_P30_CP0_C1
Job parameters: memory=30750M, cpus_per_task=6, duration=1:00:00, constraint=cpu ntasks=1 account=proj9998 user=bbpcihpcproj12 partition=prod qos= reservation=
Not executing the chown -R
sbatch: INFO: Activating auto partition selection plugin, please report errors to HPC/CS
sbatch: INFO: Job specifies cpu constraint, setting --constraint=[skl|clx]
Submitted batch job 2247610
job state: R
sbatch: sbatch -p prod -A proj9998 --ntasks=1 --cpus-per-task=6 --mem=30750M --job-name=GL_J1316003_PROD_P30_CP0_C1 -C cpu --no-requeue -D /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --time=1:00:00 --wrap="sleep infinity"
srun: srun --mpi=none --chdir=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --ntasks=1 --jobid=2247610 --cpus-per-task=6 --mem=30750M
section_end:1718178944:prepare_executor section_start:1718178944:prepare_script Preparing environment
Using git from spack modules
Running on r1i7n30 via bbpv1.epfl.ch...
section_end:1718178948:prepare_script section_start:1718178948:get_sources Getting source from Git repository
Using git from spack modules
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1718178949:get_sources section_start:1718178949:step_script Executing "step_script" stage of the job script
WARNING: Starting with version 14.0 the 'build_script' stage will be replaced with 'step_script': https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26426
Using git from spack modules
$ if [[ -n "${SPACK_ENV_FILE_URL}" && "${PARSE_GITHUB_PR_DESCRIPTIONS,,}" == "true" ]]; then
$ cat > parse_description.py << END_SCRIPT # collapsed multi-line command
$ cat parse_description.py
import os
import re
import requests
pr_info = requests.get("https://api.github.com/repos/{}/pulls/{}".format(
os.environ['CI_EXTERNAL_PULL_REQUEST_TARGET_REPOSITORY'],
os.environ['CI_EXTERNAL_PULL_REQUEST_IID']),
headers={'Accept': 'application/vnd.github.v3+json'})
pr_body = pr_info.json()["body"]
# match something like NEURON_BRANCH=foo/bar
# special case for SPACK_DEPLOYMENT_SUFFIX=foo/bar
pat = re.compile('^([A-Z0-9_]+)_([A-Z]+)=([A-Z0-9\-\_\/\+\.]+)$', re.IGNORECASE)
def parse_term(m):
ref_type = m.group(2).lower()
is_deployment_suffix = ref_type == 'suffix' and m.group(1).lower() == 'spack_deployment'
if ref_type not in {'branch', 'tag', 'ref'} and not is_deployment_suffix: return
print(m.group(1).upper() + '_' + ref_type.upper() + '=' + m.group(3))
if pr_body is not None:
for pr_body_line in pr_body.splitlines():
if not pr_body_line.startswith('CI_BRANCHES:'): continue
for config_term in pr_body_line[12:].split(','):
pat.sub(parse_term, config_term)
$ (module load unstable python-dev; python parse_description.py) > input_variables.env
$ else
$ cat input_variables.env
$ for var_to_unset in $(sed 's/^\(.*\?\)_\(BRANCH\|COMMIT\|TAG\)=.*$/\1_BRANCH\n\1_COMMIT\n\1_TAG/' input_variables.env); do # collapsed multi-line command
$ set -o allexport
$ . input_variables.env
$ set +o allexport
$ unset MODULEPATH
$ . /gpfs/bbp.cscs.ch/ssd/apps/bsd/${SPACK_DEPLOYMENT_SUFFIX}/config/modules.sh
$ echo "MODULEPATH=${MODULEPATH}" > spack_clone_variables.env
$ echo Preparing to clone Spack into ${PWD}
Preparing to clone Spack into /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316003
$ if [[ -z "${SPACK_BRANCH}" && ( -n "${SPACK_COMMIT}" || -n "${SPACK_TAG}" ) ]]; then
$ echo Checking out the ${SPACK_BRANCH} of Spack...
Checking out the develop of Spack...
$ module load unstable git
$ git clone -c feature.manyFiles=true --depth 1 --single-branch --branch ${SPACK_BRANCH} ${SPACK_URL} spack
Cloning into 'spack'...
Updating files: 13% (1537/11305) Updating files: 14% (1583/11305) Updating files: 15% (1696/11305) Updating files: 16% (1809/11305) Updating files: 17% (1922/11305) Updating files: 18% (2035/11305) Updating files: 19% (2148/11305) Updating files: 20% (2261/11305) Updating files: 21% (2375/11305) Updating files: 21% (2404/11305) Updating files: 22% (2488/11305) Updating files: 23% (2601/11305) Updating files: 24% (2714/11305) Updating files: 25% (2827/11305) Updating files: 26% (2940/11305) Updating files: 27% (3053/11305) Updating files: 28% (3166/11305) Updating files: 29% (3279/11305) Updating files: 30% (3392/11305) Updating files: 31% (3505/11305) Updating files: 32% (3618/11305) Updating files: 33% (3731/11305) Updating files: 33% (3812/11305) Updating files: 34% (3844/11305) Updating files: 35% (3957/11305) Updating files: 36% (4070/11305) Updating files: 37% (4183/11305) Updating files: 38% (4296/11305) Updating files: 39% (4409/11305) Updating files: 40% (4522/11305) Updating files: 41% (4636/11305) Updating files: 42% (4749/11305) Updating files: 42% (4773/11305) Updating files: 43% (4862/11305) Updating files: 44% (4975/11305) Updating files: 45% (5088/11305) Updating files: 46% (5201/11305) Updating files: 47% (5314/11305) Updating files: 48% (5427/11305) Updating files: 49% (5540/11305) Updating files: 50% (5653/11305) Updating files: 51% (5766/11305) Updating files: 52% (5879/11305) Updating files: 52% (5961/11305) Updating files: 53% (5992/11305) Updating files: 54% (6105/11305) Updating files: 55% (6218/11305) Updating files: 56% (6331/11305) Updating files: 57% (6444/11305) Updating files: 58% (6557/11305) Updating files: 59% (6670/11305) Updating files: 60% (6783/11305) Updating files: 61% (6897/11305) Updating files: 61% (6983/11305) Updating files: 62% (7010/11305) Updating files: 63% (7123/11305) Updating files: 64% (7236/11305) Updating files: 65% (7349/11305) Updating files: 66% (7462/11305) Updating files: 67% (7575/11305) Updating files: 68% (7688/11305) Updating files: 69% (7801/11305) Updating files: 70% (7914/11305) Updating files: 71% (8027/11305) Updating files: 72% (8140/11305) Updating files: 73% (8253/11305) Updating files: 74% (8366/11305) Updating files: 74% (8397/11305) Updating files: 75% (8479/11305) Updating files: 76% (8592/11305) Updating files: 77% (8705/11305) Updating files: 78% (8818/11305) Updating files: 79% (8931/11305) Updating files: 80% (9044/11305) Updating files: 81% (9158/11305) Updating files: 82% (9271/11305) Updating files: 83% (9384/11305) Updating files: 84% (9497/11305) Updating files: 85% (9610/11305) Updating files: 86% (9723/11305) Updating files: 86% (9805/11305) Updating files: 87% (9836/11305) Updating files: 88% (9949/11305) Updating files: 89% (10062/11305) Updating files: 90% (10175/11305) Updating files: 91% (10288/11305) Updating files: 92% (10401/11305) Updating files: 93% (10514/11305) Updating files: 94% (10627/11305) Updating files: 95% (10740/11305) Updating files: 96% (10853/11305) Updating files: 97% (10966/11305) Updating files: 98% (11079/11305) Updating files: 99% (11192/11305) Updating files: 99% (11209/11305) Updating files: 100% (11305/11305) Updating files: 100% (11305/11305), done.
$ export SPACK_ROOT=${PWD}/spack
$ export SPACK_RESOLVED_COMMIT=$(cd "${SPACK_ROOT}" && git rev-parse HEAD)
$ export SPACK_USER_CACHE_PATH="${CI_BUILDS_DIR}"
$ export SPACK_SYSTEM_CONFIG_PATH="/gpfs/bbp.cscs.ch/ssd/apps/bsd/${SPACK_DEPLOYMENT_SUFFIX}/config"
$ echo "SPACK_ROOT=${SPACK_ROOT}" >> spack_clone_variables.env
$ echo "SPACK_RESOLVED_COMMIT=${SPACK_RESOLVED_COMMIT}" >> spack_clone_variables.env
$ echo "SPACK_USER_CACHE_PATH=${SPACK_USER_CACHE_PATH}" >> spack_clone_variables.env
$ echo "SPACK_SYSTEM_CONFIG_PATH=${SPACK_SYSTEM_CONFIG_PATH}" >> spack_clone_variables.env
$ . ${SPACK_ROOT}/share/spack/setup-env.sh
$ export XDG_CONFIG_HOME=${CI_BUILDS_DIR}/J${CI_JOB_ID}_local_config
$ echo "Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (${XDG_CONFIG_HOME})"
Configuring git to use CI_JOB_TOKEN to access git@bbpgitlab.epfl.ch (/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390/J1316003_local_config)
$ mkdir -p "${XDG_CONFIG_HOME}/git"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = git@bbpgitlab.epfl.ch:" > "${XDG_CONFIG_HOME}/git/config"
$ echo -e "[url \"https://gitlab-ci-token:${CI_JOB_TOKEN}@bbpgitlab.epfl.ch/\"]\n insteadOf = ssh://git@bbpgitlab.epfl.ch/" >> "${XDG_CONFIG_HOME}/git/config"
$ cat "${XDG_CONFIG_HOME}/git/config"
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = git@bbpgitlab.epfl.ch:
[url "https://gitlab-ci-token:[MASKED]@bbpgitlab.epfl.ch/"]
insteadOf = ssh://git@bbpgitlab.epfl.ch/
$ env -0 | sed -nz '/^CUSTOM_ENV_/d;/^[^=]\+_\(BRANCH\|COMMIT\|TAG\)=.\+/p' | xargs -0t spack ${SPACK_EXTRA_FLAGS} configure-pipeline --ignore-packages CI_BUILD CI_COMMIT CI_DEFAULT GITLAB_PIPELINES SPACK SPACK_RESOLVED ${SPACK_SETUP_IGNORE_PACKAGE_VARIABLES} --write-commit-file=commit-mapping.env
spack configure-pipeline --ignore-packages CI_BUILD CI_COMMIT CI_DEFAULT GITLAB_PIPELINES SPACK SPACK_RESOLVED CVF BLUECONFIGS --write-commit-file=commit-mapping.env CI_COMMIT_BRANCH=1uc/kinetic NMODL_COMMIT=d2c35e609625cd702739660adaf04e61d5bf95bf SPACK_RESOLVED_COMMIT=4b0a0d188d95af4428f193a1997e4333a2e8e1cf NEURON_BRANCH=master LIBSONATA_REPORT_BRANCH=master SPACK_BRANCH=develop CI_DEFAULT_BRANCH=master CVF_BRANCH=main BLUECONFIGS_BRANCH=main
==> CI_COMMIT: ignoring CI_COMMIT_BRANCH=1uc/kinetic
==> SPACK_RESOLVED: ignoring SPACK_RESOLVED_COMMIT=4b0a0d188d95af4428f193a1997e4333a2e8e1cf
==> SPACK: ignoring SPACK_BRANCH=develop
==> CI_DEFAULT: ignoring CI_DEFAULT_BRANCH=master
==> CVF: ignoring CVF_BRANCH=main
==> BLUECONFIGS: ignoring BLUECONFIGS_BRANCH=main
==> neuron: resolved branch master to 8c39669b7b542315f8a3fb0077542456ea6a777e
==> libsonata-report: resolved branch master to 5602aadfa710d6766ce23cd151a1855190271bd8
==> adding config: packages:nmodl:require: '@git.d2c35e609625cd702739660adaf04e61d5bf95bf=develop'
==> adding config: packages:neuron:require: '@git.8c39669b7b542315f8a3fb0077542456ea6a777e=develop'
==> adding config: packages:libsonata-report:require: '@git.5602aadfa710d6766ce23cd151a1855190271bd8=develop'
$ (cd "${SPACK_ROOT}" && git diff)
$ cat commit-mapping.env
NMODL_COMMIT=d2c35e609625cd702739660adaf04e61d5bf95bf
NEURON_COMMIT=8c39669b7b542315f8a3fb0077542456ea6a777e
LIBSONATA_REPORT_COMMIT=5602aadfa710d6766ce23cd151a1855190271bd8
$ echo "SPACK_BRANCH=${SPACK_BRANCH}" >> commit-mapping.env
$ echo "SPACK_DEPLOYMENT_SUFFIX=${SPACK_DEPLOYMENT_SUFFIX}" >> commit-mapping.env
$ cat commit-mapping.env >> spack_clone_variables.env
$ spack ${SPACK_EXTRA_FLAGS} spec -IL ninja
==> Warning: Expected user 904556 to own /nvme/bbpcihpcproj12, but it is owned by 0
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.5/build_cache/linux-centos7-x86_64-gcc-10.2.1-patchelf-0.18.0-afv7arjarb7nzmlh7c5slkfxykybuqce.spec.json
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.5/build_cache/linux-centos7-x86_64/gcc-10.2.1/patchelf-0.18.0/linux-centos7-x86_64-gcc-10.2.1-patchelf-0.18.0-afv7arjarb7nzmlh7c5slkfxykybuqce.spack
==> Installing "patchelf@=0.18.0%gcc@=10.2.1 ldflags="-static-libstdc++ -static-libgcc" build_system=autotools arch=linux-centos7-x86_64" from a buildcache
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.5/build_cache/linux-centos7-x86_64-gcc-10.2.1-clingo-bootstrap-spack-t4yf34cuvquqp5xd66zybmcfyhwbdlsf.spec.json
==> Fetching https://mirror.spack.io/bootstrap/github-actions/v0.5/build_cache/linux-centos7-x86_64/gcc-10.2.1/clingo-bootstrap-spack/linux-centos7-x86_64-gcc-10.2.1-clingo-bootstrap-spack-t4yf34cuvquqp5xd66zybmcfyhwbdlsf.spack
==> Installing "clingo-bootstrap@=spack%gcc@=10.2.1~docs+ipo+optimized+python+static_libstdcpp build_system=cmake build_type=Release generator=make patches=bebb819,ec99431 arch=linux-centos7-x86_64" from a buildcache
Input spec
--------------------------------
- ninja
Concretized
--------------------------------
[e] omn6mm4a3zsbpbkptvdwxs6kkrh6yafw ninja@1.11.1%gcc@12.3.0+re2c build_system=generic arch=linux-rhel7-skylake
$ echo "SPACK_SETUP_COMMIT_MAPPING_URL=${CI_API_V4_URL}/projects/${CI_PROJECT_ID}/jobs/${CI_JOB_ID}/artifacts/commit-mapping.env" >> spack_clone_variables.env
$ spack ${SPACK_EXTRA_FLAGS} config --scope site add "config:ccache:true"
$ echo "SPACK_USE_CCACHE=true" >> spack_clone_variables.env
$ echo "CVF_BRANCH=${CVF_BRANCH}" >> spack_clone_variables.env
$ echo "BLUECONFIGS_BRANCH=${BLUECONFIGS_BRANCH}" >> spack_clone_variables.env
section_end:1718179055:step_script section_start:1718179055:upload_artifacts_on_success Uploading artifacts for successful job
Using git from spack modules
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=124203 revision=58ba2b95 version=14.2.0
commit-mapping.env: found 1 matching files and directories
input_variables.env: found 1 matching files and directories
spack_clone_variables.env: found 1 matching files and directories
Uploading artifacts as "archive" to coordinator... ok id=1316003 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=124226 revision=58ba2b95 version=14.2.0
spack_clone_variables.env: found 1 matching files and directories
Uploading artifacts as "dotenv" to coordinator... ok id=1316003 responseStatus=201 Created token=glcbt-64
section_end:1718179056:upload_artifacts_on_success section_start:1718179056:cleanup_file_variables Cleaning up project directory and file based variables
Using git from spack modules
section_end:1718179057:cleanup_file_variables Job succeeded
Running with gitlab-runner 15.5.0 (0d4137b8)
 on BB5 map runner pnPo3yJy
section_start:1718179533:resolve_secrets Resolving secrets
section_end:1718179533:resolve_secrets section_start:1718179533:prepare_executor Preparing the "custom" executor
Using Custom executor with driver BB5 PROD runner v0.0.3...
BB5 PROD runner running on bbpv1.epfl.ch, version 15.5.0, user
TMPDIR is /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/tmp/custom-executor2084322872, slurm job id , CUSTOM_ENV_CI_RUNNER_TAGS is ["bb5_map"]
Runner ID 29, project root hpc, project name nmodl
Pipeline ID 216390, build ref , job ID 1316006
Build dir /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390, optional exclusive flag , optional cpus per task flag --cpus-per-task=1, optional qos flag , optional reservation flag
A slurm job will be created with name GL_J1316006_PROD_P30_CP0_C0
Job parameters: memory=30750M, cpus_per_task=1, duration=1:00:00, constraint=cpu ntasks=1 account=proj9998 user=bbpcihpcproj12 partition=prod qos= reservation=
Not executing the chown -R
sbatch: INFO: Activating auto partition selection plugin, please report errors to HPC/CS
sbatch: INFO: Job specifies cpu constraint, setting --constraint=[skl|clx]
Submitted batch job 2247645
job state: R
sbatch: sbatch -p prod -A proj9998 --ntasks=1 --cpus-per-task=1 --mem=30750M --job-name=GL_J1316006_PROD_P30_CP0_C0 -C cpu --no-requeue -D /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --time=1:00:00 --wrap="sleep infinity"
srun: srun --mpi=none --chdir=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --ntasks=1 --jobid=2247645 --cpus-per-task=1 --mem=30750M
section_end:1718179535:prepare_executor section_start:1718179535:prepare_script Preparing environment
Using git from spack modules
Running on r1i6n17 via bbpv1.epfl.ch...
section_end:1718179538:prepare_script section_start:1718179538:get_sources Getting source from Git repository
Using git from spack modules
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1718179539:get_sources section_start:1718179539:download_artifacts Downloading artifacts
Using git from spack modules
Downloading artifacts for build:intel (1316004)...
Runtime platform  arch=amd64 os=linux pid=129508 revision=58ba2b95 version=14.2.0
Downloading artifacts from coordinator... ok  id=1316004 responseStatus=200 OK token=glcbt-64
section_end:1718179540:download_artifacts section_start:1718179540:step_script Executing "step_script" stage of the job script
WARNING: Starting with version 14.0 the 'build_script' stage will be replaced with 'step_script': https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26426
Using git from spack modules
$ env -0 | sort -z | xargs -0 -L 1 echo > initial_environment.env
$ export CTEST_PARALLEL_LEVEL=${SLURM_TASKS_PER_NODE}
$ . ${SPACK_ROOT}/share/spack/setup-env.sh
$ cd ${SPACK_BUILD_DIR}
$ export BOOST_TEST_COLOR_OUTPUT=no
$ i_am_a_failure=0
$ spack ${SPACK_EXTRA_FLAGS} build-env ${SPACK_FULL_SPEC} -- ctest --no-tests=error --output-on-failure -T Test || i_am_a_failure=1
Site: r1i4n18
Build name: Linux-icpx
Create new tag: 20240612-0806 - Experimental
Test project /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316004/spack-build/spack-stage-nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf_develop-tmos5inlmymk7g76dtukaltlksjp5ffc/spack-build-tmos5in
Start 1: testutils/ends_with
1/114 Test #1: testutils/ends_with ................................................................................. Passed 0.01 sec
Start 2: testcodegen/Scenario: unusual / failing mod files
2/114 Test #2: testcodegen/Scenario: unusual / failing mod files ................................................... Passed 0.04 sec
Start 3: testcodegen/Scenario: Check global variable setup
3/114 Test #3: testcodegen/Scenario: Check global variable setup ................................................... Passed 0.04 sec
Start 4: testcodegen/Scenario: C codegen utility functions
4/114 Test #4: testcodegen/Scenario: C codegen utility functions ................................................... Passed 0.04 sec
Start 5: testcodegen/Scenario: Check instance variable definition order
5/114 Test #5: testcodegen/Scenario: Check instance variable definition order ...................................... Passed 0.04 sec
Start 6: testcodegen/Scenario: Check parameter constness with VERBATIM block
6/114 Test #6: testcodegen/Scenario: Check parameter constness with VERBATIM block ................................. Passed 0.04 sec
Start 7: testcodegen/Scenario: Check NEURON globals are added to the instance struct on demand
7/114 Test #7: testcodegen/Scenario: Check NEURON globals are added to the instance struct on demand ............... Passed 0.04 sec
Start 8: testcodegen/Scenario: Check code generation for TABLE statements
8/114 Test #8: testcodegen/Scenario: Check code generation for TABLE statements .................................... Passed 0.04 sec
Start 9: testcodegen/Scenario: Check that BEFORE/AFTER block are well generated
9/114 Test #9: testcodegen/Scenario: Check that BEFORE/AFTER block are well generated .............................. Passed 0.04 sec
Start 10: testcodegen/Scenario: Check CONSTANT variables are added to global variable structure
10/114 Test #10: testcodegen/Scenario: Check CONSTANT variables are added to global variable structure ............... Passed 0.04 sec
Start 11: testcodegen/Scenario: Check code generation for FUNCTION_TABLE block
11/114 Test #11: testcodegen/Scenario: Check code generation for FUNCTION_TABLE block ................................ Passed 0.04 sec
Start 12: testcodegen/Scenario: Check that loops are well generated
12/114 Test #12: testcodegen/Scenario: Check that loops are well generated ........................................... Passed 0.04 sec
Start 13: testcodegen/Scenario: Check that top verbatim blocks are well generated
13/114 Test #13: testcodegen/Scenario: Check that top verbatim blocks are well generated ............................. Passed 0.04 sec
Start 14: testcodegen/Scenario: Check that codegen generate event functions well
14/114 Test #14: testcodegen/Scenario: Check that codegen generate event functions well .............................. Passed 0.04 sec
Start 15: testcodegen/Scenario: Some tests on derivimplicit
15/114 Test #15: testcodegen/Scenario: Some tests on derivimplicit ................................................... Passed 0.03 sec
Start 16: testcodegen/Scenario: Some tests on euler solver
16/114 Test #16: testcodegen/Scenario: Some tests on euler solver .................................................... Passed 0.04 sec
Start 17: testcodegen/Scenario: Check codegen for MUTEX and PROTECT
17/114 Test #17: testcodegen/Scenario: Check codegen for MUTEX and PROTECT ........................................... Passed 0.04 sec
Start 18: testcodegen/Scenario: Array STATE variable
18/114 Test #18: testcodegen/Scenario: Array STATE variable .......................................................... Passed 0.04 sec
Start 19: testcodegen/Scenario: Check whether PROCEDURE and FUNCTION need setdata call
19/114 Test #19: testcodegen/Scenario: Check whether PROCEDURE and FUNCTION need setdata call ........................ Passed 0.04 sec
Start 20: testcodegen/Scenario: Adding a variable for a table inside a function
20/114 Test #20: testcodegen/Scenario: Adding a variable for a table inside a function ............................... Passed 0.04 sec
Start 21: testcodegen/Scenario: Uncompatible constructs should failed
21/114 Test #21: testcodegen/Scenario: Uncompatible constructs should failed ......................................... Passed 0.04 sec
Start 22: testmodtoken/NMODL Lexer returning valid ModToken object
22/114 Test #22: testmodtoken/NMODL Lexer returning valid ModToken object ............................................ Passed 0.01 sec
Start 23: testmodtoken/Addition of two ModToken objects
23/114 Test #23: testmodtoken/Addition of two ModToken objects ....................................................... Passed 0.01 sec
Start 24: testlexer/NMODL Lexer returning valid token types
24/114 Test #24: testlexer/NMODL Lexer returning valid token types ................................................... Passed 0.01 sec
Start 25: testparser/Scenario: NMODL can accept CR as return char for one line comment
25/114 Test #25: testparser/Scenario: NMODL can accept CR as return char for one line comment ........................ Passed 0.02 sec
Start 26: testparser/Scenario: NMODL can define macros using DEFINE keyword
26/114 Test #26: testparser/Scenario: NMODL can define macros using DEFINE keyword ................................... Passed 0.02 sec
Start 27: testparser/Scenario: Macros can be used anywhere in the mod file
27/114 Test #27: testparser/Scenario: Macros can be used anywhere in the mod file .................................... Passed 0.02 sec
Start 28: testparser/Scenario: NMODL parser accepts empty unit specification
28/114 Test #28: testparser/Scenario: NMODL parser accepts empty unit specification .................................. Passed 0.02 sec
Start 29: testparser/Scenario: NMODL parser running number of valid NMODL constructs
29/114 Test #29: testparser/Scenario: NMODL parser running number of valid NMODL constructs .......................... Passed 0.03 sec
Start 30: testparser/Scenario: NMODL parser running number of invalid NMODL constructs
30/114 Test #30: testparser/Scenario: NMODL parser running number of invalid NMODL constructs ........................ Passed 0.02 sec
Start 31: testparser/Scenario: Check that the parser doesn't crash when passing invalid INCLUDE constructs
31/114 Test #31: testparser/Scenario: Check that the parser doesn't crash when passing invalid INCLUDE constructs .... Passed 0.02 sec
Start 32: testparser/Scenario: NEURON block can add CURIE information
32/114 Test #32: testparser/Scenario: NEURON block can add CURIE information ......................................... Passed 0.02 sec
Start 33: testparser/Scenario: Check parents in valid NMODL constructs
33/114 Test #33: testparser/Scenario: Check parents in valid NMODL constructs ........................................ Passed 0.25 sec
Start 34: testparser/Scenario: Legacy differential equation solver
34/114 Test #34: testparser/Scenario: Legacy differential equation solver ............................................ Passed 0.02 sec
Start 35: testparser/Scenario: Check if a NEURON block is parsed with correct location info in its token
35/114 Test #35: testparser/Scenario: Check if a NEURON block is parsed with correct location info in its token ...... Passed 0.02 sec
Start 36: testvisitor/Scenario: AfterCVodeToCnexpVisitor changes after_cvode solver method to cnexp
36/114 Test #36: testvisitor/Scenario: AfterCVodeToCnexpVisitor changes after_cvode solver method to cnexp ........... Passed 0.04 sec
Start 37: testvisitor/Scenario: Perform constant folder on NMODL constructs
37/114 Test #37: testvisitor/Scenario: Perform constant folder on NMODL constructs ................................... Passed 0.04 sec
Start 38: testvisitor/Scenario: Perform DefUse analysis on NMODL constructs
38/114 Test #38: testvisitor/Scenario: Perform DefUse analysis on NMODL constructs ................................... Passed 0.04 sec
Start 39: testvisitor/Scenario: GLOBAL to RANGE variable transformer
39/114 Test #39: testvisitor/Scenario: GLOBAL to RANGE variable transformer .......................................... Passed 0.04 sec
Start 40: testvisitor/Scenario: Check insertion of implicit arguments
40/114 Test #40: testvisitor/Scenario: Check insertion of implicit arguments ......................................... Passed 0.04 sec
Start 41: testvisitor/Scenario: Inlining of external procedure calls
41/114 Test #41: testvisitor/Scenario: Inlining of external procedure calls .......................................... Passed 0.04 sec
Start 42: testvisitor/Scenario: Inlining of function call as argument in external function
42/114 Test #42: testvisitor/Scenario: Inlining of function call as argument in external function .................... Passed 0.04 sec
Start 43: testvisitor/Scenario: Inlining of simple, one level procedure call
43/114 Test #43: testvisitor/Scenario: Inlining of simple, one level procedure call .................................. Passed 0.04 sec
Start 44: testvisitor/Scenario: Inlining of nested procedure call
44/114 Test #44: testvisitor/Scenario: Inlining of nested procedure call ............................................. Passed 0.04 sec
Start 45: testvisitor/Scenario: Inline function call in procedure
45/114 Test #45: testvisitor/Scenario: Inline function call in procedure ............................................. Passed 0.04 sec
Start 46: testvisitor/Scenario: Inling function call within conditional statement
46/114 Test #46: testvisitor/Scenario: Inling function call within conditional statement ............................. Passed 0.04 sec
Start 47: testvisitor/Scenario: Inline multiple function calls in same statement
47/114 Test #47: testvisitor/Scenario: Inline multiple function calls in same statement .............................. Passed 0.04 sec
Start 48: testvisitor/Scenario: Inline nested function calls withing arguments
48/114 Test #48: testvisitor/Scenario: Inline nested function calls withing arguments ................................ Passed 0.04 sec
Start 49: testvisitor/Scenario: Inline function call in non-binary expression
49/114 Test #49: testvisitor/Scenario: Inline function call in non-binary expression ................................. Passed 0.04 sec
Start 50: testvisitor/Scenario: Inline function call as standalone expression
50/114 Test #50: testvisitor/Scenario: Inline function call as standalone expression ................................. Passed 0.04 sec
Start 51: testvisitor/Scenario: Inline procedure call as standalone statement as well as part of expression
51/114 Test #51: testvisitor/Scenario: Inline procedure call as standalone statement as well as part of expression ... Passed 0.04 sec
Start 52: testvisitor/Scenario: Inlining pass handles local-global name conflict
52/114 Test #52: testvisitor/Scenario: Inlining pass handles local-global name conflict .............................. Passed 0.04 sec
Start 53: testvisitor/Scenario: Trying to inline a function with VERBATIM block
53/114 Test #53: testvisitor/Scenario: Trying to inline a function with VERBATIM block ............................... Passed 0.04 sec
Start 54: testvisitor/Convert NMODL to AST to JSON form using JSONVisitor
54/114 Test #54: testvisitor/Convert NMODL to AST to JSON form using JSONVisitor ..................................... Passed 0.04 sec
Start 55: testvisitor/Scenario: Convert KINETIC to DERIVATIVE using KineticBlock visitor
55/114 Test #55: testvisitor/Scenario: Convert KINETIC to DERIVATIVE using KineticBlock visitor ...................... Passed 0.05 sec
Start 56: testvisitor/Scenario: Localizer test with single global block
56/114 Test #56: testvisitor/Scenario: Localizer test with single global block ....................................... Passed 0.04 sec
Start 57: testvisitor/Scenario: Localizer test with use of verbatim block
57/114 Test #57: testvisitor/Scenario: Localizer test with use of verbatim block ..................................... Passed 0.04 sec
Start 58: testvisitor/Scenario: Localizer test with multiple global blocks
58/114 Test #58: testvisitor/Scenario: Localizer test with multiple global blocks .................................... Passed 0.04 sec
Start 59: testvisitor/Scenario: LocalVarRenameVisitor works with InlineVisitor
59/114 Test #59: testvisitor/Scenario: LocalVarRenameVisitor works with InlineVisitor ................................ Passed 0.04 sec
Start 60: testvisitor/Scenario: LOCAL to ASSIGNED variable transformer
60/114 Test #60: testvisitor/Scenario: LOCAL to ASSIGNED variable transformer ........................................ Passed 0.04 sec
Start 61: testvisitor/Scenario: Searching for ast nodes using AstLookupVisitor
61/114 Test #61: testvisitor/Scenario: Searching for ast nodes using AstLookupVisitor ................................ Passed 0.04 sec
Start 62: testvisitor/Scenario: Perform loop unrolling of FROM construct
62/114 Test #62: testvisitor/Scenario: Perform loop unrolling of FROM construct ...................................... Passed 0.04 sec
Start 63: testvisitor/Scenario: Running visitor passes multiple times
63/114 Test #63: testvisitor/Scenario: Running visitor passes multiple times ......................................... Passed 0.04 sec
Start 64: testvisitor/Scenario: Sympy specific AST to NMODL conversion
64/114 Test #64: testvisitor/Scenario: Sympy specific AST to NMODL conversion ........................................ Passed 0.04 sec
Start 65: testvisitor/Scenario: NeuronSolveVisitor visitor solves different ODE types
65/114 Test #65: testvisitor/Scenario: NeuronSolveVisitor visitor solves different ODE types ......................... Passed 0.04 sec
Start 66: testvisitor/Scenario: Convert AST back to NMODL form
66/114 Test #66: testvisitor/Scenario: Convert AST back to NMODL form ................................................ Passed 0.07 sec
Start 67: testvisitor/Scenario: Symbol table generation with Perf stat visitor
67/114 Test #67: testvisitor/Scenario: Symbol table generation with Perf stat visitor ................................ Passed 0.04 sec
Start 68: testvisitor/Scenario: Renaming any variable in mod file with RenameVisitor
68/114 Test #68: testvisitor/Scenario: Renaming any variable in mod file with RenameVisitor .......................... Passed 0.04 sec
Start 69: testvisitor/Scenario: Renaming with presence of local and global variables in same block
69/114 Test #69: testvisitor/Scenario: Renaming with presence of local and global variables in same block ............ Passed 0.04 sec
Start 70: testvisitor/Scenario: Renaming in the absence of global blocks
70/114 Test #70: testvisitor/Scenario: Renaming in the absence of global blocks ...................................... Passed 0.04 sec
Start 71: testvisitor/Scenario: Variable renaming in nested blocks
71/114 Test #71: testvisitor/Scenario: Variable renaming in nested blocks ............................................ Passed 0.04 sec
Start 72: testvisitor/Scenario: Renaming in presence of local variable in verbatim block
72/114 Test #72: testvisitor/Scenario: Renaming in presence of local variable in verbatim block ...................... Passed 0.04 sec
Start 73: testvisitor/Scenario: TABLE stmt
73/114 Test #73: testvisitor/Scenario: TABLE stmt .................................................................... Passed 0.04 sec
Start 74: testvisitor/Scenario: Destructor block
74/114 Test #74: testvisitor/Scenario: Destructor block .............................................................. Passed 0.04 sec
Start 75: testvisitor/Scenario: Ion variable in CONSTANT block
75/114 Test #75: testvisitor/Scenario: Ion variable in CONSTANT block ................................................ Passed 0.04 sec
Start 76: testvisitor/Scenario: INDEPENDENT block
76/114 Test #76: testvisitor/Scenario: INDEPENDENT block ............................................................. Passed 0.04 sec
Start 77: testvisitor/Scenario: FUNCTION_TABLE block
77/114 Test #77: testvisitor/Scenario: FUNCTION_TABLE block .......................................................... Passed 0.04 sec
Start 78: testvisitor/Scenario: At most one DERIVATIVE block
78/114 Test #78: testvisitor/Scenario: At most one DERIVATIVE block .................................................. Passed 0.04 sec
Start 79: testvisitor/Scenario: RANDOM Construct
79/114 Test #79: testvisitor/Scenario: RANDOM Construct .............................................................. Passed 0.04 sec
Start 80: testvisitor/Solve ODEs using legacy NeuronSolveVisitor
80/114 Test #80: testvisitor/Solve ODEs using legacy NeuronSolveVisitor .............................................. Passed 0.04 sec
Start 81: testvisitor/Scenario: Solving ODEs with STEADYSTATE solve method
81/114 Test #81: testvisitor/Scenario: Solving ODEs with STEADYSTATE solve method .................................... Passed 0.04 sec
Start 82: testvisitor/Scenario: Addition of CONDUCTANCE using SympyConductance visitor
82/114 Test #82: testvisitor/Scenario: Addition of CONDUCTANCE using SympyConductance visitor ........................ Passed 48.62 sec
Start 83: testvisitor/Scenario: Check compare_blocks in sympy unit tests
83/114 Test #83: testvisitor/Scenario: Check compare_blocks in sympy unit tests ...................................... Passed 0.83 sec
Start 84: testvisitor/Scenario: Check local vars name-clash prevention
84/114 Test #84: testvisitor/Scenario: Check local vars name-clash prevention ........................................ Passed 0.92 sec
Start 85: testvisitor/Scenario: Solve ODEs with cnexp or euler method using SympySolverVisitor
85/114 Test #85: testvisitor/Scenario: Solve ODEs with cnexp or euler method using SympySolverVisitor ................ Passed 9.15 sec
Start 86: testvisitor/Scenario: Solve ODEs with derivimplicit method using SympySolverVisitor
86/114 Test #86: testvisitor/Scenario: Solve ODEs with derivimplicit method using SympySolverVisitor ................. Passed 2.45 sec
Start 87: testvisitor/Scenario: LINEAR solve block (SympySolver Visitor)
87/114 Test #87: testvisitor/Scenario: LINEAR solve block (SympySolver Visitor) ...................................... Passed 1.87 sec
Start 88: testvisitor/Scenario: Solve NONLINEAR block using SympySolver Visitor
88/114 Test #88: testvisitor/Scenario: Solve NONLINEAR block using SympySolver Visitor ............................... Passed 0.91 sec
Start 89: testvisitor/Scenario: Solve KINETIC block using SympySolver Visitor
89/114 Test #89: testvisitor/Scenario: Solve KINETIC block using SympySolver Visitor ................................. Passed 0.98 sec
Start 90: testvisitor/Scenario: Code generation for EigenNewtonSolver
90/114 Test #90: testvisitor/Scenario: Code generation for EigenNewtonSolver .........................................***Failed 0.94 sec
Filters: "Scenario: Code generation for EigenNewtonSolver"
Randomness seeded to: 3846402989
[NMODL] [debug] :: SympySolverVisitor :: Found SOLVE statement: using derivimplicit for integrate
[NMODL] [debug] :: SympySolverVisitor :: adding ODE system: cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympySolverVisitor :: adding state var: cai
[NMODL] [debug] :: SympySolverVisitor :: Solving derivimplicit system of ODEs
[NMODL] [debug] :: SympySolverVisitor :: -> declaring new local variable: old_cai
[NMODL] [debug] :: SympySolverVisitor :: -> constructed Euler eq: cai = old_cai + dt * (-ica/depth/F/2*1e7+(cai0-cai)/tau)
[NMODL] [debug] :: SympySolverVisitor :: Constructing eigen newton solve block
[NMODL] [debug] :: SympySolverVisitor :: -> adding statement: nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau - nmodl_eigen_x[0] + cai0*dt/tau + old_cai - 5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympySolverVisitor :: -> adding statement: nmodl_eigen_j[0] = (-dt - tau)/tau
[NMODL] [debug] :: SympySolverVisitor :: setup_x_eigen: nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympySolverVisitor :: update_state: cai = nmodl_eigen_x[0]
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `cai` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_x[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `old_cai` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_x[0]` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `dt` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `tau` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `cai0` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `old_cai` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `depth` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `ica` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `F` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_j[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_f[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: visit statements. Matching policy: GREEDY
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: visit cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: marking for replacement cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: found LOCAL old_cai, nothing to do
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: erasing cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_j[0] = (-dt-tau)/tau
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
testvisitor is a Catch2 v3.4.0 host application.
Run with -? for options
-------------------------------------------------------------------------------
Scenario: Code generation for EigenNewtonSolver
Given: A mod file containing two SOLVE statements
Then: Three different functor structs defined and used
-------------------------------------------------------------------------------
../spack-src/test/unit/visitor/sympy_solver.cpp:2344
...............................................................................
../spack-src/test/unit/visitor/sympy_solver.cpp:2422: FAILED:
REQUIRE_THAT( generated, ContainsSubstring(expected_functor_cacum_0_definition) )
with expansion:
"/*********************************************************
Model Name : cacum
Filename : temp.mod.mod
NMODL Version : 7.7.0
Vectorized : true
Threadsafe : true
Created : Wed Jun 12 10:07:33 2024
Simulator : CoreNEURON
Backend : C++ (api-compatibility)
NMODL Compiler : 0.6 [d2c35e60 2024-06-12 09:52:28 +0200]
*********************************************************/
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <coreneuron/gpu/nrn_acc_manager.hpp>
#include <coreneuron/mechanism/mech/mod2c_core_thread.hpp>
#include <coreneuron/mechanism/register_mech.hpp>
#include <coreneuron/nrnconf.h>
#include <coreneuron/nrniv/nrniv_decl.h>
#include <coreneuron/sim/multicore.hpp>
#include <coreneuron/sim/scopmath/newton_thread.hpp>
#include <coreneuron/utils/ivocvect.hpp>
#include <coreneuron/utils/nrnoc_aux.hpp>
#include <coreneuron/utils/randoms/nrnran123.h>
#include <newton/newton.hpp>
namespace coreneuron {
/** constants used in nmodl from UNITS */
static const double F = 96485.3;
#ifndef NRN_PRCELLSTATE
#define NRN_PRCELLSTATE 0
#endif
/** channel information */
static const char *mechanism_info[] = {
"7.7.0",
"cacum",
"depth_cacum",
"tau_cacum",
"cai0_cacum",
0,
0,
0,
0
};
/** all global variables */
struct cacum_Store {
int ca_type{};
int reset{};
int mech_type{};
int slist1[1]{4};
int dlist1[1]{5};
};
static_assert(std::is_trivially_copy_constructible_v<cacum_Store>);
static_assert(std::is_trivially_move_constructible_v<cacum_Store>);
static_assert(std::is_trivially_copy_assignable_v<cacum_Store>);
static_assert(std::is_trivially_move_assignable_v<cacum_Store>);
static_assert(std::is_trivially_destructible_v<cacum_Store>);
cacum_Store cacum_global;
/** all mechanism instance variables and global variables */
struct cacum_Instance {
const double* depth{};
const double* tau{};
const double* cai0{};
double* ica{};
double* cai{};
double* Dcai{};
double* v_unused{};
double* g_unused{};
const double* ion_ica{};
const double* ion_cao{};
double* ion_cai{};
double* ion_ca_erev{};
const int* style_ca{};
cacum_Store* global{&cacum_global};
};
/** connect global (scalar) variables to hoc -- */
static DoubScal hoc_scalar_double[] = {
{nullptr, nullptr}
};
/** connect global (array) variables to hoc -- */
static DoubVec hoc_vector_double[] = {
{nullptr, nullptr, 0}
};
static inline int first_pointer_var_index() {
return -1;
}
static inline int first_random_var_index() {
return -1;
}
static inline int float_variables_size() {
return 8;
}
static inline int int_variables_size() {
return 5;
}
static inline int get_mech_type() {
return cacum_global.mech_type;
}
static inline Memb_list* get_memb_list(NrnThread* nt) {
if (!nt->_ml_list) {
return nullptr;
}
return nt->_ml_list[get_mech_type()];
}
static inline void* mem_alloc(size_t num, size_t size, size_t alignment =
16) {
void* ptr;
posix_memalign(&ptr, alignment, num*size);
memset(ptr, 0, size);
return ptr;
}
static inline void mem_free(void* ptr) {
free(ptr);
}
static inline void coreneuron_abort() {
abort();
}
// Allocate instance structure
static void nrn_private_constructor_cacum(NrnThread* nt, Memb_list* ml,
int type) {
assert(!ml->instance);
assert(!ml->global_variables);
assert(ml->global_variables_size == 0);
auto* const inst = new cacum_Instance{};
assert(inst->global == &cacum_global);
ml->instance = inst;
ml->global_variables = inst->global;
ml->global_variables_size = sizeof(cacum_Store);
}
// Deallocate the instance structure
static void nrn_private_destructor_cacum(NrnThread* nt, Memb_list* ml,
int type) {
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
assert(inst);
assert(inst->global);
assert(inst->global == &cacum_global);
assert(inst->global == ml->global_variables);
assert(ml->global_variables_size == sizeof(cacum_Store));
delete inst;
ml->instance = nullptr;
ml->global_variables = nullptr;
ml->global_variables_size = 0;
}
/** initialize mechanism instance variables */
static inline void setup_instance(NrnThread* nt, Memb_list* ml) {
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
assert(inst);
assert(inst->global);
assert(inst->global == &cacum_global);
assert(inst->global == ml->global_variables);
assert(ml->global_variables_size == sizeof(cacum_Store));
int pnodecount = ml->_nodecount_padded;
Datum* indexes = ml->pdata;
inst->depth = ml->data+0*pnodecount;
inst->tau = ml->data+1*pnodecount;
inst->cai0 = ml->data+2*pnodecount;
inst->ica = ml->data+3*pnodecount;
inst->cai = ml->data+4*pnodecount;
inst->Dcai = ml->data+5*pnodecount;
inst->v_unused = ml->data+6*pnodecount;
inst->g_unused = ml->data+7*pnodecount;
inst->ion_ica = nt->_data;
inst->ion_cao = nt->_data;
inst->ion_cai = nt->_data;
inst->ion_ca_erev = nt->_data;
inst->style_ca = ml->pdata;
}
static void nrn_alloc_cacum(double* data, Datum* indexes, int type) {
// do nothing
}
void nrn_constructor_cacum(NrnThread* nt, Memb_list* ml, int type) {
#ifndef CORENEURON_BUILD
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#endif
}
void nrn_destructor_cacum(NrnThread* nt, Memb_list* ml, int type) {
#ifndef CORENEURON_BUILD
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#endif
}
inline int extra_solve_cacum(int id, int pnodecount, cacum_Instance*
inst, double* data, const Datum* indexes, ThreadDatum* thread, NrnThread* nt,
double v);
struct functor_cacum_2 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_2(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
struct functor_cacum_1 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_1(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
struct functor_cacum_0 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_0(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
inline int extra_solve_cacum(int id, int pnodecount, cacum_Instance*
inst, double* data, const Datum* indexes, ThreadDatum* thread, NrnThread* nt,
double v) {
int ret_extra_solve = 0;
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_1 newton_functor(nt, inst, id, pnodecount, v, indexes,
data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver(nmodl_eigen_xm,
newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver did not
converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
return ret_extra_solve;
}
/** initialize channel */
void nrn_init_cacum(NrnThread* nt, Memb_list* ml, int type) {
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
setup_instance(nt, ml);
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
if (_nrn_skip_initmodel == 0) {
#pragma omp simd
#pragma ivdep
for (int id = 0; id < nodecount; id++) {
int node_id = node_index[id];
double v = voltage[node_id];
#if NRN_PRCELLSTATE
inst->v_unused[id] = v;
#endif
inst->ica[id] = inst->ion_ica[indexes[0*pnodecount + id]];
inst->cai[id] = inst->ion_cai[indexes[2*pnodecount + id]];
inst->cai[id] = inst->cai0[id];
{
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_0 newton_functor(nt, inst, id, pnodecount,
v, indexes, data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver
(nmodl_eigen_xm, newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver
did not converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
}
inst->ion_cai[indexes[2*pnodecount + id]] = inst->cai[id];
int ca_type = inst->global->ca_type;
nrn_wrote_conc(ca_type, &(inst->ion_cai[indexes[2*pnodecount
+ id]]), 1, inst->style_ca[4], nrn_ion_global_map, celsius, nt->_ml_list
[ca_type]->_nodecount_padded);
}
}
}
/** update state */
void nrn_state_cacum(NrnThread* nt, Memb_list* ml, int type) {
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#pragma omp simd
#pragma ivdep
for (int id = 0; id < nodecount; id++) {
int node_id = node_index[id];
double v = voltage[node_id];
#if NRN_PRCELLSTATE
inst->v_unused[id] = v;
#endif
inst->ica[id] = inst->ion_ica[indexes[0*pnodecount + id]];
inst->cai[id] = inst->ion_cai[indexes[2*pnodecount + id]];
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_2 newton_functor(nt, inst, id, pnodecount, v,
indexes, data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver
(nmodl_eigen_xm, newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver did not
converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
inst->ion_cai[indexes[2*pnodecount + id]] = inst->cai[id];
}
}
/** register channel with the simulator */
void _temp.mod_reg() {
int mech_type = nrn_get_mechtype("cacum");
cacum_global.mech_type = mech_type;
if (mech_type == -1) {
return;
}
_nrn_layout_reg(mech_type, 0);
register_mech(mechanism_info, nrn_alloc_cacum, nullptr, nullptr,
nrn_state_cacum, nrn_init_cacum, nrn_private_constructor_cacum,
nrn_private_destructor_cacum, first_pointer_var_index(), 1);
cacum_global.ca_type = nrn_get_mechtype("ca_ion");
hoc_register_prop_size(mech_type, float_variables_size(),
int_variables_size());
hoc_register_dparam_semantics(mech_type, 0, "ca_ion");
hoc_register_dparam_semantics(mech_type, 1, "ca_ion");
hoc_register_dparam_semantics(mech_type, 2, "ca_ion");
hoc_register_dparam_semantics(mech_type, 3, "ca_ion");
hoc_register_dparam_semantics(mech_type, 4, "#ca_ion");
nrn_writes_conc(mech_type, 0);
hoc_register_var(hoc_scalar_double, hoc_vector_double, NULL);
}
}
" contains: "struct functor_cacum_0 {
NrnThread* nt;
cacum_Instance* inst;
int id, pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_0(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread) : nt{nt}, inst{inst}, id{id}, pnodecount{pnodecount}, v{v}, indexes
{indexes}, data{data}, thread{thread} {}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) const {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] ="
===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
Start 91: testvisitor/Scenario: Parse UNITS block of mod files using Units Visitor
91/114 Test #91: testvisitor/Scenario: Parse UNITS block of mod files using Units Visitor ............................ Passed 0.05 sec
Start 92: testvisitor/Scenario: Searching for variable name using VarUsageVisitor
92/114 Test #92: testvisitor/Scenario: Searching for variable name using VarUsageVisitor ............................. Passed 0.04 sec
Start 93: testvisitor/Parse VERBATIM block using Verbatim Visitor
93/114 Test #93: testvisitor/Parse VERBATIM block using Verbatim Visitor ............................................. Passed 0.04 sec
Start 94: testvisitor/Scenario: Get node name with index TestVisitor
94/114 Test #94: testvisitor/Scenario: Get node name with index TestVisitor .......................................... Passed 0.04 sec
Start 95: testprinter/JSON printer converting object to string form
95/114 Test #95: testprinter/JSON printer converting object to string form ........................................... Passed 0.02 sec
Start 96: testsymtab/Scenario: Symbol properties can be added and converted to string
96/114 Test #96: testsymtab/Scenario: Symbol properties can be added and converted to string ......................... Passed 0.09 sec
Start 97: testsymtab/Scenario: Multiple properties can be added to Symbol
97/114 Test #97: testsymtab/Scenario: Multiple properties can be added to Symbol ..................................... Passed 0.01 sec
Start 98: testsymtab/Scenario: Symbol table allows operations like insert, lookup
98/114 Test #98: testsymtab/Scenario: Symbol table allows operations like insert, lookup ............................. Passed 0.01 sec
Start 99: testsymtab/Scenario: Global symbol table (ModelSymbol) allows scope based operations
99/114 Test #99: testsymtab/Scenario: Global symbol table (ModelSymbol) allows scope based operations ................ Passed 0.01 sec
Start 100: testsymtab/Scenario: Symbol class allows manipulation
100/114 Test #100: testsymtab/Scenario: Symbol class allows manipulation ............................................... Passed 0.01 sec
Start 101: testnewton/Scenario: Non-linear system to solve with Newton Numerical Diff Solver
101/114 Test #101: testnewton/Scenario: Non-linear system to solve with Newton Numerical Diff Solver ................... Passed 0.07 sec
Start 102: testnewton/Scenario: Non-linear system to solve with Newton Solver
102/114 Test #102: testnewton/Scenario: Non-linear system to solve with Newton Solver .................................. Passed 0.01 sec
Start 103: testcrout/Scenario: Compare Crout solver with Eigen
103/114 Test #103: testcrout/Scenario: Compare Crout solver with Eigen ................................................. Passed 0.51 sec
Start 104: testunitlexer/Unit Lexer tests for valid tokens
104/114 Test #104: testunitlexer/Unit Lexer tests for valid tokens ..................................................... Passed 0.15 sec
Start 105: testunitparser/Scenario: Unit parser accepting valid units definition
105/114 Test #105: testunitparser/Scenario: Unit parser accepting valid units definition ............................... Passed 0.39 sec
Start 106: testunitparser/Scenario: Unit parser accepting dependent/nested units definition
106/114 Test #106: testunitparser/Scenario: Unit parser accepting dependent/nested units definition .................... Passed 0.01 sec
Start 107: Ode
107/114 Test #107: Ode ................................................................................................. Passed 5.01 sec
Start 108: Pybind
108/114 Test #108: Pybind .............................................................................................. Passed 1.02 sec
Start 109: cabpump.mod
109/114 Test #109: cabpump.mod ......................................................................................... Passed 0.34 sec
Start 110: glia_sparse.mod
110/114 Test #110: glia_sparse.mod ..................................................................................... Passed 0.89 sec
Start 111: ican.mod
111/114 Test #111: ican.mod ............................................................................................ Passed 0.02 sec
Start 112: test_functor.mod
112/114 Test #112: test_functor.mod .................................................................................... Passed 0.02 sec
Start 113: variable_names.mod
113/114 Test #113: variable_names.mod .................................................................................. Passed 2.70 sec
Start 114: watch_test.mod
114/114 Test #114: watch_test.mod ...................................................................................... Passed 0.02 sec
99% tests passed, 1 tests failed out of 114
Total Test time (real) = 81.37 sec
The following tests FAILED:
90 - testvisitor/Scenario: Code generation for EigenNewtonSolver (Failed)
Errors while running CTest
$ cp -r Testing/ ${CI_PROJECT_DIR}/
$ module load unstable unit-test-translator
$ cmake2junit > ${CI_PROJECT_DIR}/ctest.xml
$ exit ${i_am_a_failure}
srun: error: r1i6n17: task 0: Exited with exit code 1
section_end:1718179666:step_script section_start:1718179666:upload_artifacts_on_failure Uploading artifacts for failed job
Using git from spack modules
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=130568 revision=58ba2b95 version=14.2.0
initial_environment.env: found 1 matching files and directories
Testing/: found 8 matching files and directories 
Uploading artifacts as "archive" to coordinator... ok id=1316006 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=130583 revision=58ba2b95 version=14.2.0
ctest.xml: found 1 matching files and directories 
Uploading artifacts as "junit" to coordinator... ok id=1316006 responseStatus=201 Created token=glcbt-64
section_end:1718179668:upload_artifacts_on_failure section_start:1718179668:cleanup_file_variables Cleaning up project directory and file based variables
Using git from spack modules
section_end:1718179669:cleanup_file_variables ERROR: Job failed: exit status 1

Running with gitlab-runner 15.5.0 (0d4137b8)
 on BB5 map runner pnPo3yJy
section_start:1718179653:resolve_secrets Resolving secrets
section_end:1718179653:resolve_secrets section_start:1718179653:prepare_executor Preparing the "custom" executor
Using Custom executor with driver BB5 PROD runner v0.0.3...
BB5 PROD runner running on bbpv1.epfl.ch, version 15.5.0, user
TMPDIR is /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/tmp/custom-executor334593216, slurm job id , CUSTOM_ENV_CI_RUNNER_TAGS is ["bb5_map"]
Runner ID 29, project root hpc, project name nmodl
Pipeline ID 216390, build ref , job ID 1316007
Build dir /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390, optional exclusive flag , optional cpus per task flag --cpus-per-task=1, optional qos flag , optional reservation flag
A slurm job will be created with name GL_J1316007_PROD_P30_CP1_C1
Job parameters: memory=30750M, cpus_per_task=1, duration=1:00:00, constraint=cpu ntasks=1 account=proj9998 user=bbpcihpcproj12 partition=prod qos= reservation=
Not executing the chown -R
sbatch: INFO: Activating auto partition selection plugin, please report errors to HPC/CS
sbatch: INFO: Job specifies cpu constraint, setting --constraint=[skl|clx]
Submitted batch job 2247650
job state: R
sbatch: sbatch -p prod -A proj9998 --ntasks=1 --cpus-per-task=1 --mem=30750M --job-name=GL_J1316007_PROD_P30_CP1_C1 -C cpu --no-requeue -D /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --time=1:00:00 --wrap="sleep infinity"
srun: srun --mpi=none --chdir=/gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs//bbpcihpcproj12/P216390 --ntasks=1 --jobid=2247650 --cpus-per-task=1 --mem=30750M
section_end:1718179655:prepare_executor section_start:1718179655:prepare_script Preparing environment
Using git from spack modules
Running on r1i4n18 via bbpv1.epfl.ch...
section_end:1718179660:prepare_script section_start:1718179660:get_sources Getting source from Git repository
Using git from spack modules
Skipping Git repository setup
Skipping Git checkout
Skipping Git submodules setup
section_end:1718179661:get_sources section_start:1718179661:download_artifacts Downloading artifacts
Using git from spack modules
Downloading artifacts for build:nvhpc (1316005)...
Runtime platform  arch=amd64 os=linux pid=211752 revision=58ba2b95 version=14.2.0
Downloading artifacts from coordinator... ok  id=1316005 responseStatus=200 OK token=glcbt-64
section_end:1718179663:download_artifacts section_start:1718179663:step_script Executing "step_script" stage of the job script
WARNING: Starting with version 14.0 the 'build_script' stage will be replaced with 'step_script': https://gitlab.com/gitlab-org/gitlab-runner/-/issues/26426
Using git from spack modules
$ env -0 | sort -z | xargs -0 -L 1 echo > initial_environment.env
$ export CTEST_PARALLEL_LEVEL=${SLURM_TASKS_PER_NODE}
$ . ${SPACK_ROOT}/share/spack/setup-env.sh
$ cd ${SPACK_BUILD_DIR}
$ export BOOST_TEST_COLOR_OUTPUT=no
$ i_am_a_failure=0
$ spack ${SPACK_EXTRA_FLAGS} build-env ${SPACK_FULL_SPEC} -- ctest --no-tests=error --output-on-failure -T Test || i_am_a_failure=1
Site: r1i4n18
Build name: Linux-nvc++
Create new tag: 20240612-0808 - Experimental
Test project /gpfs/bbp.cscs.ch/ssd/gitlab_map_jobs/bbpcihpcproj12/P216390/J1316005/spack-build/spack-stage-nmodl-git.d2c35e609625cd702739660adaf04e61d5bf95bf_develop-gwipmw4dexsywj7x7gvw2qeolqzk66h6/spack-build-gwipmw4
Start 1: testutils/ends_with
1/114 Test #1: testutils/ends_with ................................................................................. Passed 0.44 sec
Start 2: testcodegen/Scenario: unusual / failing mod files
2/114 Test #2: testcodegen/Scenario: unusual / failing mod files ................................................... Passed 1.55 sec
Start 3: testcodegen/Scenario: Check global variable setup
3/114 Test #3: testcodegen/Scenario: Check global variable setup ................................................... Passed 0.32 sec
Start 4: testcodegen/Scenario: C codegen utility functions
4/114 Test #4: testcodegen/Scenario: C codegen utility functions ................................................... Passed 0.28 sec
Start 5: testcodegen/Scenario: Check instance variable definition order
5/114 Test #5: testcodegen/Scenario: Check instance variable definition order ...................................... Passed 0.32 sec
Start 6: testcodegen/Scenario: Check parameter constness with VERBATIM block
6/114 Test #6: testcodegen/Scenario: Check parameter constness with VERBATIM block ................................. Passed 0.36 sec
Start 7: testcodegen/Scenario: Check NEURON globals are added to the instance struct on demand
7/114 Test #7: testcodegen/Scenario: Check NEURON globals are added to the instance struct on demand ............... Passed 0.38 sec
Start 8: testcodegen/Scenario: Check code generation for TABLE statements
8/114 Test #8: testcodegen/Scenario: Check code generation for TABLE statements .................................... Passed 0.37 sec
Start 9: testcodegen/Scenario: Check that BEFORE/AFTER block are well generated
9/114 Test #9: testcodegen/Scenario: Check that BEFORE/AFTER block are well generated .............................. Passed 0.36 sec
Start 10: testcodegen/Scenario: Check CONSTANT variables are added to global variable structure
10/114 Test #10: testcodegen/Scenario: Check CONSTANT variables are added to global variable structure ............... Passed 0.38 sec
Start 11: testcodegen/Scenario: Check code generation for FUNCTION_TABLE block
11/114 Test #11: testcodegen/Scenario: Check code generation for FUNCTION_TABLE block ................................ Passed 0.37 sec
Start 12: testcodegen/Scenario: Check that loops are well generated
12/114 Test #12: testcodegen/Scenario: Check that loops are well generated ........................................... Passed 0.43 sec
Start 13: testcodegen/Scenario: Check that top verbatim blocks are well generated
13/114 Test #13: testcodegen/Scenario: Check that top verbatim blocks are well generated ............................. Passed 0.44 sec
Start 14: testcodegen/Scenario: Check that codegen generate event functions well
14/114 Test #14: testcodegen/Scenario: Check that codegen generate event functions well .............................. Passed 0.44 sec
Start 15: testcodegen/Scenario: Some tests on derivimplicit
15/114 Test #15: testcodegen/Scenario: Some tests on derivimplicit ................................................... Passed 0.41 sec
Start 16: testcodegen/Scenario: Some tests on euler solver
16/114 Test #16: testcodegen/Scenario: Some tests on euler solver .................................................... Passed 0.38 sec
Start 17: testcodegen/Scenario: Check codegen for MUTEX and PROTECT
17/114 Test #17: testcodegen/Scenario: Check codegen for MUTEX and PROTECT ........................................... Passed 0.38 sec
Start 18: testcodegen/Scenario: Array STATE variable
18/114 Test #18: testcodegen/Scenario: Array STATE variable .......................................................... Passed 0.40 sec
Start 19: testcodegen/Scenario: Check whether PROCEDURE and FUNCTION need setdata call
19/114 Test #19: testcodegen/Scenario: Check whether PROCEDURE and FUNCTION need setdata call ........................ Passed 0.33 sec
Start 20: testcodegen/Scenario: Adding a variable for a table inside a function
20/114 Test #20: testcodegen/Scenario: Adding a variable for a table inside a function ............................... Passed 0.44 sec
Start 21: testcodegen/Scenario: Uncompatible constructs should failed
21/114 Test #21: testcodegen/Scenario: Uncompatible constructs should failed ......................................... Passed 0.38 sec
Start 22: testmodtoken/NMODL Lexer returning valid ModToken object
22/114 Test #22: testmodtoken/NMODL Lexer returning valid ModToken object ............................................ Passed 0.58 sec
Start 23: testmodtoken/Addition of two ModToken objects
23/114 Test #23: testmodtoken/Addition of two ModToken objects ....................................................... Passed 0.14 sec
Start 24: testlexer/NMODL Lexer returning valid token types
24/114 Test #24: testlexer/NMODL Lexer returning valid token types ................................................... Passed 0.34 sec
Start 25: testparser/Scenario: NMODL can accept CR as return char for one line comment
25/114 Test #25: testparser/Scenario: NMODL can accept CR as return char for one line comment ........................ Passed 0.75 sec
Start 26: testparser/Scenario: NMODL can define macros using DEFINE keyword
26/114 Test #26: testparser/Scenario: NMODL can define macros using DEFINE keyword ................................... Passed 0.27 sec
Start 27: testparser/Scenario: Macros can be used anywhere in the mod file
27/114 Test #27: testparser/Scenario: Macros can be used anywhere in the mod file .................................... Passed 0.29 sec
Start 28: testparser/Scenario: NMODL parser accepts empty unit specification
28/114 Test #28: testparser/Scenario: NMODL parser accepts empty unit specification .................................. Passed 0.25 sec
Start 29: testparser/Scenario: NMODL parser running number of valid NMODL constructs
29/114 Test #29: testparser/Scenario: NMODL parser running number of valid NMODL constructs .......................... Passed 0.25 sec
Start 30: testparser/Scenario: NMODL parser running number of invalid NMODL constructs
30/114 Test #30: testparser/Scenario: NMODL parser running number of invalid NMODL constructs ........................ Passed 0.27 sec
Start 31: testparser/Scenario: Check that the parser doesn't crash when passing invalid INCLUDE constructs
31/114 Test #31: testparser/Scenario: Check that the parser doesn't crash when passing invalid INCLUDE constructs .... Passed 0.25 sec
Start 32: testparser/Scenario: NEURON block can add CURIE information
32/114 Test #32: testparser/Scenario: NEURON block can add CURIE information ......................................... Passed 0.24 sec
Start 33: testparser/Scenario: Check parents in valid NMODL constructs
33/114 Test #33: testparser/Scenario: Check parents in valid NMODL constructs ........................................ Passed 0.69 sec
Start 34: testparser/Scenario: Legacy differential equation solver
34/114 Test #34: testparser/Scenario: Legacy differential equation solver ............................................ Passed 0.28 sec
Start 35: testparser/Scenario: Check if a NEURON block is parsed with correct location info in its token
35/114 Test #35: testparser/Scenario: Check if a NEURON block is parsed with correct location info in its token ...... Passed 0.24 sec
Start 36: testvisitor/Scenario: AfterCVodeToCnexpVisitor changes after_cvode solver method to cnexp
36/114 Test #36: testvisitor/Scenario: AfterCVodeToCnexpVisitor changes after_cvode solver method to cnexp ........... Passed 2.17 sec
Start 37: testvisitor/Scenario: Perform constant folder on NMODL constructs
37/114 Test #37: testvisitor/Scenario: Perform constant folder on NMODL constructs ................................... Passed 0.39 sec
Start 38: testvisitor/Scenario: Perform DefUse analysis on NMODL constructs
38/114 Test #38: testvisitor/Scenario: Perform DefUse analysis on NMODL constructs ................................... Passed 0.38 sec
Start 39: testvisitor/Scenario: GLOBAL to RANGE variable transformer
39/114 Test #39: testvisitor/Scenario: GLOBAL to RANGE variable transformer .......................................... Passed 0.39 sec
Start 40: testvisitor/Scenario: Check insertion of implicit arguments
40/114 Test #40: testvisitor/Scenario: Check insertion of implicit arguments ......................................... Passed 0.39 sec
Start 41: testvisitor/Scenario: Inlining of external procedure calls
41/114 Test #41: testvisitor/Scenario: Inlining of external procedure calls .......................................... Passed 0.35 sec
Start 42: testvisitor/Scenario: Inlining of function call as argument in external function
42/114 Test #42: testvisitor/Scenario: Inlining of function call as argument in external function .................... Passed 0.39 sec
Start 43: testvisitor/Scenario: Inlining of simple, one level procedure call
43/114 Test #43: testvisitor/Scenario: Inlining of simple, one level procedure call .................................. Passed 0.39 sec
Start 44: testvisitor/Scenario: Inlining of nested procedure call
44/114 Test #44: testvisitor/Scenario: Inlining of nested procedure call ............................................. Passed 0.34 sec
Start 45: testvisitor/Scenario: Inline function call in procedure
45/114 Test #45: testvisitor/Scenario: Inline function call in procedure ............................................. Passed 0.39 sec
Start 46: testvisitor/Scenario: Inling function call within conditional statement
46/114 Test #46: testvisitor/Scenario: Inling function call within conditional statement ............................. Passed 0.38 sec
Start 47: testvisitor/Scenario: Inline multiple function calls in same statement
47/114 Test #47: testvisitor/Scenario: Inline multiple function calls in same statement .............................. Passed 0.41 sec
Start 48: testvisitor/Scenario: Inline nested function calls withing arguments
48/114 Test #48: testvisitor/Scenario: Inline nested function calls withing arguments ................................ Passed 0.39 sec
Start 49: testvisitor/Scenario: Inline function call in non-binary expression
49/114 Test #49: testvisitor/Scenario: Inline function call in non-binary expression ................................. Passed 0.38 sec
Start 50: testvisitor/Scenario: Inline function call as standalone expression
50/114 Test #50: testvisitor/Scenario: Inline function call as standalone expression ................................. Passed 0.39 sec
Start 51: testvisitor/Scenario: Inline procedure call as standalone statement as well as part of expression
51/114 Test #51: testvisitor/Scenario: Inline procedure call as standalone statement as well as part of expression ... Passed 0.39 sec
Start 52: testvisitor/Scenario: Inlining pass handles local-global name conflict
52/114 Test #52: testvisitor/Scenario: Inlining pass handles local-global name conflict .............................. Passed 0.36 sec
Start 53: testvisitor/Scenario: Trying to inline a function with VERBATIM block
53/114 Test #53: testvisitor/Scenario: Trying to inline a function with VERBATIM block ............................... Passed 0.35 sec
Start 54: testvisitor/Convert NMODL to AST to JSON form using JSONVisitor
54/114 Test #54: testvisitor/Convert NMODL to AST to JSON form using JSONVisitor ..................................... Passed 0.35 sec
Start 55: testvisitor/Scenario: Convert KINETIC to DERIVATIVE using KineticBlock visitor
55/114 Test #55: testvisitor/Scenario: Convert KINETIC to DERIVATIVE using KineticBlock visitor ...................... Passed 0.33 sec
Start 56: testvisitor/Scenario: Localizer test with single global block
56/114 Test #56: testvisitor/Scenario: Localizer test with single global block ....................................... Passed 0.33 sec
Start 57: testvisitor/Scenario: Localizer test with use of verbatim block
57/114 Test #57: testvisitor/Scenario: Localizer test with use of verbatim block ..................................... Passed 0.39 sec
Start 58: testvisitor/Scenario: Localizer test with multiple global blocks
58/114 Test #58: testvisitor/Scenario: Localizer test with multiple global blocks .................................... Passed 0.37 sec
Start 59: testvisitor/Scenario: LocalVarRenameVisitor works with InlineVisitor
59/114 Test #59: testvisitor/Scenario: LocalVarRenameVisitor works with InlineVisitor ................................ Passed 0.32 sec
Start 60: testvisitor/Scenario: LOCAL to ASSIGNED variable transformer
60/114 Test #60: testvisitor/Scenario: LOCAL to ASSIGNED variable transformer ........................................ Passed 0.27 sec
Start 61: testvisitor/Scenario: Searching for ast nodes using AstLookupVisitor
61/114 Test #61: testvisitor/Scenario: Searching for ast nodes using AstLookupVisitor ................................ Passed 0.22 sec
Start 62: testvisitor/Scenario: Perform loop unrolling of FROM construct
62/114 Test #62: testvisitor/Scenario: Perform loop unrolling of FROM construct ...................................... Passed 0.39 sec
Start 63: testvisitor/Scenario: Running visitor passes multiple times
63/114 Test #63: testvisitor/Scenario: Running visitor passes multiple times ......................................... Passed 0.40 sec
Start 64: testvisitor/Scenario: Sympy specific AST to NMODL conversion
64/114 Test #64: testvisitor/Scenario: Sympy specific AST to NMODL conversion ........................................ Passed 0.37 sec
Start 65: testvisitor/Scenario: NeuronSolveVisitor visitor solves different ODE types
65/114 Test #65: testvisitor/Scenario: NeuronSolveVisitor visitor solves different ODE types ......................... Passed 0.44 sec
Start 66: testvisitor/Scenario: Convert AST back to NMODL form
66/114 Test #66: testvisitor/Scenario: Convert AST back to NMODL form ................................................ Passed 0.47 sec
Start 67: testvisitor/Scenario: Symbol table generation with Perf stat visitor
67/114 Test #67: testvisitor/Scenario: Symbol table generation with Perf stat visitor ................................ Passed 0.38 sec
Start 68: testvisitor/Scenario: Renaming any variable in mod file with RenameVisitor
68/114 Test #68: testvisitor/Scenario: Renaming any variable in mod file with RenameVisitor .......................... Passed 0.38 sec
Start 69: testvisitor/Scenario: Renaming with presence of local and global variables in same block
69/114 Test #69: testvisitor/Scenario: Renaming with presence of local and global variables in same block ............ Passed 0.34 sec
Start 70: testvisitor/Scenario: Renaming in the absence of global blocks
70/114 Test #70: testvisitor/Scenario: Renaming in the absence of global blocks ...................................... Passed 0.39 sec
Start 71: testvisitor/Scenario: Variable renaming in nested blocks
71/114 Test #71: testvisitor/Scenario: Variable renaming in nested blocks ............................................ Passed 0.32 sec
Start 72: testvisitor/Scenario: Renaming in presence of local variable in verbatim block
72/114 Test #72: testvisitor/Scenario: Renaming in presence of local variable in verbatim block ...................... Passed 0.26 sec
Start 73: testvisitor/Scenario: TABLE stmt
73/114 Test #73: testvisitor/Scenario: TABLE stmt .................................................................... Passed 0.23 sec
Start 74: testvisitor/Scenario: Destructor block
74/114 Test #74: testvisitor/Scenario: Destructor block .............................................................. Passed 0.23 sec
Start 75: testvisitor/Scenario: Ion variable in CONSTANT block
75/114 Test #75: testvisitor/Scenario: Ion variable in CONSTANT block ................................................ Passed 0.21 sec
Start 76: testvisitor/Scenario: INDEPENDENT block
76/114 Test #76: testvisitor/Scenario: INDEPENDENT block ............................................................. Passed 0.21 sec
Start 77: testvisitor/Scenario: FUNCTION_TABLE block
77/114 Test #77: testvisitor/Scenario: FUNCTION_TABLE block .......................................................... Passed 0.34 sec
Start 78: testvisitor/Scenario: At most one DERIVATIVE block
78/114 Test #78: testvisitor/Scenario: At most one DERIVATIVE block .................................................. Passed 0.42 sec
Start 79: testvisitor/Scenario: RANDOM Construct
79/114 Test #79: testvisitor/Scenario: RANDOM Construct .............................................................. Passed 0.39 sec
Start 80: testvisitor/Solve ODEs using legacy NeuronSolveVisitor
80/114 Test #80: testvisitor/Solve ODEs using legacy NeuronSolveVisitor .............................................. Passed 0.40 sec
Start 81: testvisitor/Scenario: Solving ODEs with STEADYSTATE solve method
81/114 Test #81: testvisitor/Scenario: Solving ODEs with STEADYSTATE solve method .................................... Passed 0.40 sec
Start 82: testvisitor/Scenario: Addition of CONDUCTANCE using SympyConductance visitor
82/114 Test #82: testvisitor/Scenario: Addition of CONDUCTANCE using SympyConductance visitor ........................ Passed 68.62 sec
Start 83: testvisitor/Scenario: Check compare_blocks in sympy unit tests
83/114 Test #83: testvisitor/Scenario: Check compare_blocks in sympy unit tests ...................................... Passed 6.26 sec
Start 84: testvisitor/Scenario: Check local vars name-clash prevention
84/114 Test #84: testvisitor/Scenario: Check local vars name-clash prevention ........................................ Passed 6.62 sec
Start 85: testvisitor/Scenario: Solve ODEs with cnexp or euler method using SympySolverVisitor
85/114 Test #85: testvisitor/Scenario: Solve ODEs with cnexp or euler method using SympySolverVisitor ................ Passed 13.57 sec
Start 86: testvisitor/Scenario: Solve ODEs with derivimplicit method using SympySolverVisitor
86/114 Test #86: testvisitor/Scenario: Solve ODEs with derivimplicit method using SympySolverVisitor ................. Passed 9.59 sec
Start 87: testvisitor/Scenario: LINEAR solve block (SympySolver Visitor)
87/114 Test #87: testvisitor/Scenario: LINEAR solve block (SympySolver Visitor) ...................................... Passed 10.31 sec
Start 88: testvisitor/Scenario: Solve NONLINEAR block using SympySolver Visitor
88/114 Test #88: testvisitor/Scenario: Solve NONLINEAR block using SympySolver Visitor ............................... Passed 8.89 sec
Start 89: testvisitor/Scenario: Solve KINETIC block using SympySolver Visitor
89/114 Test #89: testvisitor/Scenario: Solve KINETIC block using SympySolver Visitor ................................. Passed 9.90 sec
Start 90: testvisitor/Scenario: Code generation for EigenNewtonSolver
90/114 Test #90: testvisitor/Scenario: Code generation for EigenNewtonSolver .........................................***Failed 9.99 sec
Filters: "Scenario: Code generation for EigenNewtonSolver"
Randomness seeded to: 1133630829
[NMODL] [debug] :: SympySolverVisitor :: Found SOLVE statement: using derivimplicit for integrate
[NMODL] [debug] :: SympySolverVisitor :: adding ODE system: cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympySolverVisitor :: adding state var: cai
[NMODL] [debug] :: SympySolverVisitor :: Solving derivimplicit system of ODEs
[NMODL] [debug] :: SympySolverVisitor :: -> declaring new local variable: old_cai
[NMODL] [debug] :: SympySolverVisitor :: -> constructed Euler eq: cai = old_cai + dt * (-ica/depth/F/2*1e7+(cai0-cai)/tau)
[NMODL] [debug] :: SympySolverVisitor :: Constructing eigen newton solve block
[NMODL] [debug] :: SympySolverVisitor :: -> adding statement: nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau - nmodl_eigen_x[0] + cai0*dt/tau + old_cai - 5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympySolverVisitor :: -> adding statement: nmodl_eigen_j[0] = (-dt - tau)/tau
[NMODL] [debug] :: SympySolverVisitor :: setup_x_eigen: nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympySolverVisitor :: update_state: cai = nmodl_eigen_x[0]
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `cai` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_x[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `old_cai` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging all statements
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: tagging nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2dependants map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_x[0]` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `dt` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `tau` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `cai0` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `old_cai` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `depth` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `ica` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `F` used in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var2statement map
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_j[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: var `nmodl_eigen_f[0]` defined in:
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: -> nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: visit statements. Matching policy: GREEDY
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: visit cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: marking for replacement cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor::StatementDispenser :: adding to replacement rule nmodl_eigen_j[0] = (-dt-tau)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: found LOCAL old_cai, nothing to do
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: erasing cai' = -ica/depth/F/2*1e7+(cai0-cai)/tau
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding old_cai = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_x[0] = cai
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_f[0] = -nmodl_eigen_x[0]*dt/tau-nmodl_eigen_x[0]+cai0*dt/tau+old_cai-5000000.0*dt*ica/(F*depth)
[NMODL] [debug] :: SympyReplaceSolutionsVisitor :: adding nmodl_eigen_j[0] = (-dt-tau)/tau
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
testvisitor is a Catch2 v3.4.0 host application.
Run with -? for options
-------------------------------------------------------------------------------
Scenario: Code generation for EigenNewtonSolver
Given: A mod file containing two SOLVE statements
Then: Three different functor structs defined and used
-------------------------------------------------------------------------------
../spack-src/test/unit/visitor/sympy_solver.cpp:2344
...............................................................................
../spack-src/test/unit/visitor/sympy_solver.cpp:2422: FAILED:
REQUIRE_THAT( generated, ContainsSubstring(expected_functor_cacum_0_definition) )
with expansion:
"/*********************************************************
Model Name : cacum
Filename : temp.mod.mod
NMODL Version : 7.7.0
Vectorized : true
Threadsafe : true
Created : Wed Jun 12 10:11:48 2024
Simulator : CoreNEURON
Backend : C++ (api-compatibility)
NMODL Compiler : 0.6 [d2c35e60 2024-06-12 09:52:28 +0200]
*********************************************************/
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <coreneuron/gpu/nrn_acc_manager.hpp>
#include <coreneuron/mechanism/mech/mod2c_core_thread.hpp>
#include <coreneuron/mechanism/register_mech.hpp>
#include <coreneuron/nrnconf.h>
#include <coreneuron/nrniv/nrniv_decl.h>
#include <coreneuron/sim/multicore.hpp>
#include <coreneuron/sim/scopmath/newton_thread.hpp>
#include <coreneuron/utils/ivocvect.hpp>
#include <coreneuron/utils/nrnoc_aux.hpp>
#include <coreneuron/utils/randoms/nrnran123.h>
#include <newton/newton.hpp>
namespace coreneuron {
/** constants used in nmodl from UNITS */
static const double F = 96485.3;
#ifndef NRN_PRCELLSTATE
#define NRN_PRCELLSTATE 0
#endif
/** channel information */
static const char *mechanism_info[] = {
"7.7.0",
"cacum",
"depth_cacum",
"tau_cacum",
"cai0_cacum",
0,
0,
0,
0
};
/** all global variables */
struct cacum_Store {
int ca_type{};
int reset{};
int mech_type{};
int slist1[1]{4};
int dlist1[1]{5};
};
static_assert(std::is_trivially_copy_constructible_v<cacum_Store>);
static_assert(std::is_trivially_move_constructible_v<cacum_Store>);
static_assert(std::is_trivially_copy_assignable_v<cacum_Store>);
static_assert(std::is_trivially_move_assignable_v<cacum_Store>);
static_assert(std::is_trivially_destructible_v<cacum_Store>);
cacum_Store cacum_global;
/** all mechanism instance variables and global variables */
struct cacum_Instance {
const double* depth{};
const double* tau{};
const double* cai0{};
double* ica{};
double* cai{};
double* Dcai{};
double* v_unused{};
double* g_unused{};
const double* ion_ica{};
const double* ion_cao{};
double* ion_cai{};
double* ion_ca_erev{};
const int* style_ca{};
cacum_Store* global{&cacum_global};
};
/** connect global (scalar) variables to hoc -- */
static DoubScal hoc_scalar_double[] = {
{nullptr, nullptr}
};
/** connect global (array) variables to hoc -- */
static DoubVec hoc_vector_double[] = {
{nullptr, nullptr, 0}
};
static inline int first_pointer_var_index() {
return -1;
}
static inline int first_random_var_index() {
return -1;
}
static inline int float_variables_size() {
return 8;
}
static inline int int_variables_size() {
return 5;
}
static inline int get_mech_type() {
return cacum_global.mech_type;
}
static inline Memb_list* get_memb_list(NrnThread* nt) {
if (!nt->_ml_list) {
return nullptr;
}
return nt->_ml_list[get_mech_type()];
}
static inline void* mem_alloc(size_t num, size_t size, size_t alignment =
16) {
void* ptr;
posix_memalign(&ptr, alignment, num*size);
memset(ptr, 0, size);
return ptr;
}
static inline void mem_free(void* ptr) {
free(ptr);
}
static inline void coreneuron_abort() {
abort();
}
// Allocate instance structure
static void nrn_private_constructor_cacum(NrnThread* nt, Memb_list* ml,
int type) {
assert(!ml->instance);
assert(!ml->global_variables);
assert(ml->global_variables_size == 0);
auto* const inst = new cacum_Instance{};
assert(inst->global == &cacum_global);
ml->instance = inst;
ml->global_variables = inst->global;
ml->global_variables_size = sizeof(cacum_Store);
}
// Deallocate the instance structure
static void nrn_private_destructor_cacum(NrnThread* nt, Memb_list* ml,
int type) {
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
assert(inst);
assert(inst->global);
assert(inst->global == &cacum_global);
assert(inst->global == ml->global_variables);
assert(ml->global_variables_size == sizeof(cacum_Store));
delete inst;
ml->instance = nullptr;
ml->global_variables = nullptr;
ml->global_variables_size = 0;
}
/** initialize mechanism instance variables */
static inline void setup_instance(NrnThread* nt, Memb_list* ml) {
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
assert(inst);
assert(inst->global);
assert(inst->global == &cacum_global);
assert(inst->global == ml->global_variables);
assert(ml->global_variables_size == sizeof(cacum_Store));
int pnodecount = ml->_nodecount_padded;
Datum* indexes = ml->pdata;
inst->depth = ml->data+0*pnodecount;
inst->tau = ml->data+1*pnodecount;
inst->cai0 = ml->data+2*pnodecount;
inst->ica = ml->data+3*pnodecount;
inst->cai = ml->data+4*pnodecount;
inst->Dcai = ml->data+5*pnodecount;
inst->v_unused = ml->data+6*pnodecount;
inst->g_unused = ml->data+7*pnodecount;
inst->ion_ica = nt->_data;
inst->ion_cao = nt->_data;
inst->ion_cai = nt->_data;
inst->ion_ca_erev = nt->_data;
inst->style_ca = ml->pdata;
}
static void nrn_alloc_cacum(double* data, Datum* indexes, int type) {
// do nothing
}
void nrn_constructor_cacum(NrnThread* nt, Memb_list* ml, int type) {
#ifndef CORENEURON_BUILD
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#endif
}
void nrn_destructor_cacum(NrnThread* nt, Memb_list* ml, int type) {
#ifndef CORENEURON_BUILD
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#endif
}
inline int extra_solve_cacum(int id, int pnodecount, cacum_Instance*
inst, double* data, const Datum* indexes, ThreadDatum* thread, NrnThread* nt,
double v);
struct functor_cacum_2 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_2(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
struct functor_cacum_1 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_1(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
struct functor_cacum_0 {
NrnThread* nt;
cacum_Instance* inst;
int id;
int pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_0(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread)
: nt(nt)
, inst(inst)
, id(id)
, pnodecount(pnodecount)
, v(v)
, indexes(indexes)
, data(data)
, thread(thread)
{}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] = ( -nt->_dt - inst->tau[id])
/ inst->tau[id];
}
void finalize() {
}
};
inline int extra_solve_cacum(int id, int pnodecount, cacum_Instance*
inst, double* data, const Datum* indexes, ThreadDatum* thread, NrnThread* nt,
double v) {
int ret_extra_solve = 0;
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_1 newton_functor(nt, inst, id, pnodecount, v, indexes,
data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver(nmodl_eigen_xm,
newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver did not
converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
return ret_extra_solve;
}
/** initialize channel */
void nrn_init_cacum(NrnThread* nt, Memb_list* ml, int type) {
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
setup_instance(nt, ml);
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
if (_nrn_skip_initmodel == 0) {
#pragma omp simd
#pragma ivdep
for (int id = 0; id < nodecount; id++) {
int node_id = node_index[id];
double v = voltage[node_id];
#if NRN_PRCELLSTATE
inst->v_unused[id] = v;
#endif
inst->ica[id] = inst->ion_ica[indexes[0*pnodecount + id]];
inst->cai[id] = inst->ion_cai[indexes[2*pnodecount + id]];
inst->cai[id] = inst->cai0[id];
{
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_0 newton_functor(nt, inst, id, pnodecount,
v, indexes, data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver
(nmodl_eigen_xm, newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver
did not converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
}
inst->ion_cai[indexes[2*pnodecount + id]] = inst->cai[id];
int ca_type = inst->global->ca_type;
nrn_wrote_conc(ca_type, &(inst->ion_cai[indexes[2*pnodecount
+ id]]), 1, inst->style_ca[4], nrn_ion_global_map, celsius, nt->_ml_list
[ca_type]->_nodecount_padded);
}
}
}
/** update state */
void nrn_state_cacum(NrnThread* nt, Memb_list* ml, int type) {
int nodecount = ml->nodecount;
int pnodecount = ml->_nodecount_padded;
const int* node_index = ml->nodeindices;
double* data = ml->data;
const double* voltage = nt->_actual_v;
Datum* indexes = ml->pdata;
ThreadDatum* thread = ml->_thread;
auto* const inst = static_cast<cacum_Instance*>(ml->instance);
#pragma omp simd
#pragma ivdep
for (int id = 0; id < nodecount; id++) {
int node_id = node_index[id];
double v = voltage[node_id];
#if NRN_PRCELLSTATE
inst->v_unused[id] = v;
#endif
inst->ica[id] = inst->ion_ica[indexes[0*pnodecount + id]];
inst->cai[id] = inst->ion_cai[indexes[2*pnodecount + id]];
Eigen::Matrix<double, 1, 1> nmodl_eigen_xm;
double* nmodl_eigen_x = nmodl_eigen_xm.data();
nmodl_eigen_x[static_cast<int>(0)] = inst->cai[id];
// call newton solver
functor_cacum_2 newton_functor(nt, inst, id, pnodecount, v,
indexes, data, thread);
newton_functor.initialize();
int newton_iterations = nmodl::newton::newton_solver
(nmodl_eigen_xm, newton_functor);
if (newton_iterations < 0) assert(false && "Newton solver did not
converge!");
inst->cai[id] = nmodl_eigen_x[static_cast<int>(0)];
newton_functor.finalize();
inst->ion_cai[indexes[2*pnodecount + id]] = inst->cai[id];
}
}
/** register channel with the simulator */
void _temp.mod_reg() {
int mech_type = nrn_get_mechtype("cacum");
cacum_global.mech_type = mech_type;
if (mech_type == -1) {
return;
}
_nrn_layout_reg(mech_type, 0);
register_mech(mechanism_info, nrn_alloc_cacum, nullptr, nullptr,
nrn_state_cacum, nrn_init_cacum, nrn_private_constructor_cacum,
nrn_private_destructor_cacum, first_pointer_var_index(), 1);
cacum_global.ca_type = nrn_get_mechtype("ca_ion");
hoc_register_prop_size(mech_type, float_variables_size(),
int_variables_size());
hoc_register_dparam_semantics(mech_type, 0, "ca_ion");
hoc_register_dparam_semantics(mech_type, 1, "ca_ion");
hoc_register_dparam_semantics(mech_type, 2, "ca_ion");
hoc_register_dparam_semantics(mech_type, 3, "ca_ion");
hoc_register_dparam_semantics(mech_type, 4, "#ca_ion");
nrn_writes_conc(mech_type, 0);
hoc_register_var(hoc_scalar_double, hoc_vector_double, NULL);
}
}
" contains: "struct functor_cacum_0 {
NrnThread* nt;
cacum_Instance* inst;
int id, pnodecount;
double v;
const Datum* indexes;
double* data;
ThreadDatum* thread;
double old_cai;
void initialize() {
old_cai = inst->cai[id];
}
functor_cacum_0(NrnThread* nt, cacum_Instance* inst, int id, int
pnodecount, double v, const Datum* indexes, double* data, ThreadDatum*
thread) : nt{nt}, inst{inst}, id{id}, pnodecount{pnodecount}, v{v}, indexes
{indexes}, data{data}, thread{thread} {}
void operator()(const Eigen::Matrix<double, 1, 1>& nmodl_eigen_xm,
Eigen::Matrix<double, 1, 1>& nmodl_eigen_fm, Eigen::Matrix<double, 1, 1>&
nmodl_eigen_jm) const {
const double* nmodl_eigen_x = nmodl_eigen_xm.data();
double* nmodl_eigen_j = nmodl_eigen_jm.data();
double* nmodl_eigen_f = nmodl_eigen_fm.data();
nmodl_eigen_f[static_cast<int>(0)] = -nmodl_eigen_x[static_cast
<int>(0)] * nt->_dt / inst->tau[id] - nmodl_eigen_x[static_cast<int>(0)] +
inst->cai0[id] * nt->_dt / inst->tau[id] + old_cai - 5000000.0 * nt->_dt *
inst->ica[id] / (F * inst->depth[id]);
nmodl_eigen_j[static_cast<int>(0)] ="
===============================================================================
test cases: 1 | 1 failed
assertions: 1 | 1 failed
Start 91: testvisitor/Scenario: Parse UNITS block of mod files using Units Visitor
91/114 Test #91: testvisitor/Scenario: Parse UNITS block of mod files using Units Visitor ............................ Passed 0.75 sec
Start 92: testvisitor/Scenario: Searching for variable name using VarUsageVisitor
92/114 Test #92: testvisitor/Scenario: Searching for variable name using VarUsageVisitor ............................. Passed 0.87 sec
Start 93: testvisitor/Parse VERBATIM block using Verbatim Visitor
93/114 Test #93: testvisitor/Parse VERBATIM block using Verbatim Visitor ............................................. Passed 0.79 sec
Start 94: testvisitor/Scenario: Get node name with index TestVisitor
94/114 Test #94: testvisitor/Scenario: Get node name with index TestVisitor .......................................... Passed 0.78 sec
Start 95: testprinter/JSON printer converting object to string form
95/114 Test #95: testprinter/JSON printer converting object to string form ........................................... Passed 0.27 sec
Start 96: testsymtab/Scenario: Symbol properties can be added and converted to string
96/114 Test #96: testsymtab/Scenario: Symbol properties can be added and converted to string ......................... Passed 0.57 sec
Start 97: testsymtab/Scenario: Multiple properties can be added to Symbol
97/114 Test #97: testsymtab/Scenario: Multiple properties can be added to Symbol ..................................... Passed 0.28 sec
Start 98: testsymtab/Scenario: Symbol table allows operations like insert, lookup
98/114 Test #98: testsymtab/Scenario: Symbol table allows operations like insert, lookup ............................. Passed 0.29 sec
Start 99: testsymtab/Scenario: Global symbol table (ModelSymbol) allows scope based operations
99/114 Test #99: testsymtab/Scenario: Global symbol table (ModelSymbol) allows scope based operations ................ Passed 0.29 sec
Start 100: testsymtab/Scenario: Symbol class allows manipulation
100/114 Test #100: testsymtab/Scenario: Symbol class allows manipulation ............................................... Passed 0.30 sec
Start 101: testnewton/Scenario: Non-linear system to solve with Newton Numerical Diff Solver
101/114 Test #101: testnewton/Scenario: Non-linear system to solve with Newton Numerical Diff Solver ................... Passed 0.27 sec
Start 102: testnewton/Scenario: Non-linear system to solve with Newton Solver
102/114 Test #102: testnewton/Scenario: Non-linear system to solve with Newton Solver .................................. Passed 0.32 sec
Start 103: testcrout/Scenario: Compare Crout solver with Eigen
103/114 Test #103: testcrout/Scenario: Compare Crout solver with Eigen ................................................. Passed 0.61 sec
Start 104: testunitlexer/Unit Lexer tests for valid tokens
104/114 Test #104: testunitlexer/Unit Lexer tests for valid tokens ..................................................... Passed 0.28 sec
Start 105: testunitparser/Scenario: Unit parser accepting valid units definition
105/114 Test #105: testunitparser/Scenario: Unit parser accepting valid units definition ............................... Passed 0.33 sec
Start 106: testunitparser/Scenario: Unit parser accepting dependent/nested units definition
106/114 Test #106: testunitparser/Scenario: Unit parser accepting dependent/nested units definition .................... Passed 0.28 sec
Start 107: Ode
107/114 Test #107: Ode ................................................................................................. Passed 24.56 sec
Start 108: Pybind
108/114 Test #108: Pybind .............................................................................................. Passed 14.70 sec
Start 109: cabpump.mod
109/114 Test #109: cabpump.mod ......................................................................................... Passed 3.26 sec
Start 110: glia_sparse.mod
110/114 Test #110: glia_sparse.mod ..................................................................................... Passed 10.14 sec
Start 111: ican.mod
111/114 Test #111: ican.mod ............................................................................................ Passed 0.48 sec
Start 112: test_functor.mod
112/114 Test #112: test_functor.mod .................................................................................... Passed 0.52 sec
Start 113: variable_names.mod
113/114 Test #113: variable_names.mod .................................................................................. Passed 11.43 sec
Start 114: watch_test.mod
114/114 Test #114: watch_test.mod ...................................................................................... Passed 0.50 sec
99% tests passed, 1 tests failed out of 114
Total Test time (real) = 249.71 sec
The following tests FAILED:
90 - testvisitor/Scenario: Code generation for EigenNewtonSolver (Failed)
Errors while running CTest
$ cp -r Testing/ ${CI_PROJECT_DIR}/
$ module load unstable unit-test-translator
$ cmake2junit > ${CI_PROJECT_DIR}/ctest.xml
$ exit ${i_am_a_failure}
srun: error: r1i4n18: task 0: Exited with exit code 1
section_end:1718179985:step_script section_start:1718179985:upload_artifacts_on_failure Uploading artifacts for failed job
Using git from spack modules
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=220412 revision=58ba2b95 version=14.2.0
initial_environment.env: found 1 matching files and directories
Testing/: found 8 matching files and directories 
Uploading artifacts as "archive" to coordinator... ok id=1316007 responseStatus=201 Created token=glcbt-64
Uploading artifacts...
Runtime platform  arch=amd64 os=linux pid=220428 revision=58ba2b95 version=14.2.0
ctest.xml: found 1 matching files and directories 
Uploading artifacts as "junit" to coordinator... ok id=1316007 responseStatus=201 Created token=glcbt-64
section_end:1718179987:upload_artifacts_on_failure section_start:1718179987:cleanup_file_variables Cleaning up project directory and file based variables
Using git from spack modules
section_end:1718179988:cleanup_file_variables ERROR: Job failed: exit status 1

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment