OrochiHIP / CUDA API 动态处理

联合创作 · 2023-09-29 15:37

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 上运行!

示例应用程序中查看更多信息。

浏览 6
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

编辑 分享
举报