2017-04-03 5 views
0

10 개의 프로세서가있는 컴퓨터에서 스트림 메모리 대역폭 벤치 마크 (https://www.cs.virginia.edu/stream/)를 실행했습니다. 이 벤치 마크 결과에 따르면 3 ~ 4 개의 프로세서를 사용하면 속도가 약 3 배까지 올라갑니다. MPI 코드의 성능에 대한이 결과의 실질적인 의미는 무엇입니까? 간단하게하기 위해, 프로그램이이 멀티 코어 시스템에서만 로컬로 여러 프로세스를 실행한다고 가정합니다. 그렇다면 메모리 액세스가 많은 프로그램을 실행하는 경우 모든 코어를 사용하더라도 3 배 이상의 속도를 낼 수는 없습니까? 메모리 액세스가 집중적이지 않은 프로그램을 실행 한 경우 이론적으로 전체 10x를 얻을 수 있습니까? 동시에 3 개 프로세서를 사용하는 2 ~ 3 개의 메모리 액세스 집약적 인 프로그램을 동시에 실행하면 3 배속을 얻을 수 있습니까? 아니면 RAM을 동시에 사용하면서 서로 간섭하고 서로를 느리게할까요?스트림 메모리 대역폭 벤치 마크와 MPI를 로컬에서 실행하여 잠재적 인 속도 향상 사이의 실제 관계는 무엇입니까?

답변

1

속도 향상은 코드에 얼마나 많은 병렬 처리가 있는지에 대한 것입니다. 또한 모든 리소스는 응용 프로그램의 유형에 따라 병목 현상이 될 수도 있습니다. 응용 프로그램이 메모리 집약적 인 경우 메모리 대역폭에 의해 제한됩니다. 메모리가 많이 필요하지 않고 병렬 처리가 잘된다면 (예를 들어 Monte Carlo 샘플링을 사용하면) 코어에서 최대 속도에 가깝게됩니다.

마지막 질문에 답하기 (여러 메모리를 많이 사용함) : 하루가 끝날 때 우리는 메모리 컨트롤러를 사용하여 읽기/쓰기를 수행합니다. 따라서 메모리 뱅크와 물리적 페이지가 할당 된 위치에 따라 다릅니다. 따라서 여러분이 언급 한 두 가지 상황 중 하나가 발생할 수 있습니다.

+0

이렇게 많은 수의 프로세서가있는 컴퓨터를 사용하면 단점이 있습니까? 특히 32 개의 프로세서가있는 하나의 컴퓨터가 아닌 4 개의 프로세서가있는 8 대의 컴퓨터에서 MPI 작업을 실행하여 클러스터에서 더 나은 성능을 얻을 수 있습니까? 후자는 노드간에 통신 할 필요가 없지만 전자는 8 개의 개별 노드에 8 개의 개별 메모리 컨트롤러를 가지고 있습니까? –

+0

많은 수의 프로세서를 사용하는 것이 단점이라고 나는 말할 수 없습니다. * 응용 프로그램 * 핵심 역할을합니다. MPI는 노드 간의 통신과 큰 문제 (x * 수의 RAM 노드가 있음)를 실행할 수 있다는 사실을 기억하십시오. 상호 연결은 중요한 역할을하며 오늘날의 인피니 밴드 네트워크는 메시지 크기에 따라 GB/s를 유도 할 수 있습니다. 따라서 마지막 질문에 대답하기 위해 고려해야 할 매개 변수가 있습니다. 대답은 다릅니다. – Arash

+0

차갑고, 나는 "의존한다"는 질문에 대한 대답이라고 생각한다. 더 적은 수의 프로세서로 더 많은 코어를 통해 배포하는 것이 더 빠를 수 있는지 묻는 중이었습니다. 그렇다고 말하는 것이 더 빠를 수 있습니다. 분명히, 나는 프로세스의 로컬 메모리 대기 시간이 더 중요한지 또는 프로세스 간의 데이터 교환으로 인한 지연이 더 중요한지 여부에 달려 있다고 생각합니다. –