Bar*_*art 40
不,你不能使用CUDA.CUDA仅限于NVIDIA硬件.OpenCL将是最好的选择.
Khronos本身有一份资源清单.一样的StreamComputing.eu网站.对于您的AMD特定资源,您可能需要查看AMD的APP SDK页面.
请注意,目前有几种方法可以将CUDA转换/交叉编译为不同的语言和API.一个这样的例子是HIP.但请注意,这仍然不意味着CUDA在AMD GPU上运行.
Hug*_*ins 11
您可以使用Coriander在Mac上运行NVIDIA®CUDA™代码,实际上也可以在OpenCL 1.2 GPU上运行.披露:我是作者.用法示例:
cocl cuda_sample.cu
./cuda_sample
Run Code Online (Sandbox Code Playgroud)
您不能将CUDA用于GPU编程,因为仅NVIDIA设备支持CUDA.如果你想学习GPU计算,我建议你同时启动CUDA和OpenCL.这对你非常有益.谈到CUDA,你可以使用mCUDA.它不需要NVIDIA的GPU ..
对.:)你可以使用Hipify将CUDA代码很容易地转换为HIP代码,可以在AMD和nVidia硬件上运行编译.这是一些链接
GPU打开非常酷的AMD网站,它有大量的工具和软件库来帮助GPU计算的不同方面,其中很多都可以在这两个平台上运行
小智 5
正如其他人已经指出的,CUDA 只能直接在 NVIDIA GPU 上运行。如前所述,现有的 CUDA 代码可以进行hipify
编辑,它本质上运行一个sed
脚本,将已知的 CUDA API 调用更改为 HIP API 调用。然后,HIP 代码可以在 NVIDIA(CUDA 后端)或 AMD(ROCm 后端)GPU 上编译和运行。
我想提供的新信息是,如果有人不想要hipify
他们现有的 CUDA 代码(即,将所有 CUDA API 调用更改为 HIP API 调用),还有另一个选项可以使用;只需添加(并包含)一个头文件,将 CUDA 调用重新定义为 HIP 调用。例如,简单的向量加法代码可能使用以下头文件:
#include "hip/hip_runtime.h"
#define cudaMalloc hipMalloc
#define cudaMemcpy hipMemcpy
#define cudaMemcpyHostToDevice hipMemcpyHostToDevice
#define cudaMemcpyDeviceToHost hipMemcpyDeviceToHost
#define cudaFree hipFree
Run Code Online (Sandbox Code Playgroud)
...主程序将包含头文件:
#include "/path/to/header/file"
int main(){
...
}
Run Code Online (Sandbox Code Playgroud)
当然,编译需要nvcc
(照常)在 NVIDIA GPU 和hipcc
AMD GPU 上使用。
关于从哪里开始 GPU 计算(一般来说),我建议从 CUDA 开始,因为它拥有最多的文档、示例代码和可通过 Google 搜索获得的用户体验。好消息是,一旦您知道如何在 CUDA 中编程,您基本上就已经知道如何在 HIP 中编程了:)