2012-04-09 4 views
0

난처한 병렬 선형 문제 (각 반복이 많은 반복을하는 루프는 다른 반복과 독립적 임)의 코어 수를 늘리면 효율은 어떻게 든 감소합니다 (Ts/(p * Tp)의 효율성) 어떻게 든 코어 수에 비례하여 선형 적으로 계산합니다.openmp 이론 대 실무 효율성?

실제로 스레드 스케줄링, OS 및 캐시 문제로 인해 구현이 많이 느려질 수 있습니다.

나는 속도 향상을 얻을 수 있다고 덧붙일 수 있으며, 이론상의 문제는 이론적으로 이론상으로 의 효율성이 p가 증가하는 선형 속도 향상을 갖는다.

질문 : OS, 스레드 스케줄링, 메모리 액세스 및 기타 유형의 기술적 제한 사항은 프로세서 수가 증가함에 따라 알고리즘의 효율성에 어떤 영향을 줍니까? 그것은 전혀 영향을 주어야합니까?

+2

문제와 구현에 따라 달라질 수 있으므로 대답 할 수 없습니다. 그리고 "받아 들일 수있는"것은 나에게 주관적으로 보인다. – duffymo

+0

더 많은 정보를 추가하여 질문에 희망적으로 답변 할 수 있습니다. – labotsirc

+0

아니요, 여전히 너무 일반적입니다. – duffymo

답변

3

당신은 Amdahl's Law과 같은 것을 생각할 수도 있지만 각 경우의 특성에 따라 아래로 고정하기가 어렵습니다.

+0

덕분에, 나는 이미 한 번 전에 모습을 보였고, 실제로 어떤 일이 일어나는지 명확히하는 데 도움이되었지만, 메모리, OS 및 캐시가 얼마나 많은 양의 openmp를위한 효율성에 영향을 미치는지는 여전히 수수께끼입니다. 나는 다른 사람들이 선형 속도 향상 알고리즘에 대한 선형적인 효율성을 얻었는지 알고 싶습니다. – labotsirc

1

당신은 강력한 확장으로 보일 것입니다 :

https://www.sharcnet.ca/help/index.php/Measuring_Parallel_Scaling_Performance#Strong_Scaling

당신 때문에 당신이 언급 한 모든 요소의 문제에 더 많은 코어를 추가로 당신은 기본적으로 수익을 감소 얻을.

+0

덕분에, 이것이 hapenning (반품 감소)이라고 생각합니다. 나는 문제의 유형 때문에 어쩌면 눈에 띄는 효과를 보지 못했던 gpus에서 프로그래밍하는 데 익숙했다. – labotsirc

+0

강력한 스케일링 테스트를 한 다음 가장 빠른 결과를 산출하는 코어 수를 사용하는 것이 좋습니다. 그러나 이것은 기계에 의존 할 것이라는 점을 염두에 두십시오 – Benoir

+0

위대한, 좋은 조언을 해주셔서 고마워요. – labotsirc

0

문제가 CPU 바운드 또는 메모리 바운드입니까? SMP 또는 NUMA와 같은 시스템 아키텍처는 무엇입니까? 프로세서에 캐시가 얼마나 있습니까? 스레드를 코어에 바인딩 할 것인가 말 것인가? ...

질문에 답하기 전에 고려해야 할 매개 변수가 너무 많습니다. 증가하는 비효율을 발생시키는 원인과 원인을 파악하기 위해 Intel VTune Amplifier 또는 Oracle Collector/Analyzer와 같은 것을 사용하는 것이 좋습니다.