저는 각 노드에 Intel Xeon E5430이 있는 클러스터를 실행하고 있습니다. /proc/cpuinfo는 8개의 코어를 보고합니다. 저는 Ubuntu 16.04LTS에서 gcc 버전 5.3.1로 컴파일된 C/C++를 사용하고 있습니다.
내 작업을 각 노드에 배포하는 것이 쉬운 부분이었습니다. 내 문제는 각 노드에서 실행되는 프로세스와 관련이 있습니다.8개의 동시 스레드를 생성하고 각 스레드가 별도의 코어에 생성되도록 하는 방법은 무엇입니까?
15년 전 32 프로세서 SGI를 사용했을 때, fork 명령은 물리적 프로세서 ID인 정수 인수를 사용했습니다. 물리적 코어에 스레드를 배치하기 위해 포크 또는 스레딩에 유사한 호출이 있습니까?
답변1
이것이 기본적으로 발생한다고 가정하는 것이 안전하지만 다음과 같은 CPU에 대해 사용하려는 CPU 세트의 비트마스크인 CPU 선호도를 명시적으로 설정할 수 있습니다.sched_setaffinity()또는 pthread의 경우pthread_setaffinity_np(). cli 명령은작업 세트. 이는 Linux 및 GNU에만 적용됩니다.