CUDA编译错误:__hmul和__hneg未定义

Chr*_*let 3 c++ cuda visual-c++

我正在尝试使半精度内在函数在CUDA上运行。的half类型,__float2half()以及__half2float()预期功能的编译工作。但是,每当我引用或类似内容时__hmul,都会出现编译错误__hneg。确切的错误是:

identifier "__hmul" is undefined
Run Code Online (Sandbox Code Playgroud)

我的代码如下:

#include <cuda_runtime.h>
#include <cuda_fp16.h>

__global__ void foo(float in, float multiplier, float& out)
{
    half in_half = __float2half(in);
    half multiplier_half = __float2half(multiplier);
    half out_half =  __hmul(in_half, multiplier_half);

    out = __half2float(out_half);
}
Run Code Online (Sandbox Code Playgroud)

我列出了我认为正确的标题。我是否缺少标题或其他内容?

我正在使用Visual Studio 2015,针对cudart_static.lib,定位sm_52和和sm_61(GTX 970及更高版本)进行编译。

Chr*_*let 5

CUDA计算功能版本sm_52及以下版本不支持该__hmul功能。目标至少应为sm_53

在Visual Studio中,转到项目属性,打开Cuda C/C++组并选择Device选项卡,然后更新Code Generation设置,以使所有目标体系结构都等于sm_53或更高。