关于share memory的计算问题

完成CUDA编程并且编译后,VS输出窗口提示以下信息:
Used 8 registers, 20 bytes smem, 20 bytes cmem[1], 104 bytes lmem
这里的CMEM指的是constant memory吗?LMEM又指的是什么?如果这时候我计算Shared Memory Per Block的话,是不是需要三个数值全部相加?

楼主您好,cmem[*]属于不公开的信息,请等待新版手册公布。

以及我建议您使用visual profiler评估您的local memory使用, 因为有的时候,
简单的大小可能说明不了什么(例如8B, 读写80次,和10B, 读写3次,显然后者带来的性能下降更低,虽然它用的大小更大),而profiler给出的是local memory traffic信息,更能适合作为评估使用。

原来如此
多谢版主指点

另外还有个问题,就是当我对一个二维数组进行处理的时候,如果数组范围定义的稍微大一些,有时候会导致屏幕突然一下黑掉,然后又恢复正常,右下角弹出一个气泡写着“nvidia驱动程序已经恢复正常”,并且这时候计算得到的结果是错误的,请问这是由于我申请的内存空间太大导致的这个结果吗?

LZ您好:

您这个是WDDM驱动下的超时问题,而与您申请多大空间无关。如果您申请的空间大小超出限度你,那么会直接失败的。

请您参考以下链接修改WIN7下的TDR超时限制:

http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6891

另外,稍微补充一下横扫斑竹,LZ您在1#问到shared memory用量应该如何看,其实shared memory是全手动分配和使用的,您写代码的时候应该完全了解用量的。

祝您好运~

感谢版主给我的解决方法···不过我将延时改成十分钟后,仍然会出现这种问题,并且最严重的一次直接导致我电脑蓝屏了,不知道这究竟是怎么一回事?

LZ您好:

版主无法凭空猜测您具体问题的。

1:如果您的程序确实需要更长时间才能算完,比如说需要100分钟或者程序内部有死循环,那么您改为10分钟也依然会超时的。

2:如果您的程序有其他BUG,也会出问题的。

3:以及如果您的硬件不够稳定,比如说散热风扇已经坏掉或者笔记本风道已经积存了大量灰尘,高强度使用您的GPU或许还有其他问题。

总之,版主只能根据经验建议您去排查一些问题的,而无法告知您“究竟是怎么一回事”,因为后者归神灵管辖,版主是无神论者,不和神灵打交道,见谅。

祝您调试顺利~

额····不管怎么说,谢谢斑竹耐心细致给予回答
以后有问题还会向您请教