mkl_set_num_threads()无法正常工作

时间:2013-02-06 15:19:19

标签: intel-mkl

我想为每个节点(同一个集群)的每个进程创建不同的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(线程)不能正常工作。或者我如何检查以确保在该功能之后创建了所需的线程?

1 个答案:

答案 0 :(得分:0)

我得到它的工作。为了一个人也有同样的问题,我发布我的答案。我只是添加mkl_set_dynamic(0);禁用动态线程,它可以工作:)