在计算机体系结构中,并行度是指指令并行执行的最大条数。在设计并行程序时,我们可以简单地把并行度认为是在多核/众核处理器上能同时执行的线程数/进程数。对于同一个程序,并行度设计方法的不同将会严重影响到程序的性能。MIC上的并行度优化主要涉及并行线程/进程的数目、并行层级、并行粒度等方面。
1 并行度
MIC卡包含众多的物理核,同时每个核上可以开启4个线程,因此,程序员只有设计足够多的线程/进程才可以把所有的核利用起来。例如一块60个核的MIC卡上,我们最多可以开启240个线程,最佳线程数一般是每个核设置3个或4个线程,图1展示的是某一实际高性能应用程序在60个核的MIC卡上设置不同线程数的性能扩展性结果图,从该图可以看出,只有让MIC卡上的所有核都充分利用起来才能发挥MIC的最大性能。当然,也不是在MIC卡上设置的线程数越多越好,线程数太