关于控制权的问题,发射kernel后,CPU是闲置等待kernel全部做完吗?还是自行执行下面的CPU代码,如果下面的CPU代码用到的变量会先被kernel更新呢?CPU怎么知道判断这行命令要等还是可以先执行?请教。。
楼主您好,
CPU总是继续往下执行的。
而是否需要等待,取决于您的逻辑上的需要与否,如果您需要立刻等待GPU的结果(例如cudaMemcpy回来的结果),那么您将使用cudaMemcpy(),被在此等待。
反之,如果您不需要结果(或者短期内不需要),那么您的CPU thread可以继续执行任何其他需要的代码,而无需理会GPU.
其次,GPU kernel一般认为不能更新host thread用的变量(host mapped memory除外),考虑到您不知晓前文的基本逻辑概念,我认为您不需要理会此问题。
总之,是否知道此kernel是否需要等待不是个问题,因为他取决于您的决定,而不是任何书本的要求。
请您知晓这一点。
谢谢解释
受教育了,谢谢
mingwangxing您好:
本版禁水,请勿用与讨论内容无关的回复顶贴。