想问一下在一个核函数里边,能不能再调用其他的核函数,举个例子,一幅图像,对每个像素点进行处理,这是外层的并行,对于每个像素点进行处理时,相关的工作又可以并行,对于这种情况,如何进行处理?
根据你的描述,
如果对于每个像素点都需要大量的线程来并行的话,
你有2个选择:
(1)是升级到计算能力3.5, 外层依然启动像素点个数个线程,然后里面像你说的那样再使用DP进一步启动像素点个数个kernel, 进行处理。
但是我不推荐也不赞同你的这种处理方法。
(2)是无需升级到计算能力3.5的显卡,而是通过组合恰当的grid和block形状,直接启动像素点个数 * 每个像素点所需要的线程数,直接一步只启动一个kernel来处理。这种方法效率一般会较高,同时不需要你买新显卡,而且符合一般的思维习惯。
例如:你可以一个block处理一个像素点,而一共有像素点总数个block. 这样将你原来的处理每个像素点的线程提升为block了,从而可以无需任何特殊硬件就能一个kernel完成你的计算任务。
您觉得呢?
非常谢谢!
玫瑰版版讲得很详细啊…