icl-utk-edu / slate

SLATE is a distributed, GPU-accelerated, dense linear algebra library targetting current and upcoming high-performance computing (HPC) systems. It is developed as part of the U.S. Department of Energy Exascale Computing Project (ECP).
https://icl.utk.edu/slate/
BSD 3-Clause "New" or "Revised" License
91 stars 21 forks source link

MPI and OpenMP required #191

Closed mgates3 closed 4 months ago

mgates3 commented 4 months ago

MPI has really always been required. The attempt to make MPI stubs for a non-MPI compile is not maintainable — stubs would have to act exactly like an MPI library with 1 process, including things like broadcasts, reductions, data types, and getting wtime. Using stubs is explicitly prohibited by xSDK to avoid collisions. Consider an MPI application that links with a non-MPI SLATE — which MPI_Send is used, the stub or the real one?

Similarly, OpenMP is required, and having OpenMP stubs for functions like omp_get_max_threads() is prohibited by xSDK. (It would be feasible to make a single-threaded library without OpenMP, ignoring omp pragmas and defining appropriate wrappers around omp functions—not stubs—but that hardly seems useful.)

G-Ragghianti commented 4 months ago

Passes all build/test CI scripts. I will plan to implement the required changes in the spack package for the next slate release.