Windows 7 64ビットでのみベンチマークを行うには、さまざまなc /c++プロセスをマシンの特定のコアに固定する必要があります。私のマシンには16コア(2x8)があります。特定のプロセスのコード内からSetProcessAffinityMaskを呼び出して、これを実行しようとしています。それが正しいと仮定すると、この関数をどのように正確に使用するかがわかりません。ドキュメントを見ましたが、2番目の引数が何である必要があるかについての説明を理解できません。また、SOまたはGoogleで検索したc /c++の使用例も見つかりませんでした。
質問1:16コアマシン(2cpux8)を例にとり、ac / c ++プロジェクトを取り上げて、SetProcessAffinityMaskを使用して16コアのそれぞれを選択する方法の実例と、私の理解のための2番目の引数の説明を提供してください。コアIDを0〜15から同等のビットマスクに変換するにはどうすればよいですか?
質問2:1つのCPUに16コアではなく、2x8コアがある場合、使用法に違いはありますか?それとも同じ使い方ですか?
どうもありがとう。これが私がこれまでに持っているものです。
#include <Windows.h>
#include <iostream>
using namespace std;
int main () {
HANDLE process = GetCurrentProcess();
DWORD_PTR processAffinityMask = 0; /// What to do here?
BOOL success = SetProcessAffinityMask(process, processAffinityMask);
cout << success << endl;
return 0;
}