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

Integrate changes from NERSC GPU hackathon. #713

Merged
merged 31 commits into from
Dec 23, 2021
Merged

Integrate changes from NERSC GPU hackathon. #713

merged 31 commits into from
Dec 23, 2021

Commits on Nov 23, 2021

  1. Configuration menu
    Copy the full SHA
    d452e1a View commit details
    Browse the repository at this point in the history
  2. [Hackathon] disable a lot of CI (#694)

    * Disable cmake-format and clang-format checks.
    * Disable GitLab CI except for NMODL + GPU.
    olupton authored Nov 23, 2021
    Configuration menu
    Copy the full SHA
    8ab49e9 View commit details
    Browse the repository at this point in the history

Commits on Nov 25, 2021

  1. [Hackathon] Add a temporary option for benchmark data. (#695)

    * Add a hackathon-specific argument for benchmarks.
    * Add a reference comparison for channel-benchmark.
    olupton authored Nov 25, 2021
    Configuration menu
    Copy the full SHA
    560cc3f View commit details
    Browse the repository at this point in the history

Commits on Nov 26, 2021

  1. Minor changes for building on perlmutter (#697)

    * create build/benchmark folder before trying to use it
    * run nrnivmodl-core in parallel than serially (too slow)
    pramodk authored Nov 26, 2021
    Configuration menu
    Copy the full SHA
    de4e433 View commit details
    Browse the repository at this point in the history

Commits on Nov 29, 2021

  1. Configuration menu
    Copy the full SHA
    81dd5ef View commit details
    Browse the repository at this point in the history
  2. Set by default the number of warps to execute in a large reasonable n…

    …umber and update the related documentation (#700)
    iomaganaris authored Nov 29, 2021
    Configuration menu
    Copy the full SHA
    3e394c4 View commit details
    Browse the repository at this point in the history

Commits on Dec 1, 2021

  1. Add memory pool for Random123 streams. (#702)

    * Add memory pool for Random123 streams.
       This speeds up initialisation when running on GPU.
    * Make Boost optional.
    olupton authored Dec 1, 2021
    Configuration menu
    Copy the full SHA
    a8bb716 View commit details
    Browse the repository at this point in the history

Commits on Dec 2, 2021

  1. Fix Boost-free compilation. (#703)

    This was a silly bug in #702.
    olupton authored Dec 2, 2021
    Configuration menu
    Copy the full SHA
    9649814 View commit details
    Browse the repository at this point in the history

Commits on Dec 7, 2021

  1. Basic OpenACC -> OpenMP migration. (#693)

    * Simplify unified memory logic.
    * Pass -mp=gpu when we pass -acc
    * Pass -gpu=lineinfo for better debug information.
    * Pass -Minfo=accel,mp for better compile time diagnostics.
    * Add nrn_pragma_{acc,omp} macros for single-source Open{ACC,MP} support.
    * Call omp_set_default_device.
    * Drop cc60 because of OpenMP offload incompatibility.
    * Add --gpu to test.
    * Default (BB5-valid) CORENRN_EXTERNAL_BENCHMARK_DATA.
    * Remove cuda_add_library.
    * Don't print number of GPUs when quiet.
    * Set OMP_NUM_THREADS=1 for lfp_test.
    * Update NMODL to emit nrn_pragma{acc,omp} macros.
    
    Co-authored-by: Pramod Kumbhar <[email protected]>
    olupton and pramodk authored Dec 7, 2021
    Configuration menu
    Copy the full SHA
    21dc2c8 View commit details
    Browse the repository at this point in the history

Commits on Dec 9, 2021

  1. GPU data management using OpenACC as well as OpenMP API (#704)

    * Add wrapper functions for using OpenMP or OpenACC API
    * Add -mp=gpu in order to link gpu runtime with tests as well
    * Avoid copying VecPlay members twice otherwise association fails with OpenMP
         * IvocVect members t_ and y_ were copied twice
         * only discon_indices_ is pointer and hence that
            needs to be copied
    pramodk authored Dec 9, 2021
    Configuration menu
    Copy the full SHA
    02abf78 View commit details
    Browse the repository at this point in the history

Commits on Dec 10, 2021

  1. small openacc fixes (#707)

    Christos Kotsalos authored Dec 10, 2021
    Configuration menu
    Copy the full SHA
    57f7724 View commit details
    Browse the repository at this point in the history

Commits on Dec 13, 2021

  1. Configuration menu
    Copy the full SHA
    56889cc View commit details
    Browse the repository at this point in the history
  2. solve_interleaved2_launcher (CUDA interface) : fixing size of blocksP…

    …erGrid & threadsPerBlock (#710)
    Christos Kotsalos authored Dec 13, 2021
    Configuration menu
    Copy the full SHA
    01a39d7 View commit details
    Browse the repository at this point in the history
  3. OpenMP offload: use #pragma instead of runtime API (#708)

    * Use #pragma omp instead of runtime API in `cnrn_target_{copyin,delete}`
    * Fix `VecPlayContinuous::discon_indices_` device transfer.
    * Name `cnrn_target_` wrappers more consistently.
    
    Co-authored-by: Olli Lupton <[email protected]>
    alkino and olupton authored Dec 13, 2021
    Configuration menu
    Copy the full SHA
    0fe815e View commit details
    Browse the repository at this point in the history

Commits on Dec 14, 2021

  1. Remove unused GPU code (#711)

    We prefer selective host-to-device updates.
    alkino authored Dec 14, 2021
    Configuration menu
    Copy the full SHA
    78081b4 View commit details
    Browse the repository at this point in the history
  2. Fixes and improvements from LLVM/XLC work. (#716)

    Code fixes for XLC and Clang execution without build system changes.
    This mainly adds missing OpenMP pragmas and makes cnrn_target_
    wrappers visible to NMODL.
    olupton authored Dec 14, 2021
    Configuration menu
    Copy the full SHA
    781d34f View commit details
    Browse the repository at this point in the history

Commits on Dec 16, 2021

  1. Use pragmas instead of omp_get_mapped_ptr (#705)

    omp_get_mapped_ptr was added in OpenMP 5.1 and is not widely supported.
    
    With this change then calling cnrn_target_deviceptr on a pointer that is not
    present on the device is a hard error instead of returning nullptr, so avoid
    calling it for artificial cells.
    alkino authored Dec 16, 2021
    Configuration menu
    Copy the full SHA
    1f01552 View commit details
    Browse the repository at this point in the history

Commits on Dec 17, 2021

  1. GPU implementation improvements (#718)

    * Set nwarp to very big number for optimal parallelization and improve a bit grid config of CUDA solve_interleaved2
    iomaganaris authored Dec 17, 2021
    Configuration menu
    Copy the full SHA
    d03c45f View commit details
    Browse the repository at this point in the history
  2. More CI + disable OpenACC in OpenMP builds (#717)

    * Re-enable GitLab CI.
    * Add NMODL + OpenACC test.
    * Restore {clang,cmake}-format checks.
    * Prefer OpenACC with MOD2C.
    * Do not enable OpenACC in NMODL + OpenMP mode.
    * Convert more #pragma acc to nrn_pragma_acc(...).
    * Call cudaSetDevice in OpenMP mode.
    
    Co-authored-by: Ioannis Magkanaris <[email protected]>
    olupton and iomaganaris authored Dec 17, 2021
    Configuration menu
    Copy the full SHA
    3fc7037 View commit details
    Browse the repository at this point in the history
  3. NMODL -> hackathon_main.

    olupton committed Dec 17, 2021
    Configuration menu
    Copy the full SHA
    9a98f73 View commit details
    Browse the repository at this point in the history

Commits on Dec 21, 2021

  1. Configuration menu
    Copy the full SHA
    5ce52d5 View commit details
    Browse the repository at this point in the history
  2. Fixing jenkins tests

    iomaganaris committed Dec 21, 2021
    Configuration menu
    Copy the full SHA
    a6c7078 View commit details
    Browse the repository at this point in the history
  3. Address review comments.

    olupton committed Dec 21, 2021
    Configuration menu
    Copy the full SHA
    6b8b6c3 View commit details
    Browse the repository at this point in the history
  4. Add CUDA toolkit includes.

    Presumably this was working before because our nvhpc localrc files
    accidentally included CUDA include directories before
    BlueBrain/spack#1392.
    olupton committed Dec 21, 2021
    Configuration menu
    Copy the full SHA
    531c4fe View commit details
    Browse the repository at this point in the history
  5. Fixup cmake-format.

    olupton committed Dec 21, 2021
    Configuration menu
    Copy the full SHA
    e3aeafc View commit details
    Browse the repository at this point in the history

Commits on Dec 22, 2021

  1. Compile with -cuda. (#721)

    * Compile NVHPC+Open{ACC,MP} with -cuda.
    * Pull in NMODL+Eigen fixes to make this work.
    olupton authored Dec 22, 2021
    Configuration menu
    Copy the full SHA
    9fddc7d View commit details
    Browse the repository at this point in the history
  2. Configuration menu
    Copy the full SHA
    1fbba17 View commit details
    Browse the repository at this point in the history
  3. fixup

    olupton committed Dec 22, 2021
    Configuration menu
    Copy the full SHA
    847d415 View commit details
    Browse the repository at this point in the history
  4. fixup the fixup 🤦

    olupton committed Dec 22, 2021
    Configuration menu
    Copy the full SHA
    53b0c5f View commit details
    Browse the repository at this point in the history
  5. NMODL -> master after #783.

    olupton committed Dec 22, 2021
    Configuration menu
    Copy the full SHA
    2c7377c View commit details
    Browse the repository at this point in the history
  6. Configuration menu
    Copy the full SHA
    5c5b8a3 View commit details
    Browse the repository at this point in the history