From Fedora Project Wiki
(adding communication methods section)
Line 63: Line 63:
| rocm-cmake || {{ package|rocm-cmake}} || || rocm-cmake || https://github.com/radeonopencompute/rocm-cmake || Needed by most of the roc* and hip* packages below ||
| rocm-cmake || {{ package|rocm-cmake}} || || rocm-cmake || https://github.com/radeonopencompute/rocm-cmake || Needed by most of the roc* and hip* packages below ||
|-
|-
| hipblas || || || hipblas || https://github.com/rocmsoftwareplatform/hipblas || '''requires rocblas, rocsolver, rocsparse, tensile''' ||
| hipblas || || || hipblas || https://github.com/rocmsoftwareplatform/hipblas || [[User:trix|trix]] is working on this ||
|-
|-
| hipsparse || || || hipsparse || https://github.com/rocmsoftwareplatform/hipsparse || Requires rocsparse? ||
| hipsparse || || || hipsparse || https://github.com/rocmsoftwareplatform/hipsparse || Requires rocsparse? ||
Line 69: Line 69:
| rocalution || || || rocalutio || https://github.com/rocmsoftwareplatform/rocalution || Requires rocblas ||
| rocalution || || || rocalutio || https://github.com/rocmsoftwareplatform/rocalution || Requires rocblas ||
|-
|-
| rocblas || || || rocblas || https://github.com/rocmsoftwareplatform/rocblas || '''requires tensile''', [[User:Mystro256|Jeremy Newton]] is working on this ||
| rocblas || || || rocblas || https://github.com/rocmsoftwareplatform/rocblas || [[User:trix|trix]] is working on this ||
|-
|-
| rocfft || || || rocfft || https://github.com/rocmsoftwareplatform/rocfft || [[User:Tflink|tflink]] is working on this ||  
| rocfft || || || rocfft || https://github.com/rocmsoftwareplatform/rocfft || [[User:Tflink|tflink]] is working on this ||  

Revision as of 12:48, 22 September 2023

Heterogeneous Computing Special Interest Group

Mission

To encourage the packaging and accessibility of heterogeneous computing projects in Fedora and EPEL. This includes machine learning, OpenCL, and scientific computing.

Communication

While separate from the AI/ML SIG, we do share communication channels for now. If you're interested, please join us on:

Members/Packagers/Reviewers

Please add your name above if you want to help.

Tasks

  • Package and make HC related projects more accessible to users (such as OpenCL, AMD's ROCm HIP, Intel oneAPI, SYCL, Vulkan, OpenGL, etc.)
  • Document installation, packages, and general use cases
  • Translation of wiki pages and documentation (if applicable)

AMD's ROCm (OpenCL/HIP)

Package status

Below is a list of ROCm packages with their status. If something isn't packaged in Fedora or EPEL, feel free to take it!

For reference, pytorch still requires: rocblas, miopen, rocfft, hipfft, hipsparse, rccl, rocprim, hipcub, rocthrust

Name Fedora Package EPEL? Upstream package name Upstream URL Notes
roct-thunk-interface hsakmt Yes hsakmt-roct https://github.com/radeonopencompute/roct-thunk-interface
rocr-runtime rocm-runtime Yes hsa-rocr https://github.com/radeonopencompute/rocr-runtime
rocminfo rocminfo Yes rocminfo https://github.com/radeonopencompute/rocminfo
rocm-compilersupport rocm-compilersupport Yes comgr https://github.com/radeonopencompute/rocm-compilersupport
rocm-device-libs rocm-device-libs Yes rocm-device-libs https://github.com/radeonopencompute/rocm-device-libs
opencl-icd-loader rocm-ocl-icd https://github.com/KhronosGroup/OpenCL-ICD-Loader Fedora already has ocl-icd, but the khronos version is required for GL-CL interop support
rocm-opencl-runtime rocm-opencl (F38 or newer), rocm-opencl (F37 or older) Yes rocm-opencl https://github.com/radeonopencompute/rocm-opencl-runtime rocm-opencl is now a sub-package of rocclr in Fedora 38+
rocm_smi_lib rocm-smi rocm-smi-lib https://github.com/radeonopencompute/rocm_smi_lib
hipamd rocm-hip hip-runtime-amd https://github.com/rocm-developer-tools/hipamd rocm-hip is a subpackage of rocclr, currently in f38 updates testing: https://bodhi.fedoraproject.org/updates/FEDORA-2023-a53dd0f60b
hip hip hip-[devel,docs] https://github.com/rocm-developer-tools/HIP hip-devel is a subpackage of rocclr
hip-samples hip-samples requires better cmake infra from upstream
rocm-cmake rocm-cmake rocm-cmake https://github.com/radeonopencompute/rocm-cmake Needed by most of the roc* and hip* packages below
hipblas hipblas https://github.com/rocmsoftwareplatform/hipblas trix is working on this
hipsparse hipsparse https://github.com/rocmsoftwareplatform/hipsparse Requires rocsparse?
rocalution rocalutio https://github.com/rocmsoftwareplatform/rocalution Requires rocblas
rocblas rocblas https://github.com/rocmsoftwareplatform/rocblas trix is working on this
rocfft rocfft https://github.com/rocmsoftwareplatform/rocfft tflink is working on this
hipfft ? https://github.com/rocmsoftwareplatform/hipfft Requires rocfft
rocmvalidationsuite rocm-validation-suite https://github.com/rocm-developer-tools/rocmvalidationsuite requires rocblas, rocm_smi_lib
rocprim rocprim rocprim https://github.com/rocmsoftwareplatform/rocprim
rocrand rocrand rocrand https://github.com/rocmsoftwareplatform/rocrand Also includes hiprand subpackage
rocsolver rocsolver https://github.com/rocmsoftwareplatform/rocsolver
rocsparse rocsparse https://github.com/rocmsoftwareplatform/rocsparse
rocthrust rocthrust rocthrust https://github.com/rocmsoftwareplatform/rocthrust
hipcub hipcub hipcub https://github.com/rocmsoftwareplatform/hipcub
rccl ? https://github.com/rocmsoftwareplatform/rccl BLOCKED - requires smi, cuda (which can not be met)
miopen ? https://github.com/rocmsoftwareplatform/miopen requires rocblas
tensile In Review ? https://github.com/rocmsoftwareplatform/tensile review: https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=2221418
rocdbgapi rocm-dbgapi https://github.com/rocm-developer-tools/rocdbgapi tflink is working on this
rocgdb rocm-gdb https://github.com/rocm-developer-tools/rocgdb A fork of gdb with ROCm related addons, Requires rocdbgapi tflink is working on this
rocprofiler rocprofiler https://github.com/rocm-developer-tools/rocprofiler BLOCKED - requires hsa-amd-aqlprofile, a closed source package
roctracer roctracer https://github.com/rocm-developer-tools/roctracer

HW Support

Upstream only officially supports x86_64, but they are open to pcc64le and arm64 patches

The ROCm packages in Fedora are built for all 64bit little endian systems (x86_64, arm64, ppc64le), but official support is for x86_64.

HW support is highly dependent on LLVM version included in Fedora, so if you have newer HW, you might need to wait for newer LLVM versions to be introduced to Fedora (usually in the spring and the autumn).

Note that your millage may vary, as pre vega HW on ROCm is experimental, missing functionality, and not guaranteed to work on all HW

Installation

Setup

To enable access to GPU resources for non-root users, the users must be added to the video or render group. The AMD ROCm Installation Guide (v5.2) and FAQs recommend the video group for all ROCm-supported operating systems.

Note:
The render group is only required for Ubuntu v20.04.

To add the current user to the video group:

   sudo usermod -a -G video $LOGNAME

To check for ROCm support of the running HW, you can install and run rocminfo:

   sudo dnf install rocminfo
   rocminfo

OpenCL

ROCm OpenCL can be installed with:

   sudo dnf install rocm-opencl

As well, rocm-clinfo or clinfo can be installed to verify it is working, e.g.:

   sudo dnf install rocm-clinfo
   rocm-clinfo

HIP

HIP is included in Fedora 39 and is pending for Fedora 38. For Fedora 38, you will need to add --enable-repo=updates-testing to dnf if it's not available yet.

Install with:

   sudo dnf install rocm-hip

For use with Blender, you might need to also install "rocm-hip-devel" if it does not detect HIP.

Intel

TODO: incomplete, take me!

Packages

Packages that use HC

Blender

Build with:

   rpmbuild --with rocm