- Introduced offload_mempool_stats_print to Fortran API.
- Print memory statistics independent of DBM (and grid).
- Avoid circular dependency (string_utilities/strlcpy_c2f).
- Use up-leveled MPI/C wrapper.
* MPI/C wrapper (dbm_mpi_ to cp_mpi_)
- Adjusted license of C-MPI wrapper (consequence of mpiwrap).
- Moved wrapper for C languages in to mpiwrap directory.
- Avoid name clash (same basename as for Fortran).
- Renamed prefix of all MPI wrapper functions.
* Other (DBM):
- Improved handling errors (OFFLOAD_CHECK before launch).
- Permit/Adjusted preprocessor symbol (precommit hook).
- Avoid multi-line control-flow w/o curly braces.
- Double-check #4428 (DBM_MULTIPLY_COMM_MEMPOOL).
* TODO
- Apply offload/print_func pattern to GRID's print_func.
- Leverage offload_mempool for grid backend.
- Split backend_upload_packs into two phases on GPU.
- Initial phase is chosen to have not triggered upload.
- Offload: offloadEventQuery to check if GPU is busy.
- Removed dbm_multiply_gpu_download_results
- Transfers are launched as early as possible.
- Improved overlap between transfer/compute.
- Idea: proceed on CPU if GPU is busy.
Other changes:
- Documented way to perform validation (ctx=NULL).
- Permit DBM_ prefix for preprocessor symbols.
- Removed C-shard pointer from GPU-context.
- Per-shard event stored/provided by shard.
- Migrated CPU-options into context.
- Miniapp: allow to omit validation.
- Use preincrement (atomic).
- Experimented with specialized vs DBM's universal kernel.
- Performance is equal likey due to data mix/sort (TODO).
- DBCSR/unrelated: Likely introduce DBM-kernel (cleaner).
- Rely on OPENCL_LIBSMM_PFORMAT.
Mempool:
- Revised default to skip mempool for host-allocs if offload
is not compiled-in or if offload-allocs on host are disabled.
- Renamed and split DBM_ALLOCATION_FACTOR.
- Separate DBM_OVERCOMMIT_DEVICE/HOST.
- More rigid control of mempool config
- Conditionally define mempool lists.
Other:
- Passing batch/task data in const-correct fashion.
- Revised verbose output.
- Apparently, MPI_Alloc_mem/free are not fully thread-safe.
- Debug shows issue similar to issues reported elsewhere.
- Note: MPI_Alloc_mem was taken out of critical section.
- Internally, use separate pools for device/host memory.
- Let hyperparams enable/disable pooled memory
- DBM_OFFLOAD_ALLOC
- DBM_MEMPOOL_DEVICE
- DBM_MEMPOOL_HOST
- Let hyperparam control offload memory (host).
- DBM_MULTIPLY_SM to use SLM (instead of regs).
- Adjusted permitted preprocessor symbols.
- Control GEN depending on other kernel parameters.
- Avoid bank-conflicts (POT).
- Makefile: miniapp
- Allow to select GNU Compiler by the means of "make GNU=1".
- Find <acc_opencl.h> after PR #3994.
- Offload/OCL
- Implemented offloadGetErrorName and offloadGetLastError.
- Backward-compatible with DBCSR (OpenCL backend).
- Print issues with in categories: error, warn, info messages.
- Trace additional events and sources of deadlocks and other issues.
- Allow compilation with GNU even if "omp-tools.h" is not present.
- Allow singular translation units under BSD-3 license.
- Print more accurate location of warning.
CP2K_OMP_TRACE=1: assert errors at the place/location of the issue (nice debug experience)
CP2K_OMP_TRACE=2: print error issues (printing the code location needs debug symbols)
CP2K_OMP_TRACE=3: print warnings or info messages (when CP2K terminates)
Printing instead of asserting issues (errors, warnings, info) benefits from debug symbols. A negative value of CP2K_OMP_TRACE represents maximum verbosity.