64コアを超えるCPUでのプロセッサの指定が上手く出来ません。

伊東 慶是 0 評価のポイント
2024-05-23T05:06:41.14+00:00

Xeon Platinum 8351Nを使用している環境です。

ハイパースレッディングが有効で72コアとして認識しているためグループ0=64コア、グループ1=8コアとなっています。

アプリケーションを起動したときグループ0側のコアで起動すれば最大64コアまで使用できますが、グループ1側で起動してしまうと8コアまでしか使用できない為、処理速度が低下してしまいます。

プログラム起動時にスレッドのアフィニティ設定を行っていますが、グループ1側で起動してしまうとグループ1側のコアが選択できません。

グループ0側で動作するように設定する方法は無いでしょうか。

現在試しているプログラムコード

    WORD groupNumber = *reinterpret_cast<WORD*>(lpParam);
    GROUP_AFFINITY groupAffinity = {0};
    groupAffinity.Group = groupNumber;
    groupAffinity.Mask = (KAFFINITY)-1;
   
    if (!SetThreadGroupAffinity(GetCurrentThread(), &groupAffinity, nullptr))
    {
        std::cerr << "Failed to set thread group affinity: " << GetLastError() << std::endl;
        return 1;
    }
Windows 10
Windows 10
パーソナル コンピューターとタブレットで実行される Microsoft オペレーティング システム。
85 件の質問
0 件のコメント コメントはありません
{count} 件の投票

1 件の回答

並べ替え方法: 最も役に立つ
  1. hidaka 81 評価のポイント MVP
    2024-05-31T05:13:47.3366667+00:00

    肝心のPCのメーカーやマザーボードが不明なので「回答」にはならないかも知れませんが、Windows の問題というよりは、ざっと検索すると、マザーボードやBIOSの作りが原因の様です。

    https://stackoverflow.com/questions/28098082/unable-to-use-more-than-one-processor-group-for-my-threads-in-a-c-sharp-app

    0 件のコメント コメントはありません