我获得了一个最近使用 Kerrighed 构建的集群的访问权限。我是这个集群的第一个用户,因此设置和配置问题可能是可能的。我对 Kerrighed 也是完全陌生的(而且主要是对集群计算的陌生)。我在执行一些基本任务时遇到了麻烦,我想检查一下我是否正确地设想了集群应该如何运行。
具体来说,我创建了一个简单的 OpenMP 程序作为测试用例。根据我设置、编译和运行程序的方式,我预计该程序将利用集群的 24 个核心。然而,尽管更改了环境变量 OMP_NUM_THREADS 和其他 OMP 环境变量,情况并非如此。
我正在使用这个程序作为测试用例:
#include <omp.h>
#define NRA 4800
#define NCA 1000
#define NCB 10000
int main (int argc, char *argv[])
{
int tid, nthreads, chunk, i, j, k;
chunk = 100; /* set loop iteration chunk size */
double temp;
/*** Spawn a parallel region explicitly scoping all variables ***/
#pragma omp parallel shared(nthreads,chunk) private(temp,tid,i,j,k)
{
tid = omp_get_thread_num();
if (tid == 0)
{
nthreads = omp_get_num_threads();
}
/*** Put work inside inner loops, parallelize over the outer loop**/
#pragma omp for schedule (static, chunk)
for (i=0; i<NRA; i++)
{
for(j=0; j<NCB; j++)
for (k=0; k<NCA; k++)
temp = (i+k) * (j+k);
}
} /*** End of parallel region ***/
}
然后我使用以下命令编译测试程序:
gcc-4.7 -fopenmp test.c -o omp
我将线程数设置为环境变量
$ OMP_NUM_THREADS=24 ; export OMP_NUM_THREADS
然后运行程序:
$ ./omp
查看集群使用情况时,命令 omp 仅使用 12 个核心来执行(/proc/cpuinfo 中列出了 84 个核心)。我期望我列出的步骤将导致使用 24 个核心,因为我已在真正的 SMP 机器上运行此代码作为测试,并得到了这些结果。
我在为 Kerrighed 集群编译此文件时是否做错了什么?我还有其他重大误解吗?如果没有,那么推断集群问题的下一步是什么?
谢谢你的帮助,安德鲁
答案1
建议你尝试一下这里——
https://listes.irisa.fr/sympa/arc/kerrighed.users
http://dir.gmane.org/gmane.linux.cluster.kerrighed.user
邮件列表流量较低,但一些 kerrighed 开发人员在那里回答技术问题。
由于您的 kerrighed 集群是新的,因此提供有关您的硬件(每个节点有多少个核心?确切的 CPU 型号是什么?所有节点是否相同?)以及有关 openmp/kerrighed/linux 软件版本的信息可能会有所帮助。
ps 据我所知,kerrighed 仅支持进程迁移,而不是线程迁移,这可能会混淆您的核心计数?