cudaStreamAddCallback()函数怎么使用呢?编程手册中给的示例如图1所示:[attach]2974[/attach]
按照这种形式的话,编译时提示error: argument of type “void (*)(void *)” is incompatible with parameter of type “cudaStreamCallback_t”,在runtime api中有的定义如下图所示
[attach]2975[/attach]
求各位版主指点
[i][i][i][i][i][i][i][i][i][i][i][i][i][i]
[/i][/i][/i][/i]
[/i][/i][/i][/i][/i][/i][/i][/i][/i][/i]
楼主您好,您需要的回调函数的原型不是您给出的这种,
而是需要如下更改:
void CUDART_CB MyCallback(cudaStream_t stream, cudaError_t status, void *data)
{
…
}
手册里的写法是错误的。(手册有很多错误,请注意识别。成功的识别出来,也增长了您的经历和经验的。)
抱歉回复慢了。昨晚喝多了。睡到刚才起来。
非常感谢你的提问,文档Bug已经提交,正在处理之中。
大善!感谢ZHW的大力支持。以及手册还有海量BUG! 要不要ZHW搜搜本论坛的历史贴子,一并找出?或者将来遇到新BUG, 也烦请一并改正。感谢贵NV开发组的的大力支持!
呵呵,我们会认真对待每一个BUG。横扫要是知道哪些BUG,告诉我们,我们会不胜感激。
未来我们将持续关注论坛,如果发现大家提出的bug会立刻处理。
我在平日阅读手册的时候和解答本论坛人帖子的时候,发现了一些,但没有整理,非常零散。需要找。
手头唯一立刻能想起的就是从3.2到5.0都没有改正的shared memory的bank conflict那段的例子代码有个错误,好象是:
shared float abc[…];
double r = abc[threadIdx.x];
然后手册这里例子是用来演示“2.x在warp读取连续double的时候无bank conflict是因为硬件特别处理了“,但此代码和用来表达的文字不符。这个代码实际上是对float的值进行读取,然后cast为double. 的确无bank conflict, 但不是硬件。而是因为读取的就不是double.
以及类似很多,但临时想不起来。这一个先看看?感谢ZHW!!!