From 1a570efb481e37c4ed85953a5f1dfdebf09e2282 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Nagy-Egri=20M=C3=A1t=C3=A9=20Ferenc?= Date: Fri, 17 Mar 2023 17:37:03 +0100 Subject: [PATCH] Math Libraries Landing pages (#1940) * Add C++ algorithm primitive lib cards * Add PRNG section * API Reference Manuals first * Add Tensile and rocWMMA * Change rocFFT and hipFFT order for consistency * Add RCCL * Fix PRNG links * Add rocSOLVER and hipSOLVER * Add general note on rocLIB vs hipLIB --- docs/reference/gpu_libraries/blas.md | 26 ++++++++++++- .../reference/gpu_libraries/c++_primitives.md | 39 +++++++++++++++++++ docs/reference/gpu_libraries/communication.md | 17 ++++++++ docs/reference/gpu_libraries/fft.md | 20 +++++----- docs/reference/gpu_libraries/math.md | 12 ++++++ docs/reference/gpu_libraries/rand.md | 24 ++++++++++++ docs/reference/gpu_libraries/solver.md | 25 ++++++++++++ 7 files changed, 151 insertions(+), 12 deletions(-) diff --git a/docs/reference/gpu_libraries/blas.md b/docs/reference/gpu_libraries/blas.md index 55f2504f7..cba0f6a9e 100644 --- a/docs/reference/gpu_libraries/blas.md +++ b/docs/reference/gpu_libraries/blas.md @@ -10,18 +10,40 @@ hipBLAS is a compatiblity layer for GPU accelerated BLAS optimized for AMD GPUs via rocBLAS and rocSOLVER. hipBLAS allows for a common interface for other GPU BLAS libraries. -- [Changelog](https://github.com/ROCmSoftwarePlatform/hipBLAS/blob/develop/CHANGELOG.md) - [API Reference Manual](https://rocmdocs.amd.com/projects/hipBLAS/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/hipBLAS/blob/develop/CHANGELOG.md) ::: :::{grid-item-card} rocBLAS rocBLAS is an AMD GPU optimized library for BLAS. -- [Changelog](https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/CHANGELOG.md) - [API Reference Manual](https://rocmdocs.amd.com/projects/rocBLAS/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/CHANGELOG.md) - [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocBLAS) ::: +:::{grid-item-card} Tensile +Tensile is a tool for creating benchmark-driven backend libraries for GEMMs, +GEMM-like problems and general N-dimensional tensor contractions on a GPU. +The Tensile library is mainly used as backend library to rocBLAS. Tensile acts as the +performance backbone for a wide variety of 'compute' applications running on AMD GPUs. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/rocBLAS/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocBLAS/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocBLAS) + +::: + +:::{grid-item-card} rocWMMA +AMD's C++ library for accelerating mixed-precision matrix multiply-accumulate (MMA) +operations leveraging AMD GPU hardware. + +- [API Reference Manual](https://docs.amd.com/bundle/rocWMMA-release-rocm-rel-5.2/page/API_Reference_Guide.html) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocWMMA/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/ROCmSoftwarePlatform/rocWMMA/tree/develop/samples) + +::: + ::::: diff --git a/docs/reference/gpu_libraries/c++_primitives.md b/docs/reference/gpu_libraries/c++_primitives.md index 1f265b6ff..264ef1b55 100644 --- a/docs/reference/gpu_libraries/c++_primitives.md +++ b/docs/reference/gpu_libraries/c++_primitives.md @@ -1 +1,40 @@ # C++ Primitives + +ROCm template libraries for algorithms are as follows: + +:::::{grid} 1 1 3 3 +:gutter: 1 + +:::{grid-item-card} rocPRIM +rocPRIM is an AMD GPU optimized template library of algorithm primitives, like +transforms, reductions, scans, etc. It also serves as a common back-end for +similar libraries found inside ROCm. + +- [API Reference Manual](https://rocprim.readthedocs.io/en/latest/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocPRIM/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocPRIM) + +::: + +:::{grid-item-card} rocThrust +rocThrust is a template library of algorithm primitives with a Thrust-compatible +interface. Their CPU back-ends are identical, while the GPU back-end calls into +rocPRIM. + +- [API Reference Manual](https://rocthrust.readthedocs.io/en/latest/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocThrust/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocThrust) + +::: + +:::{grid-item-card} hipCUB +hipCUB is a template library of algorithm primitives with a CUB-compatible +interface. It's back-end is rocPRIM. + +- [API Reference Manual](https://hipcub.readthedocs.io/en/latest/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/hipCUB/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/hipCUB) + +::: + +::::: diff --git a/docs/reference/gpu_libraries/communication.md b/docs/reference/gpu_libraries/communication.md index 53a9e554d..39fdd759d 100644 --- a/docs/reference/gpu_libraries/communication.md +++ b/docs/reference/gpu_libraries/communication.md @@ -1 +1,18 @@ # Communication Libraries + +:::::{grid} 1 1 1 1 +:gutter: 1 + +:::{grid-item-card} RCCL +RCCL (pronounced "Rickle") is a stand-alone library of standard collective communication routines for GPUs, +implementing all-reduce, all-gather, reduce, broadcast, reduce-scatter, gather, scatter, and all-to-all. +The collective operations are implemented using ring and tree algorithms and have been optimized for +throughput and latency. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/rccl/en/latest/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocFFT/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/ROCmSoftwarePlatform/rccl/tree/develop/tools) + +::: + +::::: diff --git a/docs/reference/gpu_libraries/fft.md b/docs/reference/gpu_libraries/fft.md index 707bcfd29..cec3e13fc 100644 --- a/docs/reference/gpu_libraries/fft.md +++ b/docs/reference/gpu_libraries/fft.md @@ -5,22 +5,22 @@ ROCm libraries for FFT are as follows: :::::{grid} 1 1 2 2 :gutter: 1 +:::{grid-item-card} rocFFT +rocFFT is an AMD GPU optimized library for FFT. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/rocFFT/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocFFT/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocFFT) + +::: + :::{grid-item-card} hipFFT hipFFT is a compatiblity layer for GPU accelerated FFT optimized for AMD GPUs using rocFFT. hipFFT allows for a common interface for other non AMD GPU FFT libraries. +- [API Reference Manual](https://rocmdocs.amd.com/projects/hipFFT/en/rtd/) - [Changelog](https://github.com/ROCmSoftwarePlatform/hipFFT/blob/develop/CHANGELOG.md) -- [API Reference Manual](https://rocmdocs.amd.com/projects/hipFFT/en/rtd/) - -::: - -:::{grid-item-card} rocFFT -rocFFT is an AMD GPU optimized library for FFT. - -- [Changelog](https://github.com/ROCmSoftwarePlatform/rocFFT/blob/develop/CHANGELOG.md) -- [API Reference Manual](https://rocmdocs.amd.com/projects/hipFFT/en/rtd/) -- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocFFT) ::: diff --git a/docs/reference/gpu_libraries/math.md b/docs/reference/gpu_libraries/math.md index 67851e028..145261f04 100644 --- a/docs/reference/gpu_libraries/math.md +++ b/docs/reference/gpu_libraries/math.md @@ -1 +1,13 @@ # Math Libraries + +AMD provides various math domain and support libraries as part of the ROCm. + +## rocLIB vs. hipLIB + +Several libraries are prefixed with either "roc" or "hip". +The rocLIB variants (such as rocRAND, rocBLAS) are tested and optimized for AMD hardware using supported toolchains. +The hipLIB variants (such as hipRAND, hipBLAS) are compatibility layers that provide an interface akin to their +cuLIB (such as cuRAND, cuBLAS) variants while performing static dispatching of API calls to the appropriate +vendor libraries as their back-ends. Due to their static dispatch nature, support for either vendor is decided +at compile-time of the hipLIB in question. For dynamic dispatch between vendor implementations, refer to the +[Orochi](https://github.com/GPUOpen-LibrariesAndSDKs/Orochi) library. \ No newline at end of file diff --git a/docs/reference/gpu_libraries/rand.md b/docs/reference/gpu_libraries/rand.md index c5d951820..eca7fd0fe 100644 --- a/docs/reference/gpu_libraries/rand.md +++ b/docs/reference/gpu_libraries/rand.md @@ -1 +1,25 @@ # Random Numbers + +:::::{grid} 1 1 2 2 +:gutter: 1 + +:::{grid-item-card} rocRAND +rocRAND is an AMD GPU optimized library for pseudo-random number generators (PRNG). + +- [API Reference Manual](https://rocmdocs.amd.com/projects/rocRAND/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocRAND/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/amd/rocm-examples/tree/develop/Libraries/rocRAND) + +::: + +:::{grid-item-card} hipRAND +hipRAND is a compatiblity layer for GPU accelerated FFT optimized for AMD GPUs +using rocFFT. hipFFT allows for a common interface for other non AMD GPU +FFT libraries. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/hipRAND/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/hipRAND/blob/develop/CHANGELOG.md) + +::: + +::::: diff --git a/docs/reference/gpu_libraries/solver.md b/docs/reference/gpu_libraries/solver.md index ca8a7c6f2..223dccc30 100644 --- a/docs/reference/gpu_libraries/solver.md +++ b/docs/reference/gpu_libraries/solver.md @@ -1 +1,26 @@ # Linear Solvers + +:::::{grid} 1 1 2 2 +:gutter: 1 + +:::{grid-item-card} rocSOLVER +rocSOLVER is a work-in-progress implementation of a subset of LAPACK functionality on the ROCm platform. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/rocSOLVER/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/rocSOLVER/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/ROCmSoftwarePlatform/rocSOLVER/tree/develop/clients/samples) + +::: + +:::{grid-item-card} hipSOLVER +hipSOLVER is a LAPACK marshalling library, with multiple supported backends. It sits between the +application and a 'worker' LAPACK library, marshalling inputs into the backend library and marshalling +results back to the application. + +- [API Reference Manual](https://rocmdocs.amd.com/projects/hipSOLVER/en/rtd/) +- [Changelog](https://github.com/ROCmSoftwarePlatform/hipSOLVER/blob/develop/CHANGELOG.md) +- [Examples](https://github.com/ROCmSoftwarePlatform/hipSOLVER/tree/develop/clients/samples) + +::: + +:::::