diff --git a/compat.yml b/compat.yml
index a05f589..c775528 100644
--- a/compat.yml
+++ b/compat.yml
@@ -158,7 +158,7 @@ vendors:
nvidiakokkosfortran: somesupport
ALPAKA:
C:
- intelalpakac: somesupport
+ intelalpakac: nonvendorok
F:
nvidiaalpakafortran: nope
etc:
@@ -181,7 +181,7 @@ descriptions:
nvidiastandardfortran: 'Standard Language parallel features supported on NVIDIA GPUs through NVIDIA HPC SDK'
nvidiakokkosc: 'Kokkos supports NVIDIA GPUs by calling CUDA as part of the compilation process'
nvidiakokkosfortran: 'Kokkos is a C++ model, but an official compatibility layer (Fortran Language Compatibility Layer, FLCL) is available.'
- nvidiaalpakac: 'Alpaka supports NVIDIA GPUs by calling CUDA as part of the compilation process'
+ nvidiaalpakac: 'Alpaka supports NVIDIA GPUs by calling CUDA as part of the compilation process; also, an OpenMP backend can be used'
nvidiaalpakafortran: 'Alpaka is a C++ model'
nvidiapython: 'There is a vast community of offloading Python code to NVIDIA GPUs, like CuPy, Numba, cuNumeric, and many others; NVIDIA actively supports a lot of them, but has no direct product like CUDA for Python; so, the status is somewhere in between'
amdcudac: 'hipify by AMD can translate CUDA calls to HIP calls which runs natively on AMD GPUs'
@@ -194,7 +194,7 @@ descriptions:
amdopenmp: 'AMD offers a dedicated, Clang-based compiler for using OpenMP on AMD GPUs: AOMP; it supports both C/C++ (Clang) and Fortran (Flang, example)'
amdstandard: 'Currently, no (known) way to launch Standard-based parallel algorithms on AMD GPUs'
amdkokkosc: 'Kokkos supports AMD GPUs through HIP'
- amdalpakac: 'Alpaka supports AMD GPUs through HIP'
+ amdalpakac: 'Alpaka supports AMD GPUs through HIP or through an OpenMP backend'
amdpython: 'AMD does not officially support GPU programming with Python (also not semi-officially like NVIDIA), but third-party support is available, for example through Numba (currently inactive) or a HIP version of CuPy'
intelcudac: "SYCLomatic translates CUDA code to SYCL code, allowing it to run on Intel GPUs; also, Intel's DPC++ Compatibility Tool can transform CUDA to SYCL"
intelcudafortran: "No direct support, only via ISO C bindings, but at least an example can be found on GitHub; it's pretty scarce and not by Intel itself, though"
@@ -206,5 +206,5 @@ descriptions:
prettyok: "Intel supports pSTL algorithms through their DPC++ Library (oneDPL; GitHub). It's heavily namespaced and not yet on the same level as NVIDIA"
intelstandardfortran: "With Intel oneAPI 2022.3, Intel supports DO CONCURRENT with GPU offloading"
intelkokkosc: "Kokkos supports Intel GPUs through SYCL"
- intelalpakac: "Alpaka v0.9.0 introduces experimental SYCL support"
+ intelalpakac: "Alpaka v0.9.0 introduces experimental SYCL support; also, Alpaka can use OpenMP backends"
intelpython: "Not a lot of support available at the moment, but notably DPNP, a SYCL-based drop-in replacement for Numpy, and numba-dpex, an extension of Numba for DPC++."
\ No newline at end of file
diff --git a/gpu-vendor-model-matrix.html b/gpu-vendor-model-matrix.html
index d481b96..07f137e 100644
--- a/gpu-vendor-model-matrix.html
+++ b/gpu-vendor-model-matrix.html
@@ -72,7 +72,7 @@
7:OpenACC C/C++ supported on NVIDIA GPUs directly (and best) through NVIDIA HPC SDK; additional, somewhat limited support by GCC C compiler and in LLVM through Clacc↺
@@ -212,14 +212,15 @@
29:SYCLomatic translates CUDA code to SYCL code, allowing it to run on Intel GPUs; also, Intel's DPC++ Compatibility Tool can transform CUDA to SYCL↺
30:No direct support, only via ISO C bindings, but at least an example can be found on GitHub; it's pretty scarce and not by Intel itself, though↺
31:CHIP-SPV supports mapping CUDA and HIP to OpenCL and Intel's Level Zero, making it run on Intel GPUs↺
-
32:SYCL is the prime programming model for Intel GPUs; actually, SYCL is only a standard, while Intel's implementation of it is called DPC++ (Data Parallel C++), which extends the SYCL standard in various places; actually actually, Intel namespaces everything oneAPI these days, so the full proper name is Intel oneAPI DPC++ (which incorporates a C++ compiler and also a library)↺
39:Not a lot of support available at the moment, but notably DPNP, a SYCL-based drop-in replacement for Numpy, and numba-dpex, an extension of Numba for DPC++.↺
33:SYCL is the prime programming model for Intel GPUs; actually, SYCL is only a standard, while Intel's implementation of it is called DPC++ (Data Parallel C++), which extends the SYCL standard in various places; actually actually, Intel namespaces everything oneAPI these days, so the full proper name is Intel oneAPI DPC++ (which incorporates a C++ compiler and also a library)↺
40:Not a lot of support available at the moment, but notably DPNP, a SYCL-based drop-in replacement for Numpy, and numba-dpex, an extension of Numba for DPC++.↺
diff --git a/gpu-vendor-model-matrix.pdf b/gpu-vendor-model-matrix.pdf
index 744a543..7daafe2 100644
Binary files a/gpu-vendor-model-matrix.pdf and b/gpu-vendor-model-matrix.pdf differ
diff --git a/gpu-vendor-model-matrix.svg b/gpu-vendor-model-matrix.svg
index bb27047..1154f57 100644
--- a/gpu-vendor-model-matrix.svg
+++ b/gpu-vendor-model-matrix.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/gpu-vendor-model-matrix.table.html b/gpu-vendor-model-matrix.table.html
index c7677ca..e6ac828 100644
--- a/gpu-vendor-model-matrix.table.html
+++ b/gpu-vendor-model-matrix.table.html
@@ -63,7 +63,7 @@
7:OpenACC C/C++ supported on NVIDIA GPUs directly (and best) through NVIDIA HPC SDK; additional, somewhat limited support by GCC C compiler and in LLVM through Clacc↺
@@ -203,13 +203,14 @@
29:SYCLomatic translates CUDA code to SYCL code, allowing it to run on Intel GPUs; also, Intel's DPC++ Compatibility Tool can transform CUDA to SYCL↺
30:No direct support, only via ISO C bindings, but at least an example can be found on GitHub; it's pretty scarce and not by Intel itself, though↺
31:CHIP-SPV supports mapping CUDA and HIP to OpenCL and Intel's Level Zero, making it run on Intel GPUs↺
-
32:SYCL is the prime programming model for Intel GPUs; actually, SYCL is only a standard, while Intel's implementation of it is called DPC++ (Data Parallel C++), which extends the SYCL standard in various places; actually actually, Intel namespaces everything oneAPI these days, so the full proper name is Intel oneAPI DPC++ (which incorporates a C++ compiler and also a library)↺
39:Not a lot of support available at the moment, but notably DPNP, a SYCL-based drop-in replacement for Numpy, and numba-dpex, an extension of Numba for DPC++.↺
33:SYCL is the prime programming model for Intel GPUs; actually, SYCL is only a standard, while Intel's implementation of it is called DPC++ (Data Parallel C++), which extends the SYCL standard in various places; actually actually, Intel namespaces everything oneAPI these days, so the full proper name is Intel oneAPI DPC++ (which incorporates a C++ compiler and also a library)↺
40:Not a lot of support available at the moment, but notably DPNP, a SYCL-based drop-in replacement for Numpy, and numba-dpex, an extension of Numba for DPC++.↺
\ No newline at end of file
diff --git a/gpu-vendor-model-matrix.table.tex b/gpu-vendor-model-matrix.table.tex
index ab4bf6e..7031891 100644
--- a/gpu-vendor-model-matrix.table.tex
+++ b/gpu-vendor-model-matrix.table.tex
@@ -38,11 +38,11 @@
\Python
\\
NVIDIA &
- \fullok\refwithstate{cudac} & \fullok\refwithstate{cudafortran} & \indirectok\refwithstate{nvidiahip} & \nope\refwithstate{hipfortran} & \nonvendorok\refwithstate{nvidiasycl} & \nope\refwithstate{syclfortran} & \fullok\refwithstate{openaccc} & \fullok\refwithstate{openaccfortran} & \prettyok\fullok\refwithstate{nvidiaopenmpc} & \prettyok\fullok\refwithstate{nvidiaopenmpfortran} & \fullok\refwithstate{nvidiastandardc} & \fullok\refwithstate{nvidiastandardfortran} & \nonvendorok\refwithstate{nvidiakokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \nonvendorok\refwithstate{nvidiaalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \prettyok\nonvendorok\refwithstate{nvidiapython} \\
+ \fullok\refwithstate{cudac} & \fullok\refwithstate{cudafortran} & \indirectok\refwithstate{nvidiahip} & \nope\refwithstate{nvidiahipfortran} & \nonvendorok\refwithstate{nvidiasycl} & \nope\refwithstate{syclfortran} & \fullok\refwithstate{openaccc} & \fullok\refwithstate{openaccfortran} & \prettyok\fullok\refwithstate{nvidiaopenmpc} & \prettyok\fullok\refwithstate{nvidiaopenmpfortran} & \fullok\refwithstate{nvidiastandardc} & \fullok\refwithstate{nvidiastandardfortran} & \nonvendorok\refwithstate{nvidiakokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \nonvendorok\refwithstate{nvidiaalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \prettyok\nonvendorok\refwithstate{nvidiapython} \\
AMD &
- \indirectok\refwithstate{amdcudac} & \somesupport\refwithstate{amdcudafortran} & \fullok\refwithstate{amdhipc} & \nope\refwithstate{hipfortran} & \indirectok\refwithstate{amdsyclc} & \nope\refwithstate{syclfortran} & \nonvendorok\refwithstate{amdopenaccc} & \nonvendorok\somesupport\refwithstate{amdopenaccfortran} & \fullok\refwithstate{amdopenmp} & \fullok\refwithstate{amdopenmp} & \nope\refwithstate{amdstandard} & \nope\refwithstate{amdstandard} & \nonvendorok\refwithstate{amdkokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \nonvendorok\refwithstate{amdalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \somesupport\refwithstate{amdpython} \\
+ \indirectok\refwithstate{amdcudac} & \somesupport\refwithstate{amdcudafortran} & \fullok\refwithstate{amdhipc} & \nope\refwithstate{nvidiahipfortran} & \indirectok\refwithstate{amdsyclc} & \nope\refwithstate{syclfortran} & \nonvendorok\refwithstate{amdopenaccc} & \nonvendorok\somesupport\refwithstate{amdopenaccfortran} & \fullok\refwithstate{amdopenmp} & \fullok\refwithstate{amdopenmp} & \nope\refwithstate{amdstandard} & \nope\refwithstate{amdstandard} & \nonvendorok\refwithstate{amdkokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \nonvendorok\refwithstate{amdalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \somesupport\refwithstate{amdpython} \\
Intel &
- \indirectok\refwithstate{intelcudac} & \nope\refwithstate{intelcudafortran} & \somesupport\refwithstate{intelhipc} & \nope\refwithstate{hipfortran} & \fullok\refwithstate{intelsyclc} & \nope\refwithstate{syclfortran} & \somesupport\refwithstate{intelopenacc} & \somesupport\refwithstate{intelopenacc} & \fullok\refwithstate{intelopenmp} & \fullok\refwithstate{intelopenmp} & \nope\refwithstate{prettyok} & \prettyok\refwithstate{intelstandardfortran} & \nonvendorok\refwithstate{intelkokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \somesupport\refwithstate{intelalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \somesupport\refwithstate{intelpython} \\
+ \indirectok\refwithstate{intelcudac} & \nope\refwithstate{intelcudafortran} & \somesupport\refwithstate{intelhipc} & \nope\refwithstate{intelhipfortran} & \fullok\refwithstate{intelsyclc} & \nope\refwithstate{syclfortran} & \somesupport\refwithstate{intelopenacc} & \somesupport\refwithstate{intelopenacc} & \fullok\refwithstate{intelopenmp} & \fullok\refwithstate{intelopenmp} & \nope\refwithstate{prettyok} & \prettyok\refwithstate{intelstandardfortran} & \nonvendorok\refwithstate{intelkokkosc} & \somesupport\refwithstate{nvidiakokkosfortran} & \nonvendorok\refwithstate{intelalpakac} & \nope\refwithstate{nvidiaalpakafortran} & \somesupport\refwithstate{intelpython} \\
\end{tabular}
\end{frame}
@@ -53,7 +53,7 @@
\item \ref{cudac}: CUDA C/C++ is supported on NVIDIA GPUs through the \href{https://developer.nvidia.com/cuda-toolkit}{CUDA Toolkit}
\item \ref{cudafortran}: CUDA Fortran, a proprietary Fortran extension, is supported on NVIDIA GPUs via the \href{https://developer.nvidia.com/hpc-sdk}{NVIDIA HPC SDK}
\item \ref{nvidiahip}: \href{https://github.com/ROCm-Developer-Tools/HIP}{HIP} programs can directly use NVIDIA GPUs via a CUDA backend; HIP is maintained by AMD
- \item \ref{hipfortran}: No such thing like HIP for Fortran
+ \item \ref{nvidiahipfortran}: No such thing like HIP for Fortran, but AMD offers Fortran interfaces to HIP and ROCm libraries in \href{https://github.com/ROCmSoftwarePlatform/hipfort}{hipfort}
\item \ref{nvidiasycl}: SYCL can be used on NVIDIA GPUs with \emph{experimental} support either in \href{https://github.com/codeplaysoftware/sycl-for-cuda/blob/cuda/sycl/doc/GetStartedWithSYCLCompiler.md\#build-sycl-toolchain-with-support-for-nvidia-cuda}{SYCL} directly or in \href{https://github.com/intel/llvm/blob/sycl/sycl/doc/GetStartedGuide.md\#build-dpc-toolchain-with-support-for-nvidia-cuda}{DPC++}, or via \href{https://github.com/illuhad/hipSYCL}{hipSYCL}
\item \ref{syclfortran}: No such thing like SYCL for Fortran
\item \ref{openaccc}: OpenACC C/C++ supported on NVIDIA GPUs directly (and best) through NVIDIA HPC SDK; additional, somewhat limited support by \href{https://gcc.gnu.org/wiki/OpenACC}{GCC C compiler} and in LLVM through \href{https://csmd.ornl.gov/project/clacc}{Clacc}
@@ -81,6 +81,7 @@
\item \ref{intelcudac}: \href{https://github.com/oneapi-src/SYCLomatic}{SYCLomatic} translates CUDA code to SYCL code, allowing it to run on Intel GPUs; also, Intel\textquotesingle s \href{https://www.intel.com/content/www/us/en/developer/tools/oneapi/dpc-compatibility-tool.html}{DPC++ Compatibility Tool} can transform CUDA to SYCL
\item \ref{intelcudafortran}: No direct support, only via ISO C bindings, but at least an example can be \href{https://github.com/codeplaysoftware/SYCL-For-CUDA-Examples/tree/master/examples/fortran_interface}{found on GitHub}; it\textquotesingle s pretty scarce and not by Intel itself, though
\item \ref{intelhipc}: \href{https://github.com/CHIP-SPV/chip-spv}{CHIP-SPV} supports mapping CUDA and HIP to OpenCL and Intel\textquotesingle s Level Zero, making it run on Intel GPUs
+ \item \ref{intelhipfortran}: No such thing like HIP for Fortran
\item \ref{intelsyclc}: \href{https://www.khronos.org/sycl/}{SYCL} is the prime programming model for Intel GPUs; actually, SYCL is only a standard, while Intel\textquotesingle s implementation of it is called \href{https://www.intel.com/content/www/us/en/developer/tools/oneapi/data-parallel-c-plus-plus.html}{DPC++} (\emph{Data Parallel C++}), which extends the SYCL standard in various places; actually actually, Intel namespaces everything \emph{oneAPI} these days, so the \emph{full} proper name is Intel oneAPI DPC++ (which incorporates a C++ compiler and also a library)
\item \ref{intelopenacc}: OpenACC can be used on Intel GPUs by translating the code to OpenMP with \href{https://github.com/intel/intel-application-migration-tool-for-openacc-to-openmp}{Intel\textquotesingle s Source-to-Source translator}
\item \ref{intelopenmp}: Intel has \href{https://www.intel.com/content/www/us/en/develop/documentation/get-started-with-cpp-fortran-compiler-openmp/top.html}{extensive support for OpenMP} through their latest compilers