AMDGPU对CUDA支持方式的分析
AMDGPU对CUDA支持方式的分析
实现方式是针对HIP API(Heterogeneous-Computing Interface for Portability)做CUDA的接口套壳,即将cuda的API接口作为标准接口,用AMD ROCm实现cuda的API(目的就是保证对外的API与CUDA完全相同),但实际调用 HIP+ROCm 的相关接口实现(即实际在A卡上运行),编译生成动态库libcuda*.so,并替换cuda相关动态库,从而完成适配,达到兼容CUDA生态的接口的目的。ROCm提供了HIPIFY工具,用于将CUDA源代码转换为HIP源代码,实现CUDA代码到HIP的移植。
1. ROCm API库文件 — ROCm文档
ROCm API库文件清单,见表1-13。
表1-13 ROCm API库文件清单
| ROCm API库文件 | |
| 人工智能 | C++原型 | 
| 可组合内核 | hipCUB | 
| MIGraphX | hipTensor | 
| MIOpen | rocPRIM | 
| MIVisionX | rocThrust | 
| 通信 | HIP | 
| RCCL | HIP运行时 | 
| 
 | HIPIFY | 
| 数学 | 随机数 | 
| hipBLAS/rocBLAS | hipRAND | 
| hipBLASLt | rocRAND | 
| hipFFT/rocFFT | 
 | 
| hipSOLVER/rocSOLVER | 
 | 
| hipSPARSE/rocSPARSE | 
 | 
| hipSPARSELt | 
 | 
| rocALUTION | 
 | 
| rocWMMA | 
 | 
2. Hipify工具
HIP是 CUDA API 的山寨克隆版。除了一些不常用的功能(如管理内存)外,几乎全盘拷贝 CUDA API,是 CUDA 的一个子集。HIP为开发人员使用HIPIFY,将CUDA应用程序移植到ROCm,HIPIFY会自动转换CUDA应用程序,成为HIP内核语言和运行时API,使用NVIDIA的CUDA编译器,或将AMDCLANG编译为GPU的运行代码。HIP将AMDCLANG
编译为GPU的运行代码,如图1-27所示。
 
 
图1-27 HIP将AMDCLANG编译为GPU的运行代码
    人工智能芯片与自动驾驶
 
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号