From Fedora Project Wiki

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

Installation

The official installation instructions can be found online from AMD here AMD ROCm installation for Linux

Quick Start

The official quick start is AMD Quick start installation guide . The drivers are built with the kernel so there is no need to check your kernel version. The GPU listed in the AMD documentation are a subset of those listed above. The latest Fedora should support the latest GPU or APU.

ROCm installation

Similar to the AMD documentation, for Fedora do

   sudo usermod -a -G render,video $LOGNAME
   sudo dnf install rocm

Optionally for developers, do

   sudo dnf install rocm-devel

AMDGPU driver installation

The AMDGPU driver is not required.

Verifying installation

To verify ROCm has been installed do

   rocminfo

And the results should be similar to

   ROCk module is loaded
   =====================    
   HSA System Attributes    
   =====================    
   Runtime Version:         1.1
   Runtime Ext Version:     1.7
   ...
   *******                  
   Agent 2                  
   *******                  
      Name:                    gfx1201                            
      Uuid:                    GPU-7b2a57bc7a036a5f               
      Marketing Name:          AMD Radeon Graphics                
      Vendor Name:             AMD  
   ...

To verify OpenCL has been installed do

   rocm-clinfo

And the results should be similar to

   Number of platforms:				 1
     Platform Profile:				 FULL_PROFILE
     Platform Version:				 OpenCL 2.1 AMD-APP (3649.0)
     Platform Name:				 AMD Accelerated Parallel  Processing
     Platform Vendor:				 Advanced Micro Devices, Inc.
     Platform Extensions:				 cl_khr_icd cl_amd_event_callback 
   
     Platform Name:				 AMD Accelerated Parallel   Processing
   Number of devices:				 1
     Device Type:					 CL_DEVICE_TYPE_GPU


Update Policy

Upstream

ROCm's upstream release documentation is https://github.com/ROCm/ROCm/releases

ROCm follows a Major.Minor.Patchset release version. Changes to the Major version indicate that this is an ABI breaking change. These typically happen only once every year or two. Minor version indicate an improvement in basic functionally such as to support new hardware, these typically happen every 3-6 months. Finally Patchset releases happen as-needed to address problems with the current minor release and usually happen every 3-6 weeks.

Fedora Rawhide

Rawhide will follow all the public releases of ROCm except for

  • Freezing rawhide before a release branch
  • Individual package update has technical problems ex/ new build requirements.

The health of ROCm and its dependents are tracked with these COPRs

To determine if your package should be added to the COPRs, do this reverse dependency check against the ROCm runtime.

   repoquery --recursive --whatrequires rocm-runtime | grep <package-to-check>

Fedora Releases

The Fedora Release of ROCm will be taken naturally from the branching of Rawhide. The rocm-packagers-sig will use their judgement to use the most stable ROCm release available within the 2-6 weeks before the branch date. The Fedora Release will be locked to the Major.Minor release. Only the Patchset version may change.

These COPR's are used to track the health of ROCm and its dependencies

EPEL

The EPEL release of ROCm happens by explicitly merging Rawhide to the major version EPEL branch (e.g. epel10). The rocm-packages-sig will use their judgement to use a stable ROCm release within minor branches of EPEL. The minor branches for EPEL (e.g. epel10.3) will be locked to a Major.Minor release. Only the Patchset version may change.

These COPR's are used to track the health of ROCm and its dependencies.

  • EPEL10
  • EPEL 9 and earlier has no support

Updates

10.2
10.1
  • Initial enablement to 6.4.2.
  • No Patchset updates

Compatibility Proposal

To support packages that need older versions of ROCm, there is the ROCm compatibility packages. Modeled after llvm compatibility packages, for every ROCm package there is an equivalent MAJOR.MINOR compatibility package.

For example for ROCm 7.2.x

 rocblas -> rocblas-7.2
 rocblas-devel -> rocblas-7.2-devel

The difference between the two are where they are installed. Where as the normal packages are installed to system locations (/usr) , the compatiblity packages are installed to a versioned subdir (/usr/lib64/rocm/rocm-MAJOR.MINOR)

 /usr -> /usr/lib64/rocm/rocm-7.2

Fedora Rawhide

Development

Development happens in the main rawhide branch of every project, to build use

 --with compat

COPR for Rawhide and EPEL building --with compat --with test

New ROCm PATCH version

No change, patch versions fall in the existing update policy

New ROCm MINOR version

Example for ROCm 7.3 Request new compatibility packages

 fedpkg request-repo rocblas-7.3

Existing ROCm MINOR-1 moves to it's compatibility packages

 rocblas-7.2 already exists

Existing ROCm MINOR-2 compatibility packages is retired

 retire rocblas-7.1
New ROCm MAJOR version

The most recent old MAJOR version will not be retired. Example for ROCm 8.0, there will be ROCm 7.Y in Rawhide until ROCm 9.0

Fedora Release

If a compatibility set is used in a release it will not be retired.

EPEL Release

If a compatibility set is used in a release it will not be retired.

OpenSUSE/SUSE

Fedora shares the ROCm packages with OpenSUSE, here is the OpenSUSE development project. https://build.opensuse.org/project/show/science:GPU:ROCm

HW Support

To determine if your hardware is supported, run rocminfo

    rocminfo

And review the lines, looking for output like

    Name:                    gfx1201

And consulting the lists below. If you are unable to run rocminfo, consult Wiki: AMD GPUs. If your GPU is not listed and you would like it to be supported, file a feature request for the Fedora 'rocm' component.

Fedora 45, EPEL 10.3

gfx900 gfx906 gfx908 gfx90a gfx942 gfx950

gfx1010 gfx1012 gfx1030 gfx1031 gfx1035 gfx1036

gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1152 gfx1153

gfx1200 gfx1201

Packages with limited gpu support

composable kernel : gfx11-generic gfx12-generic

hip-tests : gfx1100 gfx1101 gfx1102 gfx1151 gfx1200 gfx1201

hipblaslt : gfx90a gfx1100 gfx1101 gfx1103 gfx1150 gfx1151 gfx1200 gfx1201

hipsparselt : gfx90a gfx1100 gfx1101 gfx1200 gfx1201

rccl : gfx906 gfx908 gfx90a gfx942 gfx950 gfx1100 gfx1101 gfx1102 gfx1200 gfx1201

Fedora 44, EPEL 10.2

gfx900 gfx906 gfx908 gfx90a gfx942 gfx950

gfx1010 gfx1012 gfx1030 gfx1031 gfx1035 gfx1036

gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1152 gfx1153

gfx1200 gfx1201

Packages with limited gpu support

composable kernel : gfx11-generic gfx12-generic

hip-tests : gfx1100 gfx1101 gfx1102 gfx1151 gfx1200 gfx1201

hipblaslt : gfx90a gfx1100 gfx1101 gfx1103 gfx1150 gfx1151 gfx1200 gfx1201

hipsparselt : gfx90a gfx1100 gfx1101 gfx1200 gfx1201

rccl : gfx906 gfx908 gfx90a gfx942 gfx950 gfx1100 gfx1101 gfx1102 gfx1200 gfx1201

Fedora 43, EPEL 10.1

gfx900 gfx906 gfx908 gfx90a gfx942 gfx950

gfx1010 gfx1012 gfx1030 gfx1031 gfx1035

gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1152 gfx1153

gfx1200 gfx1201

Fedora 42

gfx900 gfx906 gfx908 gfx90a gfx942

gfx1010 gfx1012 gfx1030 gfx1031 gfx1035

gfx1100 gfx1101 gfx1102 gfx1103 gfx1150 gfx1151 gfx1152

gfx1200 gfx1201

Fedora 41

gfx900 gfx906 gfx908 gfx90a gfx942

gfx1010 gfx1012 gfx1030 gfx1031

gfx1100 gfx1101 gfx1102

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
amdsmi amdsmi Yes amdsmi https://github.com/ROCm/amdsmi
aqlprofile aqlprofile Yes aqlprofile https://github.com/ROCm/rocm-systems
composable_kernel composable_kernel composable_kernel https://github.com/ROCmSoftwarePlatform/composable_kernel
hipamd rocm-hip Yes hip-runtime-amd https://github.com/rocm-developer-tools/hipamd rocm-hip is a subpackage of rocclr
hipblas hipblas Yes hipblas https://github.com/rocmsoftwareplatform/hipblas
hipblaslt hipblaslt hipblaslt https://github.com/ROCm/hipBLASLt
hipcub hipcub Yes hipcub https://github.com/ROCm/hipcub
hipfft hipfft Yes hipfft https://github.com/ROCm/hipfft
hipfort hipfort Yes hipfort https://github.com/ROCm/hipfort
hipify hipify hipify https://github.com/ROCm-Developer-Tools/HIPIFY
hiprand hiprand Yes hipRAND https://github.com/ROCm/hipRAND
hipsparse hipsparse Yes hipsparse https://github.com/ROCm/hipsparse
hipsparselt hipsparselt hipsparse https://github.com/ROCm/hipsparselt
hip-tests hip-tests Yes hip-tests https://github.com/ROCm/rocm-systems
migraphx migraphx Yes amdmigraphx https://github.com/ROCm/AMDMIGraphX
miopen miopen miopen https://github.com/ROCm/miopen
mivisionx mivisionx mivisionx https://github.com/ROCm/mivisionx
mxdatagenerator mxdatagenerator mxdatagenerator https://github.com/ROCm/rocm-libraries
python-amd-debug-tools python-amd-debug-tools amd-debug-tools https://git.kernel.org/pub/scm/linux/kernel/git/superm1/amd-debug-tools.git
rccl rccl Yes rccl https://github.com/ROCm/rccl
rccl-tests rccl-tests rccl https://github.com/ROCm/rccl-tests
rocal rocal rocal https://github.com/ROCm/rocAL
rocalution rocalution Yes rocalution https://github.com/ROCm/rocalution
rocblas rocblas Yes rocblas https://github.com/ROCm/rocblas
rocclr rocclr Yes clr https://github.com/ROCm/clr
rocdbgapi rocdbgapi Yes rocdbapi https://github.com/ROCm/rocdbgapi
rocdecode rocdecode rocDECODE https://github.com/ROCm/rocDECODE
rocfft rocfft Yes rocfft https://github.com/rocmsoftwareplatform/rocfft
rocjpeg rocjpeg rocJPEG https://github.com/ROCm/rocJPEG
rocm rocm Collects all ROCm packages
rocm-bandwidth-test rocm-bandwidth-test rocm-bandwidth-test https://github.com/ROCm/rocm-bandwidth-test
rocm-cmake rocm-cmake Yes rocm-cmake https://github.com/ROCm/rocm-cmake
rocm-compilersupport rocm-compilersupport Yes llvm-project https://github.com/ROCm/llvm-project
rocm-core rocm-core rocm-core https://github.com/ROCm/rocm-core
rocm-examples rocm-examples rocm-examples https://github.com/ROCm/rocm-examples
rocm-filesystem rocm-filesystem
rocminfo rocminfo Yes rocminfo https://github.com/ROCm/rocminfo
rocm-omp rocm-omp llvm-project https://github.com/ROCm/llvm-project
rocm-origami rocm-origami https://github.com/ROCm/rocm-libraries
rocm-primbench rocm-primbench https://github.com/ROCm/rocm-libraries
rocm-rdc rocm-rdc RDC https://github.com/ROCm/RDC
rocm-rpp rocm-rpp RPP https://github.com/ROCm/RPP
rocr-runtime rocm-runtime Yes ROCR-Runtime https://github.com/ROCm/ROCR-Runtime
rocm_smi_lib rocm-smi Yes rocm-smi-lib https://github.com/ROCm/rocm_smi_lib
rocm-transferbench rocm-transferbench TransferBench https://github.com/ROCm/TransferBench
rocmvalidationsuite rocm-validation-suite rocm-validation-suite https://github.com/rocm-developer-tools/rocmvalidationsuite
rocprim rocprim Yes rocprim https://github.com/ROCm/rocprim
rocprofiler-register rocprofiler-register Yes rocprofile-register https://github.com/ROCm/system-libs
rocrand rocrand Yes rocrand https://github.com/ROCm/rocrand
rocsolver rocsolver Yes rocsolver https://github.com/ROCm/rocsolver
rocsparse rocsparse Yes rocsparse https://github.com/ROCm/rocsparse
rocthrust rocthrust Yes rocthrust https://github.com/ROCm/rocthrust
roctracer roctracer roctracer https://github.com/rocm-developer-tools/roctracer
rocwmma rocwmma rocwmma https://github.com/ROCm/rocwmma
tensile python-tensile Tensile https://github.com/rocmsoftwareplatform/tensile

Testing

There are several COPR's that automatically build packages and can be used to test packages before the offical builds.

There are several different methods for testing the ROCm packages.

Smoke

A simple single test. The ROCm package repos have a test.cpp test and a test.sh driver to build and run the test.

Test Packages

Some ROCm packages are pure test packages. Install the package and test!

Test Subpackages

The upstream project's unit tests are optional packaged using the --with test rpmbuild option. Install the subpackage and test! There are several COPR's the build these optional packages.

Check

The package does not package its unit tests but can run through the %check option in build

Other

Testing is a special case.

ROCm Packages Tests

Package Smoke Test Check Other Upstream Issues
amdsmi No Yes No No
hip-tests No No Yes No
hipblas Yes Yes No No
hipcub Yes No Yes No
hipfft No Yes No No
hiprand No Yes No No
hipsparse No Yes No No
miopen No Yes No No Fails to build
rocblas Yes Yes No No
rocfft Yes Yes No No
rocm-bandwidth-test No No No Yes
rocm-smi No Yes No No
rocminfo No No No Yes
rocprim Yes Yes No No
rocrand Yes Yes No No
rocsolver Yes Yes No No
rocsparse Yes Yes No No
rocthrust Yes No Yes No
rocwmma Yes Yes No No Build can fail on low memory machines

Intel

TODO: incomplete, take me!

Packages

Packages that use HC

Blender

Build with:

   rpmbuild --with rocm