我想为每个节点(同一个集群)的每个进程创建不同的MKL线程数。以这种方式在输入文件中提供每个进程的线程数。
主机线程
主机名_1 t = 4
主机名_2 t = 7
host_name_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(线程)不能正常工作。或者我如何检查以确保在该功能之后创建了所需的线程?
答案 0 :(得分:0)
我得到它的工作。为了一个人也有同样的问题,我发布我的答案。我只是添加mkl_set_dynamic(0);禁用动态线程,它可以工作:)