CUDA在单个内核启动中块执行的顺序



我总共启动256个线程。当我启动单个块时,一切都很好。但是当我在2x2块中启动线程时,每个块都有(8x8个线程),内核就会无限循环。好吧,真正的问题是我的内核代码等待其他块的部分结果,在运行了几个测试之后,我观察到这些块是以随机顺序启动的,而它们似乎是按顺序执行的。

如果CUDA块从同一内核启动,它们是否并行运行?我使用的GPU不是限制,因为我只启动256个线程,GTX 580可以处理它们。(在一个16x16线程的单块启动中,一切都很好)有没有办法让我知道执行的顺序或者指定它?

是的,块是并行运行的。并行运行多少块由GPU的性能决定,但重要的是块的启动顺序是未定义不可定义。点击这里阅读更多内容——第2.2章,最后三段。

最新更新