此时即是所谓的"断言失败"(assertion failed)
这个函数实际上有两个版本, 一个是CPU上用的版本, 一个是device(GPU)上用的版本.无论哪个版本都需要#include <assert.h...其次, 如果你在Host上曾经用过此函数, 则知道此函数主要是用来辅助调试的.我们耳熟能详的某个程序突然崩溃了, 提示在某某地方断言失败, 然后可选的问你是否发送错误报告之类的,就是CPU版本的常见表现..., 某行处, 断言失败云云.此时根据情况, 如果此CUDA软件是独立运行的, 直接就会彻底的挂掉, context被损坏, 完全无法继续, 必须重置设备或者重建context(后者对于driver api...例如当前发生assertion失败时刻的局部变量, global memory, shared memory内容之类的信息.所以这是一个很好的调试工具....(NV的NSight可以调试DX的shader, OpenGL的Shader, C++ AMP, CUDA, 但就是不能调试OpenCL.)
assert很大程度上等价于, 你使用NSight的时候,