【发布时间】:2018-05-26 02:53:55
【问题描述】:
我正在尝试使用 8 位整数内在函数,如本文所述:https://devblogs.nvidia.com/parallelforall/mixed-precision-programming-cuda-8/
在内核中我只是尝试调用
D = __dp4a(A, B, C);
这会导致编译器错误
错误:标识符“__dp4a”未定义
接下来我尝试添加头文件
#include <sm_61_intrinsics.h>
但它没有效果。最后,我添加了这一行:
__device__ int __dp4a(char4 srcA, char4 srcB, int c);
然后我得到另一个编译器错误:
使用 mex
时出错ptxas 致命:未解析的外部函数 '_Z6__dp4a5char4S_i'
我在 GeForce GTX 1080 Ti 上运行 CUDA v8.0,计算能力 6.1,它应该支持 dp4a。我错过了什么吗?这可能是 Mex/Matlab/Visual Studio 问题吗?
【问题讨论】:
-
您是否正在为支持这些内在函数的架构进行编译?
-
我不确定如何设置架构。我刚刚尝试使用 mexcuda '-LC:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64 --gpu-architecture=compute_61 --gpu-code=compute_61' -lcurand mysource.cu 进行编译没有修复错误
-
我认为直接使用 CUDA 8 和
__dp4a没有任何问题(即没有 matlab/mex)。例如,请参阅here。我会假设您的 matlab 版本或一般的 mex 发生了一些事情,但它对我来说并不明显。您可能需要提供minimal reproducible example