← 返回首页
Orochi - AMD GPUOpenOrochi - AMD GPUOpen

Support both HIP and CUDA® with ease

The Orochi library loads HIP and CUDA® APIs dynamically, allowing you to switch between them at runtime. Orochi is named after a legendary Japanese dragon with eight heads and eight tails on a single body. In keeping with its namesake, Orochi enables a single library to use multiple backends at runtime.

Download the latest version - v2.0

This release adds the following features:

  • Support many more CUDA/HIP functions compared to Orochi 1. Should be almost exhaustive.
  • We will keep one branch per version of CUDA/HIP, (example of branch name: release/hip5.7_cuda12.2),
    so developers can switch on branches depending on their environment.
    If you need a combination that doesn’t exist, open an ‘Issue’ on the GitHub of the project.
  • Change compared to Orochi 1: you need to install the CUDA SDK corresponding to the branch you are using.
    for example, if you use branch release/hip5.7_cuda12.2, install CUDA SDK 12.2.
    However CUDA will still be dynamically loaded at runtime, only includes of the SDK are used at compile time.
  • New demo for textures.
  • New demo for Direct3D® 12 interop.
  • Some refactoring/improvement of OrochiUtils .
  • Orochi.h can be included in the kernel files to have the oro* names.
  • The binding and naming between HIP/CUDA have been improved and developed in a way it should be easier to maintain for future versions.
  • Most of the Orochi/OrochiUtils API has not been changed so updating the project from Orochi 1.0 to 2.0 should be straightforward.
  • We included an experimental high performance radix sort which we are going to publish the detail in the future.

Features

  • No need to compile two separate implementations for HIP and CUDA.
  • Compile and maintain a single binary that can run on both AMD and NVIDIA® GPUs.
  • Dynamically load the corresponding HIP/CUDA shared libraries depending on your platform.
  • Combines the functionality offered by both HIPEW and CUEW into a single library.
  • No need to link to CUDA (for the driver APIs) nor HIP (for both driver and runtime APIs) at build-time.

Requirements

To run an application compiled with Orochi, you need to install a driver of your choice with the corresponding .dll/.so files based on the GPU(s) available. Orochi will automatically link with the corresponding shared library at runtime.

Version history

Version 2.0 (March 2024)

  • Support many more CUDA/HIP functions compared to Orochi 1. Should be almost exhaustive.
  • We will keep one branch per version of CUDA/HIP (example of branch name: release/hip5.7_cuda12.2), so developers can switch on branches depending on their environment.
  • If you need a combination that doesn’t exist, open an ‘Issue’ on the GitHub of the project.
  • Change compared to Orochi 1: you need to install the CUDA SDK corresponding to the branch you are using.
    • For example, if you use branch release/hip5.7_cuda12.2, install CUDA SDK 12.2.
    • However, CUDA will still be dynamically loaded at runtime, only includes of the SDK are used at compile time.
  • New demo for textures.
  • New demo for Direct3D® 12 interop.
  • Some refactoring/improvement of OrochiUtils.
  • Orochi.h can be included in the kernel files to have the oro* names.
  • The binding and naming between HIP/CUDA have been improved and developed in a way it should be easier to maintain for future versions.
  • Most of the Orochi/OrochiUtils API has not been changed so updating the project from Orochi 1.0 to 2.0 should be straightforward.
  • We included an experimental high performance radix sort which we are going to publish the detail in the future.

Version 1.00 (September 2022)

Version 0.00 (February 2022)

Related news and technical articles

AMD DGF: An Open Geometry Compression Standard
AMD is partnering with Samsung on a multivendor Vulkan extension for Dense Geometry Format (DGF) to help enable dramatically smaller geometry, reduced memory/latency for ray-traced real‑time 3D, and easier engine integration.
Introducing AMD DGF SuperCompression
AMD DGF SuperCompression (DGFS) cuts DGF geometry file sizes while preserving exact block reconstruction and enabling fast decode to either DGF blocks or conventional meshlets for cross-device deployment.
HIP Threads: GPU power for teams without GPU experts
HIP Threads lets C++ teams eliminate CPU hotspots by running familiar multithreaded code on AMD GPUs, no kernel rewrites or GPU expertise required, delivering real speedups in days.
AMD Radeon Anti-Lag 2 SDK
Learn how to integrate the AMD Radeon Anti-Lag 2 SDK into your game. Unlike the driver-based AL 1, AL 2's point of insertion is at the optimal point inside the game's logic, just before the user controls are sampled.
Application portability with HIP
This blog discusses various ROCm tools developers can leverage to port existing applications from CUDA to HIP.
Introducing Compressonator v4.5 with up to 20% improvement in Brotli-G compression
Compressonator v4.5 introduces improved BC1-BC5 compression that reduces file sizes on average by 10%-15% using a new Brotli-G zip packaging feature, mipmap changes, ETC codec fixes, and more.
Introducing HIP RT v2.2
With the release of v2.2, HIP RT now support multi-level instancing. Multi-level instancing can help to reduce memory requirements, allowing you to render large scenes with limited memory.
Announcing AMD RenderStudio - supporting collaborative 3D creation and rendering in the OpenUSD and MaterialX ecosystem
Introducing AMD RenderStudio - a set of tools for cross-user collaboration using the OpenUSD and MaterialX ecosystem.