openCL作为GPU编程的一种工具库,编程方式 与CPU上不同,尤其是 线程同步。
GPU编程,为了充分利用硬件特性,会开启大量的计算线程,几千甚至几万个逻辑线程。
对于一些复杂的计算过程,往往需要分步骤执行,即存在同步点。例如:A步骤1000个线程执行完毕后(同步点),再B步骤500个线程执行,执行完毕后(同步点),再执行C....等。
本人对不同的 同步方法进行了性能测试。
这里假设读者有一定的 OpenCL编程基础。
GPU编程,为了充分利用硬件特性,会开启大量的计算线程,几千甚至几万个逻辑线程。
对于一些复杂的计算过程,往往需要分步骤执行,即存在同步点。例如:A步骤1000个线程执行完毕后(同步点),再B步骤500个线程执行,执行完毕后(同步点),再执行C....等。
本人对不同的 同步方法进行了性能测试。
这里假设读者有一定的 OpenCL编程基础。