
저는 데스크탑/노트북에서 합리적으로 무거운 처리를 실행하는 데 관심이 있습니다(클러스터가 필요할 정도로 나쁘지는 않지만 좋은 가정용 컴퓨터가 필요함). 제 질문은 작업을 가장 빠르게 완료하기 위해 얼마나 많은 스레드를 생성해야 하는가입니다(애플리케이션이 매우 적은 오버헤드로 작업 부하를 분산한다고 가정).
일반적으로 프로세서당 하나의 스레드를 생성하지만 Core i5/i7의 하이퍼스레딩 기능이 실제로 프로세서당 두 개의 스레드(즉, 가상 프로세서당 하나의 스레드)를 생성해야 한다는 의미인지 궁금합니다. 아는 사람 있나요?
*분명히 합리적인 대답은 시도해보고 확인하는 것입니다. 실행하는 데 약 12시간이 걸리기 때문에 처음에 제대로 실행하는 것을 선호하지만 두 가지 방법으로 실행할 기회가 생기면 기꺼이 결과를 게시하겠습니다.
답변1
이는 값비싼 벤치마킹이 필요한 개방형 질문입니다. 나는 개인적으로 그것이 양방향으로 진행되는 것을 보았습니다. 멀티스레딩을 실제로 망친 것이 아니라면 그 차이는 약 +-10%이므로 두 가지 방법을 모두 시도해 볼 가치가 있습니다. 시간이 오래 걸리더라도.
Intel 구성 요소로 구축된 많은 고성능 컴퓨팅 클러스터에는 HT가 비활성화되어 있습니다. 이러한 코드는 하드웨어를 포화시키는 경향이 있고 따라서 성능은 메모리 액세스의 포화와 매우 밀접하게 연관되어 있기 때문에 이는 타당한 이유가 있습니다. 이는 스레드가 구성되고 켜지고 꺼지는 HT의 경우 더 나빠질 것입니다. 보다http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/.
그러나 코드가 고도로 조정되지 않은 경우 거의 동일한 성능 향상을 경험하지 못할 수도 있습니다.http://semiaccurate.com/2012/04/25/does-disabling-hyper-threading-increase-performance/.
단일 CPU 컴퓨팅의 경우 하이퍼스레딩을 비활성화하면 일부 소프트웨어는 1% 증가할 수 있지만 다른 소프트웨어에는 훨씬 더 큰 피해를 줄 수도 있습니다. 아마도 ~10% 정도일 것입니다.
즉, 벤치마크에서 달리 명시하지 않는 한 데스크톱 컴퓨터에서 하이퍼스레드/실제 코어당 스레드 1개를 생성해야 한다는 의미입니다.
답변2
여기서는 코어당 단일 스레드(가상이든 물리적이든)가 가장 좋다는 F@H 접기 경험을 바탕으로 완전히 이야기하고 있습니다.
즉, 조금만 사용하더라도 작업이 중단될 수 있으므로 백그라운드 프로세스 및 일반 컴퓨터 작업을 처리하기 위해 단일 코어를 자유롭게 두는 것이 좋습니다.
작업이 실행되는 위치를 추적하려면 CPU 선호도를 살펴보세요. 일반적으로 다음에 할당합니다.물리적 코어를 먼저(즉:심지어번호 매기기), 하이퍼스레드 코어 순입니다.