From Fedora Project Wiki
 
(56 intermediate revisions by 6 users not shown)
Line 3: Line 3:
== Mission ==
== Mission ==
To encourage the packaging and accessibility of heterogeneous computing projects in Fedora and EPEL. This includes machine learning, OpenCL, and scientific computing.
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 [[SIGs/AI-ML|AI/ML SIG]], we do share communication channels for now. If you're interested, please join us on:
* [https://matrix.to/#/#ai-ml:fedoraproject.org #ai-ml@fedoraproject.org Matrix room]
* #fedora-ai-ml on [https://libera.chat libera.chat IRC] ('''NOTE:''' With [https://discussion.fedoraproject.org/t/matrix-to-libera-chat-irc-bridge-unavailable/87081 the recent Matrix/IRC bridge issues], there may not be much activity on IRC. More conversation happens in the Matrix room)
* [https://discussion.fedoraproject.org/tags/c/project/7/ai-ml-sig #ai-ml-sig on Fedora's Discourse instance]


== Members/Packagers/Reviewers ==
== Members/Packagers/Reviewers ==
Line 9: Line 16:
* Benson Muite
* Benson Muite
* [[User:mhough|Morgan Hough]] (Intel related while testing SODECL on Intel NUCs)
* [[User:mhough|Morgan Hough]] (Intel related while testing SODECL on Intel NUCs)
* [[User:trix|Tom Rix]] (CUDA, OpenCL, Vulkan Compute, Misc)
* [[User:trix|Tom Rix]] (ROCm)
* [[User:Tflink|Tim Flink]]
* [[User:Greencappuccino|Brian Lu]]
* [[User:jsteffan|Jonathan Steffan]]
* [[User:davdunc| David DUncan]] (currently working on Fedora Cloud Edition and want to build Deep Learning Images for public cloud)  


Please add your name above if you want to help.
Please add your name above if you want to help.
Line 18: Line 29:
* Translation of wiki pages and documentation (if applicable)
* Translation of wiki pages and documentation (if applicable)


= AMD's ROCm (OpenCL/HIP) =
= AMD's ROCm (HIP,OpenCL) =
== Package status ==
== Package status ==
Below is a list of ROCm packages with their 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!
If something isn't packaged in Fedora or EPEL, feel free to take it!


This reference might be helpful for those attempting to package:
https://gist.github.com/cgmb/edb7b790ab55681fb2ba5385ee02489b


{| border="1"
{| border="1"
| '''Name''' || '''Fedora Package''' || '''EPEL?''' || '''Upstream package name''' || '''Upstream URL''' || '''Notes'''  ||
| '''Name''' || '''Fedora Package''' || '''EPEL?''' || '''Upstream package name''' || '''Upstream URL''' || '''Notes'''  ||
|-
|-
| roct-thunk-interface || {{ package|rocm-runtime|hsakmt}} || Yes || hsakmt-roct || https://github.com/radeonopencompute/roct-thunk-interface || ||
| rocm-compilersupport || {{ package|rocm-compilersupport|rocm-compilersupport}} || Yes || comgr || https://github.com/radeonopencompute/rocm-compilersupport || ||
|-
| rocclr || {{ package|rocclr}} || Yes || clr || https://github.com/ROCm/clr || ||
|-
|-
| rocr-runtime || {{ package|rocm-runtime|rocm-runtime}} || Yes || hsa-rocr || https://github.com/radeonopencompute/rocr-runtime || ||
| hsakmt || {{ package|hsakmt|hsakmt}} || Yes || roct-thunk-interface || https://github.com/radeonopencompute/roct-thunk-interface || ||
|-
| rocr-runtime || {{ package|rocm-runtime|rocm-runtime}} || Yes || ROCR-Runtime || https://github.com/ROCm/ROCR-Runtime || ||
|-
|-
| rocminfo || {{ package|rocminfo|rocminfo}} || Yes || rocminfo || https://github.com/radeonopencompute/rocminfo || ||
| rocminfo || {{ package|rocminfo|rocminfo}} || Yes || rocminfo || https://github.com/radeonopencompute/rocminfo || ||
|-
| rocm-compilersupport || {{ package|rocm-compilersupport|rocm-compilersupport}} || Yes || comgr || https://github.com/radeonopencompute/rocm-compilersupport || ||
|-
|-
| rocm-device-libs || {{ package|rocm-device-libs|rocm-device-libs}} || Yes || rocm-device-libs || https://github.com/radeonopencompute/rocm-device-libs || ||
| rocm-device-libs || {{ package|rocm-device-libs|rocm-device-libs}} || Yes || rocm-device-libs || https://github.com/radeonopencompute/rocm-device-libs || ||
Line 41: Line 52:
| opencl-icd-loader || || || rocm-ocl-icd || https://github.com/KhronosGroup/OpenCL-ICD-Loader || Fedora already has {{ package|ocl-icd|ocl-icd}}, but the khronos version is required for GL-CL interop support ||
| opencl-icd-loader || || || rocm-ocl-icd || https://github.com/KhronosGroup/OpenCL-ICD-Loader || Fedora already has {{ package|ocl-icd|ocl-icd}}, but the khronos version is required for GL-CL interop support ||
|-
|-
| rocm-opencl-runtime || '''In Testing (F36/EL8/EL9)''' || || rocm-opencl || https://github.com/radeonopencompute/rocm-opencl-runtime || F36: https://bodhi.fedoraproject.org/updates/FEDORA-2022-2cee071a16 ||
| rocm-opencl-runtime || {{ package|rocclr|rocm-opencl}} || Yes || rocm-opencl || https://github.com/radeonopencompute/rocm-opencl-runtime || rocm-opencl is now a sub-package of {{ package|rocclr}} in Fedora 38+ ||
|-
| rocm_smi_lib || {{ package|rocm-smi}} || || rocm-smi-lib || https://github.com/radeonopencompute/rocm_smi_lib ||
|-
| amdsmi || {{ package|amdsmi}} || || amdsmi || https://github.com/ROCm/amdsmi ||
|-
| hipamd || {{ package|rocclr|rocm-hip}} || || hip-runtime-amd || https://github.com/rocm-developer-tools/hipamd || rocm-hip is a subpackage of {{ package|rocclr}} ||
|-
| hipcc || {{ package|rocclr|hipcc}} || || hip-[devel,docs] || https://github.com/rocm-developer-tools/HIP || hipcc is a subpackage of {{ package|rocclr}} ||
|-
| hip-samples || || || hip-samples || https://github.com/ROCm-Developer-Tools/HIP-Examples | requires better cmake infra from upstream ||
|-
| rocm-cmake || {{ package|rocm-cmake}} || || rocm-cmake || https://github.com/radeonopencompute/rocm-cmake || Needed by most of the roc* and hip* packages below ||
|-
| hipblas || {{ package|hipblas}} || || hipblas || https://github.com/rocmsoftwareplatform/hipblas ||
|-
| hipsparse || {{ package|hipsparse}} || || hipsparse || https://github.com/rocmsoftwareplatform/hipsparse  ||
|-
| rocalution || {{ package|rocalution}} ||  || rocalution || https://github.com/rocmsoftwareplatform/rocalution  ||
|-
| rocblas || {{ package|rocblas}} || || rocblas || https://github.com/rocmsoftwareplatform/rocblas ||  ||
|-
| rocfft || {{ package|rocfft}} || || rocfft || https://github.com/rocmsoftwareplatform/rocfft ||  ||  
|-
|-
| rocm_smi_lib || '''See notes''' || || rocm-smi-lib || https://github.com/radeonopencompute/rocm_smi_lib || The deprecated {{ package|rocm-smi|rocm-smi}} should be replaced by this
| hipfft || {{ package|hipfft}} || || hipfft || https://github.com/rocmsoftwareplatform/hipfft || ||
|-
|-
| hip || || || hip-[runtime,devel,docs,samples] || https://github.com/rocm-developer-tools/HIP || Upstream doesn't cleanly separate the cmake logic with hipamd, we should send upstream patches ||
| rocmvalidationsuite || || || rocm-validation-suite || https://github.com/rocm-developer-tools/rocmvalidationsuite || '''requires rocblas, rocm_smi_lib''' ||
|-
|-
| hipamd || || || rocm-hip-runtime || https://github.com/rocm-developer-tools/hipamd || Upstream wants to merge this with OpenCL's sources, so it might be worth waiting to package, or adding as a subpackage for rocm-opencl. Testing version in mystro256's COPR: https://copr.fedorainfracloud.org/coprs/mystro256/rocm-hip/ using rocm-hip to avoid amd branding in Fedora package name. ||
| rocprim || {{ package|rocprim }} || || rocprim || https://github.com/rocmsoftwareplatform/rocprim || ||
|-
|-
| rocm-cmake || || || rocm-cmake || https://github.com/radeonopencompute/rocm-cmake || Needed by most of the roc* and hip* packages below ||
| rocrand ||{{ package|rocrand}} || || rocrand || https://github.com/rocmsoftwareplatform/rocrand || ||
|-
|-
| hipblas || || || hipblas || https://github.com/rocmsoftwareplatform/hipblas || ||
| hiprand ||{{ package|hiprand}} || || rocrand || https://github.com/rocmsoftwareplatform/rocrand || Used to be a subpackage of {{ package|rocrand}} ||
|-
|-
| hipsparse || || || hipsparse || https://github.com/rocmsoftwareplatform/hipsparse || ||
| rocsolver || {{ package|rocsolver}} || || rocsolver || https://github.com/rocmsoftwareplatform/rocsolver || ||
|-
|-
| rocalution || || || rocalutio || https://github.com/rocmsoftwareplatform/rocalution || ||
| rocsparse || {{ package|rocsparse}} || || rocsparse || https://github.com/rocmsoftwareplatform/rocsparse || ||
|-
|-
| rocblas || || || rocblas || https://github.com/rocmsoftwareplatform/rocblas || ||
| rocthrust || {{ package|rocthrust }} || || rocthrust || https://github.com/rocmsoftwareplatform/rocthrust || ||
|-
|-
| rocfft || || || rocfft || https://github.com/rocmsoftwareplatform/rocfft || ||
| hipcub || {{ package|hipcub}} || || hipcub  || https://github.com/rocmsoftwareplatform/hipcub || ||
|-
|-
| rocmvalidationsuite || || || rocm-validation-suite || https://github.com/rocm-developer-tools/rocmvalidationsuite || ||
| rccl || {{ package|rccl}} || || rccl || https://github.com/rocmsoftwareplatform/rccl || no gfx10,gfx1103 support ||
|-
|-
| rocprim || || || rocprim || https://github.com/rocmsoftwareplatform/rocprim || ||
| miopen || {{ package|miopen}} || || miopen || https://github.com/rocmsoftwareplatform/miopen || ||
|-
|-
| rocrand || || || rocrand || https://github.com/rocmsoftwareplatform/rocrand || ||
| tensile || {{ package|python-tensile }} || || ? || https://github.com/rocmsoftwareplatform/tensile || ||
|-
|-
| rocsolver || || || rocsolver || https://github.com/rocmsoftwareplatform/rocsolver || ||
| rocdbgapi || '''In Review || || rocm-dbgapi || https://github.com/rocm-developer-tools/rocdbgapi || [https://bugzilla.redhat.com/show_bug.cgi?id=2246661 Review Link] ||
|-
|-
| rocsparse || || || rocsparse || https://github.com/rocmsoftwareplatform/rocsparse || ||
| rocgdb || '''In Review''' || || rocm-gdb || https://github.com/rocm-developer-tools/rocgdb || A fork of {{ package|gdb|gdb}} with ROCm related addons, '''Requires rocdbgapi''' [https://bugzilla.redhat.com/show_bug.cgi?id=2246670 Review Link] ||
|-
|-
| tensile || || || ? || https://github.com/rocmsoftwareplatform/tensile || ||
| rocprofiler || || || rocprofiler || https://github.com/rocm-developer-tools/rocprofiler || BLOCKED - requires hsa-amd-aqlprofile, a closed source package ||
|-
|-
| rocdbgapi || || || rocm-dbgapi || https://github.com/rocm-developer-tools/rocdbgapi || ||
| roctracer || {{ package|roctracer }} || || roctracer || https://github.com/rocm-developer-tools/roctracer || ||
|-
|-
| rocgdb || || || rocm-gdb || https://github.com/rocm-developer-tools/rocgdb || A fork of {{ package|gdb|gdb}} with ROCm related addons ||
| composable_kernel || || || composable_kernel ||https://github.com/ROCmSoftwarePlatform/composable_kernel || trix is working on this ||
|-
|-
| rocprofiler || || || rocprofiler || https://github.com/rocm-developer-tools/rocprofiler || ||
| hipify || {{ package|hipify}} || || hipify || https://github.com/ROCm-Developer-Tools/HIPIFY || ||
|-
|-
| roctracer || || || roctracer || https://github.com/rocm-developer-tools/roctracer || ||
| hipblaslt || {{ package|hipblaslt}} || || hipblaslt || https://github.com/ROCm/hipBLASLt || only gfx90a support ||
|}
|}


Line 85: Line 118:


{{Admon/warning | Upstream only officially supports x86_64, but they are open to pcc64le and arm64 patches}}
{{Admon/warning | 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.
Some ROCm packages in Fedora are built for all 64bit little endian systems (x86_64, arm64, ppc64le), but official support is for x86_64.
 
Most products starting with vega 10 (Radeon RX Vega) should work without configuration, but any pre-vega HW, such as the RX 400's or 500's, will require setting (note this is no longer required for rocm-opencl-5.2.1-2 or later):


    export ROC_ENABLE_PRE_VEGA=1
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).


{{Admon/warning | Note that your millage may vary, as pre vega HW on ROCm is experimental, missing functionality, and not guaranteed to work on all HW }}
{{Admon/warning | Note that your millage may vary, as pre vega HW on ROCm is experimental, missing functionality, and not guaranteed to work on all HW }}
Line 96: Line 127:


=== Setup ===
=== Setup ===
To enable access to GPU resources for non-root users, the users must be added to the `video` or `render` group. The [https://docs.amd.com/bundle/ROCm-Installation-Guide-v5.2/page/Prerequisite_Actions.html#d3685e735 AMD ROCm Installation Guide (v5.2)] and [https://docs.amd.com/bundle/ROCm-Installation_FAQ/page/Frequently_Asked_Questions.html#d2e165 FAQs] recommend the `video` group for all ROCm-supported operating systems.
To enable access to GPU resources for non-root users, the users must be added to the `video` (graphics) and `render` (compute) group. The [https://rocm.docs.amd.com/projects/install-on-linux/en/docs-6.0.0/how-to/prerequisites.html#setting-permissions-for-groups AMD ROCm Installation Guide (6.0.0)] recommends the `video` and `render` group for all ROCm-supported operating systems.


{{admon/note|Note:| The `render` group is only required for Ubuntu v20.04.}}
To add the current user to the `render` group:


To add the current user to the `video` group:
     sudo usermod -a -G render,video $LOGNAME
 
     sudo usermod -a -G video $LOGNAME


To check for ROCm support of the running HW, you can install and run `rocminfo`:
To check for ROCm support of the running HW, you can install and run `rocminfo`:
Line 111: Line 140:
=== OpenCL ===
=== OpenCL ===


ROCm OpenCL can be installed with (Fedora 36, EPEL8, and EPEL9 are currently in testing):
ROCm OpenCL can be installed with:


     sudo dnf install rocm-opencl
     sudo dnf install rocm-opencl
Line 122: Line 151:
=== HIP ===
=== HIP ===


TODO
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


Some experimental builds exist here (use at your own risk):
For use with '''Blender''', you might need to also install "rocm-hip-devel" if it does not detect HIP.
https://copr.fedorainfracloud.org/coprs/mystro256/rocm-hip/


= Intel =
= Intel =


TODO: incomplete, take me!
TODO: incomplete, take me!
= Packages =
Packages that use HC
== Blender ==
Build with:
    rpmbuild --with rocm


[[Category:SIGs]]
[[Category:SIGs]]
[[Category:Language-specific SIGs]]
[[Category:Language-specific SIGs]]
[[Category:Fedora special-interest groups]]
[[Category:Fedora special-interest groups]]

Latest revision as of 13:52, 31 August 2024

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 (HIP,OpenCL)

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!


Name Fedora Package EPEL? Upstream package name Upstream URL Notes
rocm-compilersupport rocm-compilersupport Yes comgr https://github.com/radeonopencompute/rocm-compilersupport
rocclr rocclr Yes clr https://github.com/ROCm/clr
hsakmt hsakmt Yes roct-thunk-interface https://github.com/radeonopencompute/roct-thunk-interface
rocr-runtime rocm-runtime Yes ROCR-Runtime https://github.com/ROCm/ROCR-Runtime
rocminfo rocminfo Yes rocminfo https://github.com/radeonopencompute/rocminfo
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 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
amdsmi amdsmi amdsmi https://github.com/ROCm/amdsmi
hipamd rocm-hip hip-runtime-amd https://github.com/rocm-developer-tools/hipamd rocm-hip is a subpackage of rocclr
hipcc hipcc hip-[devel,docs] https://github.com/rocm-developer-tools/HIP hipcc 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 hipblas https://github.com/rocmsoftwareplatform/hipblas
hipsparse hipsparse hipsparse https://github.com/rocmsoftwareplatform/hipsparse
rocalution rocalution rocalution https://github.com/rocmsoftwareplatform/rocalution
rocblas rocblas rocblas https://github.com/rocmsoftwareplatform/rocblas
rocfft rocfft rocfft https://github.com/rocmsoftwareplatform/rocfft
hipfft hipfft hipfft https://github.com/rocmsoftwareplatform/hipfft
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
hiprand hiprand rocrand https://github.com/rocmsoftwareplatform/rocrand Used to be a subpackage of rocrand
rocsolver rocsolver rocsolver https://github.com/rocmsoftwareplatform/rocsolver
rocsparse rocsparse rocsparse https://github.com/rocmsoftwareplatform/rocsparse
rocthrust rocthrust rocthrust https://github.com/rocmsoftwareplatform/rocthrust
hipcub hipcub hipcub https://github.com/rocmsoftwareplatform/hipcub
rccl rccl rccl https://github.com/rocmsoftwareplatform/rccl no gfx10,gfx1103 support
miopen miopen miopen https://github.com/rocmsoftwareplatform/miopen
tensile python-tensile ? https://github.com/rocmsoftwareplatform/tensile
rocdbgapi In Review rocm-dbgapi https://github.com/rocm-developer-tools/rocdbgapi Review Link
rocgdb In Review rocm-gdb https://github.com/rocm-developer-tools/rocgdb A fork of gdb with ROCm related addons, Requires rocdbgapi Review Link
rocprofiler rocprofiler https://github.com/rocm-developer-tools/rocprofiler BLOCKED - requires hsa-amd-aqlprofile, a closed source package
roctracer roctracer roctracer https://github.com/rocm-developer-tools/roctracer
composable_kernel composable_kernel https://github.com/ROCmSoftwarePlatform/composable_kernel trix is working on this
hipify hipify hipify https://github.com/ROCm-Developer-Tools/HIPIFY
hipblaslt hipblaslt hipblaslt https://github.com/ROCm/hipBLASLt only gfx90a support

HW Support

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

Some 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 (graphics) and render (compute) group. The AMD ROCm Installation Guide (6.0.0) recommends the video and render group for all ROCm-supported operating systems.

To add the current user to the render group:

   sudo usermod -a -G render,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