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.