GNU Parallel을 사용하여 선형 확장을 기대할 수 있습니까?

GNU Parallel을 사용하여 선형 확장을 기대할 수 있습니까?

저는 GNU Parallel을 사용하여 벤치마크를 수행했습니다. 단 1개의 코어에서 동일한 작업을 수행하는 것과 비교하여 20개의 코어를 사용하여 속도 향상을 테스트했습니다. 거의 완전한 선형 확장을 기대해야 합니까? 즉, 코어 하나만 사용하는 것보다 계산이 ~20배 더 빠를까요?

명확히 하기 위해 스케줄러(예: slurm)는아니요사용하고 있습니다.

답변1

때에 따라 다르지. 확실히 알 수 있는 유일한 방법은 측정하는 것입니다.

CPU에 하이퍼스레딩이 있는 경우: 아니요. 하이퍼스레딩은 CPU를 2코어로 변환하여 단일 스레드 성능의 약 70%를 제공합니다.

코어가 캐시를 공유하는 경우: 아닐 수도 있습니다. 애플리케이션에 따라 대규모 캐시에 크게 의존할 수 있습니다. 여러 코어가 동일한 캐시를 공유하므로 더 많은 캐시 누락 위험이 있습니다.

CPU가 온도에 따라 주파수를 조정하는 경우(터보 부스트라고도 함): 아니요. 단일 코어는 동일한 속도로 실행되는 CPU의 두 코어에 비해 CPU 온도가 더 낮습니다. 이로 인해 다중 코어가 활성화될 때보다 단일 코어로 CPU가 더 빠르게 실행될 수 있습니다. 이는 하이퍼스레딩과 유사한 경우가 많습니다. 각 코어는 속도가 느려지지만 전체 처리량은 더 높아집니다.

작업이 I/O에 크게 의존하는 경우 상황에 따라 다릅니다. 바라보다https://oletange.wordpress.com/2015/07/04/parallel-disk-io-is-it-faster/

관련 정보