OrochiHIP / CUDA API 动态处理
Orochi 是一个动态加载 HIP 和 CUDA API 的库,允许用户在运行时切换 API。
使用 Orochi 便无需为每个 API 编译单独的实现。只需编译和维护单个二进制文件,即可在 AMD 和 NVIDIA GPU 上运行的。
和在编译时使用 hipamd 或 CUDA 的 HIP 不同,Orochi 将根据使用的平台,动态加载相应的 HIP/CUDA 共享库。换句话说,它将 HIPEW 和 CUEW 提供的功能组合到一个库中。
要求
此库不需要您在构建时链接到 CUDA(用于驱动程序 API)或 HIP(用于驱动程序和运行时 API)。
如果您不使用运行时 API,则无需在机器或 CUDA SDK 上安装 HIP SDK。
要运行使用 Orochi 编译的应用程序,需要安装选择的驱动程序,以及基于可用 GPU 的相应 .dll/.so 文件。Orochi 会在运行时自动链接相应的共享库。
API example
API 有 oro
前缀, 如果你熟悉 CUDA 或 HIP 驱动程序 API,将很容易习惯 Orochi API。
例如,假设有以下用于设备和上下文创建的 HIP 代码:
#include <hip/hip_runtime.h> hipInit( 0 ); hipDevice device; hipDeviceGet( &device, 0 ); hipCtx ctx; hipCtxCreate( &ctx, 0, device );
相同的代码可以使用 Orochi 重写为:
#include <Orochi/Orochi.h> oroInitialize( ORO_API_HIP, 0 ); oroInit( 0 ); oroDevice device; oroDeviceGet( &device, 0 ); oroCtx ctx; oroCtxCreate( &ctx, 0, device );
它将在运行时在 CUDA 和 HIP 上运行!
在示例应用程序中查看更多信息。
评论