无法从主机调用CUDA半精度函数

时间:2018-05-30 09:44:02

标签: cuda precision

我正在尝试做一些具有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}}。想法?

1 个答案:

答案 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之间进行的