Ginkgo: A Modern Linear Operator Algebra Framework for High Performance Computing
Bibliographic record
Abstract
The Ginkgo team is proud to announce the new Ginkgo minor release 1.8.0. This release brings new features such as: A brand new file-based configuration for Ginkgo objects: you can now construct Ginkgo objects (solvers, preconditioners, ...) from a JSON configuration file. This simplifies interfacing to Ginkgo as well as exploring different settings to solve a problem. Expand the batched feature set with: the Batched CSR Matrix format, batched CG solver, batched (Block-)Jacobi preconditioner, usage example and other features such as scaling, New Distributed Multigrid and the PGM coarsening method, New CUDA and HIP kernels for Reverse Cuthill McKee (RCM) reordering Better Ginkgo and Kokkos interaction thanks to a mapping from simple Ginkgo types to native Kokkos types and more! If you face an issue, please first check our known issues page and the open issues list and if you do not find a solution, feel free to open a new issue or ask a question using the github discussions. Supported systems and requirements: For all platforms, CMake 3.16+ C++14 compliant compiler Linux and macOS GCC: 5.5+ clang: 3.9+ Intel compiler: 2019+ Apple Clang: 14.0 is tested. Earlier versions might also work. NVHPC: 22.7+ Cray Compiler: 14.0.1+ CUDA module: CMake 3.18+, and CUDA 10.1+ or NVHPC 22.7+ HIP module: CMake 3.21+, and ROCm 4.5+ DPC++ module: Intel oneAPI 2023.1+ with oneMKL and oneDPL. Set the CXX compiler to dpcpp or icpx. MPI: standard version 3.1+, ideally GPU Aware, for best performance Windows MinGW: GCC 5.5+ Microsoft Visual Studio: VS 2019+ CUDA module: CUDA 10.1+, Microsoft Visual Studio OpenMP module: MinGW. Version support changes The Ginkgo license header now uses the SPDX format. #1404 Ginkgo changes the oneapi support to 2023.1+ #1396 Ginkgo's HIP backend now requires CMake 3.21 #1334 Interface changes The gko::dim single-parameter constructor is now explicit to avoid accidental conversion from integers #1474 The CMake option GINKGO_BUILD_HWLOC is now set to OFF by default, and if it is set to ON, then HWLOC is required to be available #1513. Behavior changes gko::write_raw now defaults to writing sparse output unless otherwise specified #1533 Ginkgo now adheres to the --prefix option for cmake --install, instead of overwriting it #1534 Deprecations array::get_num_elems() has been renamed to get_size() #1400 matrix_data::ensure_row_major_order() has been renamed to sort_row_major() #1400 device_matrix_data::get_num_elems() has been renamed to get_num_stored_elements() #1400 The CMake parameter GINKGO_COMPILER_FLAGS has been superseded by CMAKE_CXX_FLAGS, and GINKGO_CUDA_COMPILER_FLAGS has been superseded by CMAKE_CUDA_FLAGS #1535 The std::initializer_list overloads of matrix create methods and constructors are deprecated in favor of explicit array parameters #1433 Summary of previous deprecations The device_reset parameter of CUDA and HIP executors no longer has an effect, and its allocation_mode parameters have been deprecated in favor of the Allocator interface. The CMake parameter GINKGO_BUILD_DPCPP has been deprecated in favor of GINKGO_BUILD_SYCL. The gko::reorder::Rcm interface has been deprecated in favor of gko::experimental::reorder::Rcm based on Permutation. The Permutation class' permute_mask functionality. Multiple functions with typos (set_complex_subpsace(), range functions such as conj_operaton etc). gko::lend() is not necessary anymore. The classes RelativeResidualNorm and AbsoluteResidualNorm are deprecated in favor of ResidualNorm. The class AmgxPgm is deprecated in favor of Pgm. Default constructors for the CSR load_balance and automatical strategies The PolymorphicObject's move-semantic copy_from variant The templated SolverBase class. The class MachineTopology is deprecated in favor of machine_topology. Logger constructors and create functions with the executor parameter. The virtual, protected, Dense functions compute_norm1_impl, add_scaled_impl, etc. Logger events for solvers and criterion without the additional implicit_tau_sq parameter. The global gko::solver::default_krylov_dim, use instead gko::solver::gmres_default_krylov_dim. Added features Add a batched CG solver #1598, #1609 Add a batched Jacobi (scalar/block) preconditioner, #1542, #1600 Add an example for batched iterative solver #1553 Add add_scaled_identity and scale_add for batch matrix formats. #1528 Add scaling for batch objects (matrix formats and multi-vectors). #1527 Add a batch::Csr matrix format class and core and support for batched spmv kernels on CUDA, HIP and SYCL. #1450 Add a script for comparing benchmark JSON outputs #1467 Add an example for reordered preconditioned linear solver #1465 Add single-value access functions load_value and store_value to array #1485 Add the BlockOperator format to represent block-matrices #1435 Add CUDA and HIP kernels for Reverse Cuthill McKee (RCM) reordering #1503 Add FileConfig #1389, #1392, #1395, #1479, #1480, #1607 Add Distributed Multigrid #1269 and coarsening method PGM #1403 Add a mapping from simple Ginkgo types to native Kokkos types #1358 Add a segmented array class #1545 Add a class for mapping between global and local indexing #1543 Improvements Ginkgo installation now has separate Ginkgo_Runtime and Ginkgo_Development components for easier packaging #1502 The HIP backend now supports complex number operations for sparse matrices based on hipSPARSE #1538 The create functions are now documented explicitly instead of using the EnableCreateMethod mixin #1433 The solver benchmark now supports Ginkgo's binary format for right-hand side vector inputs #1584 The build system now uses native HIP support for CMake, which also provides support for ROCm 6.0 #1334 The Multigrid solver generated from distributed::Matrix will use a global scalar Jacobi smoother and a GMRES solver as coarse grid solver #1612 Fixes Compilation with libc++ was fixed #1463 Fix the __cplusplus by _MSVC_LANG in MSVC #1496 Coo::read(const T&) and Csr::read(const T&) will no longer overwrite the locally stored arrays and instead copy directly into them #1476 Fix the interaction of ProfilerHook::create(_nested)_summary, executors and GPU timers, which lead to the summary not being printed #1509 Fix compilation in environments where CPATH contains the current working directory #1531 Fix read from matrix-market files with CR line endings #1557 Fix undefined behavior that shows up with libstdc++ debug builds #1176 Fix for CUDA 12.4 bug and METIS detection #1569 Fix the pkgconfig installation with DESTDIR #1597 Fix various issues causing build or test failures #1619
Fetched live from OpenAlex and de-inverted. Abstracts are not stored in this database: the inverted indexes are 8.6 GB of the frame’s 9.3 GB of text, and the host has 13 GB free.
How this classification was reachedexpand
Full frame machine prediction
Teacher imitationNot calibrated prevalence, not ground truth. Human validation pending. The Gemma side is a direct model label for every work in the frame, read from the title-only record. The Codex side is a classifier learned from the 10,348 direct Codex labels and calibrated to design-weighted sample rates; fields without enough sample support carry no Codex call. Candidate is the union of the two sides; consensus is their intersection. These outputs are machine_predicted_unvalidated and are not human labels.
Distilled classifier scores by category (both heads)
| Category | Codex | Gemma |
|---|---|---|
| Metaresearch | 0.002 | 0.004 |
| Meta-epidemiology (narrow) | 0.001 | 0.001 |
| Meta-epidemiology (broad) | 0.001 | 0.003 |
| Bibliometrics | 0.001 | 0.002 |
| Science and technology studies | 0.001 | 0.001 |
| Scholarly communication | 0.003 | 0.004 |
| Open science | 0.004 | 0.004 |
| Research integrity | 0.001 | 0.005 |
| Insufficient payload (model declined to judge) | 0.063 | 0.041 |
Machine scores (provisional)
The two teacher heads of the student model, read on this work. A score orders the frame for review; it never asserts a category, and the validation status ships verbatim with every row.
Baseline scores from an immature model (maturity gate not passed, 7 training rounds). Scores rank; they never assert a category.
score_only:v0-immature-baseline · verbatim from the scoring run: score_only means the number may rank works, and no category label ships from itClassification
machine, unvalidatedMachine predicted; a candidate call from one source (direct Gemma or distilled Codex), not a consensus.
How this classification was reached, model by model and score by score, is at the end of the page under "How this classification was reached".