ノード(同じクラスター)ごとにプロセスごとに異なる数のMKLスレッドを作成したいと思います。プロセスごとのスレッド数は、このような方法で入力ファイルに提供されません。
ホストスレッド
ホスト名_1t= 4
ホスト名_2t= 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(threads)が正しく機能しない理由を誰かが助けてくれますか。または、その関数の後に必要な数のスレッドが作成されていないことを確認するにはどうすればよいですか?