如何在Xeon Phi上检查MKL调用是否在正确的线程数下运行?

时间:2015-11-20 20:11:05

标签: linux-kernel mpi intel-mkl xeon-phi

我正在运行60个MPI进程,并且MKL_THREAD_NUM设置为4以使我获得Xeon Phi上的完整240个硬件线程。我的代码正在运行,但我想确保MKL实际上使用4个线程。使用有限的Xeon Phi linux内核检查这个问题的最佳方法是什么?

2 个答案:

答案 0 :(得分:0)

将MKL_NUM_THREADS设置为4.您可以使用环境变量或运行时调用。该值将得到尊重,因此无需检查。

KNC上的Linux内核没有被删除,所以我不知道为什么你认为这是一个限制。不过,你不应该使用任何系统调用。

答案 1 :(得分:0)

如果您愿意,可以将MKL_NUM_THREADS设置为4。但是,使用每个单独的线程并不一定能提供最佳性能。在某些情况下,MKL库知道算法的含义,这意味着更少的线程更好。在这些情况下,库例程可以选择使用更少的线程。如果你有61个核心,你应该只使用60个MPI等级。如果你要使用那么多MPI等级,你需要将I_MPI_PIN_DOMAIN环境变量设置为"核心"。请记住为操作系统和系统级进程留出一个可用的核心。这将在协处理器上放置每个核心一个等级,并允许每个MPI进程的所有OpenMP线程驻留在同一个核心上,从而为您提供更好的缓存行为。如果这样做,您还可以在主机处理器上以gui模式使用micsmc来持续监视所有核心上的活动。每个核心使用一个MPI处理器,您可以看到核心上所有线程的使用时间。