笔记(二): 理解CPU并行
线程效率 = 单线程执行时间/ (N个线程的执行时间 * N)
并行开销 = 1 -线程效率 , 并行开销过大也说明性能不佳。
队列、核心和I/O: CPU 与GPU的数据传输 ,核心密集型充分使用核心资源,存储密集型充分使用内存控制器,I/O密集型充分使用CPU的I/O控制器。
开发:
- 远离复杂的核心指令,如sin()、sqrt(),如果必须使用,要保持较少的使用次数。
- ALU在执行整数指令,FPU执行浮点指令,尽量在内层循环中混合使用,ALU优先
- 避免混懒的内存访问,尽量使用批量传输,尽量在内层循环体之外进行大量的计算。
胖线程在启动线程数接近物理核心的数量或者内存带宽饱和时,性能会急剧下降。
木桶原理是GPU代码的关键因素