这两者的设定方式都是通过cudaDeviceSetLimit来进行的,这样, 结合我们的, 动态并行之前的章节, CUDA目前一共有5个限制可以用户设定:
(1)每个线程的堆栈大小(cudaLimitStackSize...这样可以一共准备20个保存结果的位置(例如20个队列之类的东西), 每个位置通过SM的ID确定和kernels里面的blocks的对应关系,(例如一个10000个blocks的kernel启动) ,这样有时候可以用这种优化...kernel, 在特定的卡上 + 特定的驱动下, 这种行为经过测试没有问题, 才要这样用(大部分自家购买的集群上面的这种行为在目前的卡上一般是安全的,自己的一个独立的kernel + 不会更新的系统环境--集群么....报告和错误则是硬件环境造成的(例如显存颗粒不稳定, 或者某时某刻太阳黑子爆发之类的导致的) ,注意ECC有些错误能修复, 有些不能了.我使用过的带有ECC的卡, 没有遭遇过ECC报告和错误, 无论是能修复的还是不能的...(用nvidia-smi可以看到和重置报告).但是Host上的ECC的内存的报告, 还是见过的.概率较低, 大约一年一台机器24x7的运行, 能遇到1-2次,但这么多年来, 遇到的这些错误都被修复了.