Skip to content

Initial AMD GPU Support (ROCm/HIP) #1367

@ptheywood

Description

@ptheywood

Add support for AMD GPUs via ROCm/HIP.

Initial AMD GPU support will be limited in scope:

  • Linux only (Windows may work, but will not be tested)
  • ROCM/HIP 7.x only (possibly expanding to include 6.x)
  • Offline C++ only (no c++ RTC, no python)
  • Limited host compiler support (amdclang shipped with ROCm only?)
  • No visualisation support
  • No MPI support
  • No GLM support (may work, unliekly to be tested)
  • ...

This will (almost certainly) result in breaking changes, both to the FLAME GPU API, and to CMake configuration options.

  • Required CMake changes for general HIP support
  • CMake fatal errors on not-implemented optional features
  • CI support
    • if viable for free GitHub action runners, given the full rocm toolkit is 20GB, targetted sub-package installation should be possible for 7.x but unsure on the size of a minimum viable ROCm cmake workflow.
    • Standard runners have 14GB of storage available.
    • rocm/dev-ubuntu24.04 is 6.9GB, which might be viable (but would not be suitable for future pythong support)
    • Edit: This appears to be viable and relatively light to just install subpackages, but will need to test with the full FLAMEGPU build. Also possible to install on EL8 (via the RHEL instructions for alma) for ManyLinux_2_28 builds, although this will be left for the subsequent work to add pyflamegpu support for AMD
  • Initial predominanlty macro-based CUDA/Rocm/hip abstraction layer, with as few changes as possible.
  • Clang warning suppressions / fixes (I'll not fully test this with CUDA as the host compiler / include visualisation support, so not a full replacement for Re-introduce Clang host compiler support #936 but should cover a lot of it)

Subequent AMD GPU support would then include (to be defferred to separate issues at a later date):

  • A more refined abstraction of CUDA/HIP differences
  • Wider support of OS/Compilers
  • Wider support of optional FLAME GPU features, including python wheels.

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions