我正在尝试做一些具有CPU和GPU后端的FP16工作。我研究了我的选项并决定使用CUDA's half precision converter and data types.根据我的理解(以及官方documentation),我打算使用的pid = fork do
code
end
Process.detach(pid)
和__device__
意味着函数可以从HOST和DEVICE代码中调用。我写了一个简单的测试程序:
__host__
然而,当我尝试编译它时,我得到:
#include <iostream>
#include <cuda_fp16.h>
int main() {
const float a = 32.12314f;
__half2 test = __float2half2_rn(a);
__half test2 = __float2half(a);
return 0;
}
唯一想到的是我的CUDA是9.1并且我正在阅读9.2的文档,但我找不到它的旧版本,我也找不到{{{ 3}}。想法?
答案 0 :(得分:2)
想法?
切换到CUDA 9.2
您的代码在CUDA 9.2上编译时没有错误,但会抛出您在CUDA 9.1上指出的错误。如果安装了CUDA 9.1,则说明其文档已安装在您的计算机上。在典型的Linux安装中,它将位于/usr/local/cuda-9.1/doc
中。如果您查看/usr/local/cuda-9.1/doc/pdf/CUDA_Math_API.pdf
,您会看到相应的函数仅标记为__device__
,因此这个更改确实是在CUDA 9.1和CUDA 9.2之间进行的