发射kernel后CPU干什么

关于控制权的问题,发射kernel后,CPU是闲置等待kernel全部做完吗?还是自行执行下面的CPU代码,如果下面的CPU代码用到的变量会先被kernel更新呢?CPU怎么知道判断这行命令要等还是可以先执行?请教。。

楼主您好,

CPU总是继续往下执行的。

而是否需要等待,取决于您的逻辑上的需要与否,如果您需要立刻等待GPU的结果(例如cudaMemcpy回来的结果),那么您将使用cudaMemcpy(),被在此等待。
反之,如果您不需要结果(或者短期内不需要),那么您的CPU thread可以继续执行任何其他需要的代码,而无需理会GPU.

其次,GPU kernel一般认为不能更新host thread用的变量(host mapped memory除外),考虑到您不知晓前文的基本逻辑概念,我认为您不需要理会此问题。

总之,是否知道此kernel是否需要等待不是个问题,因为他取决于您的决定,而不是任何书本的要求。
请您知晓这一点。

谢谢解释

受教育了,谢谢

mingwangxing您好:

本版禁水,请勿用与讨论内容无关的回复顶贴。