0

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

4

2 回答 2

1

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

于 2015-11-24T21:04:08.920 回答
0

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

KNC 上的 Linux 内核没有被剥离,所以我不知道你为什么认为这是一个限制。无论如何,您不应该为此使用任何系统调用。

于 2015-11-21T03:04:39.630 回答