目前,我正在开发一个内核,可以使用float16类型对其进行优化。但是,我没有找到任何有关将float16转换为float *的文档,因为我的输出变量是float *。这是示例代码

_kernel void IncrementMatrix( __global float* Source, __global float* Target, __global float* out )
{
   const int globalID = get_global_id(0);
   float16 S = vload16( globalID , Source );
   float16 T = vload16( globalID , Target );
   S = S + T;
   out[globalID*16] = (float*)S; // this is not working
}

我已经尝试过这个 =(float *)S; ,但是给出了无效的类型转换错误。

最佳答案

就像您使用vload16()加载数据一样,使用vstore16进行存储

像这样:

vstore16(S, globalID, out)

关于c++ - OpenCL将float16转换为float *,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50211308/

10-11 21:32