Cuda PTX内核函数的布尔参数不支持?金宝app

2视图(30天)
你好,
我有一个cuda核函数:
__global__无效backprop_float(*完全浮动,const浮*输入,int spotn, const int holoWidth, const int holoHeight, bool addcorr)
当我试着在matlab创建内核对象:
backpropk = parallel.gpu.CUDAKernel (“backprop_kernels.ptx”,“backprop_kernels.cu”,“backprop_float”);
我得到以下错误:
__错误使用iCheckPTXEntryAgainstCProto(第420行)
发现无效的映射类型<逻辑,.u8 >__
如果我改变最后一个函数参数的类型 bool addcorr int 成功,matlab创建内核对象。
(我使用matlab r2012a vstudio2008 cuda工具包v4.2卡gtx 560 ti)
2的评论
Gaszton
Gaszton 2012年9月12日
编辑:Gaszton 2012年9月12日
你好,我对ptx编译使用以下命令:
cmd / k nvcc我“C: \ Program Files \ Microsoft Visual Studio 9.0 \ VC \包括“-gencode =拱= compute_20代码= \“sm_21, compute_20 \”-use_fast_math -ptx backprop_kernels.cu
的ptx .entry:
.entry _Z14backprop_floatPfPKfiiib (.param .u32 _Z14backprop_floatPfPKfiiib_param_0, .param .u32 _Z14backprop_floatPfPKfiiib_param_1, .param .u32 _Z14backprop_floatPfPKfiiib_param_2, .param .u32 _Z14backprop_floatPfPKfiiib_param_3, .param .u32 _Z14backprop_floatPfPKfiiib_param_4, .param .u8 _Z14backprop_floatPfPKfiiib_param_5)
如果我不指定计算架构版本,matlab是能够履行ptx地图,我看到条目s8的情况。
谢谢你!

登录置评。

接受的答案

本Tordoff
本Tordoff 2012年9月13日
谢谢你提供的编译。看来,学校网站的最新版本从映射bool作为“s8”切换到“与”根据目标体系结构(“s8”< sm_20,“与”> = sm_20)。parallel.gpu。CUDAKernel应付不了后者。这是一个错误。
当我们得到一个永久修复工作,我能想到的三个解决方法。这些都是伟大的,但应该让你继续:
  1. 编辑生成的PTX接受“s8”而不是“与”。你要小心,这不会引起问题在PTX条目。
  2. 改变CUDA内核的布尔参数作为unisgned识字课(或其他unsigned 8位类型)。由于PTX治疗布尔值为一个8位类型,这是非常接近正确的行为。
  3. 定点清除sm_13编译,因为这导致学校网站发出“s8”。有性能原因你可能不想这么做。
(2)的一个例子,“国旗”曾经是类型的“bool”:
myKernel.cu:
__global__
无效myKernel(浮动*,浮点数常量*,unsigned char const标志)
{
如果(旗){
* = - (*);
}其他的{
* = *;
}
}
> > k = parallel.gpu.CUDAKernel (“myKernel.ptx”,“myKernel.cu”);
> > =函数宏指令(k2, 0, 1,真的)
和永久性修复时我将会更新这个答案。
2的评论
本Tordoff
本Tordoff 2012年9月18日
这个问题的补丁R2011b和R2012a现在在线:
请您可以试一试,让我知道如果你还有问题吗?

登录置评。

更多的答案(0)

类别

找到更多的在开始使用GPU编码器帮助中心文件交换

标签

社区寻宝

找到宝藏在MATLAB中央,发现社区如何帮助你!

开始狩猎!