我想为每个节点(同一个集群)的每个进程创建不同的 MKL 线程数。以这种方式在输入文件中提供每个进程的线程数。
主机线程
主机名_1 t=4
主机名_2 t=7
主机名_3 t=2
我的代码是这样的:
#ifdef HAVE_LIBMKL_CORE
char* subopts = strdup(conf->subopts);
char* subopts_0 = subopts;
char* tokens[] = {"t"};
char* value;
while (*subopts != '\0') {
switch (getsubopt(&subopts, tokens, &value)) {
case 0:
int threads = atoi(value);
mkl_set_num_threads(threads);
break;
}
}
free(subopts_0);
#endif
当我建立每个节点的性能模型时。它对所有人显示相同的结果。相反,具有更多线程的进程应该更快。有人可以帮助我为什么 mkl_set_num_threads(threads) 无法正常工作。或者我如何检查以确保在该函数之后创建所需的线程数?