2012-11-20 2 views
3

여러 호스트에서 OpenMP 프로그램을 실행할 수 있는지 알고 싶습니다. 지금까지 여러 스레드에서 실행될 수 있지만 모두 동일한 실제 컴퓨터에서 실행될 수있는 프로그램에 대해서만 들었습니다. 2 명 (또는 그 이상)의 클라이언트에서 프로그램을 실행할 수 있습니까? 나는 MPI를 사용하고 싶지 않다.다른 호스트의 OpenMP 프로그램

답변

9

예, 분산 시스템에서 OpenMP 프로그램을 실행할 수는 있지만 주위의 모든 사용자가 접근 할 수 있을지는 의문입니다. ScaleMP는 비싼 상용 하이퍼 바이저 소프트웨어 인 vSMP를 제공하여 네트워크로 연결된 많은 호스트 위에 가상 NUMA 시스템을 생성 한 다음이 VM 내부의 일반 OS (Linux 또는 Windows)를 실행할 수 있습니다. 고속 네트워크 연결 (예 : InfiniBand) 및 전용 호스트 (일반 OS 아래에서 하이퍼 바이저로 실행되므로)가 필요합니다. 여기에 운영 vSMP 클러스터가 있으며 수정되지 않은 OpenMP 응용 프로그램을 실행하지만 성능은 데이터 계층 및 액세스 패턴에 크게 의존합니다.

NICTA는 vNUMA와 유사한 SSI 하이퍼 바이저를 개발하는 데 사용되었지만 개발도 중단되었습니다. 그들의 해결책 외에도 IA64 특정 (IA64는 인텔 아이태니엄이며 현 세대 x86 CPU 인 인텔 64와 오인하지 않아야합니다.)

Intel은 클러스터 OpenMP (ClOMP : ClomP를 Clang에 OpenMP 지원을 제공하기 위해 유사한 이름의 프로젝트로 오인하지 말 것)을 개발하는 데 사용했지만 고객과의 관심이 일반적으로 낮고 예상보다 적은 경우 때문에 포기되었습니다. 혜택을 보였다 "(here에서). ClOMP는 OpenMP의 Intel 확장이었으며 Intel 컴파일러 제품군에 내장되었습니다. 당신은 GCC (이 request GCC를위한 ClOMP 개발을 시작하는 것은 limbo에 갔다)와 그것을 사용할 수 없었다. 이전 버전의 Intel 컴파일러 (9.1에서 11.1 버전)에 액세스 할 수있는 경우, 제품이 작동하지 않고 오래된 (평가판) 라이센스가 이미있는 경우 불가능할 수도있는 (시험판) ClOMP 라이센스를 얻어야합니다 만료되었습니다. 그런 다음 버전 12.0부터는 인텔 컴파일러가 더 이상 ClOMP를 지원하지 않습니다.

다른 연구 프로젝트가 있지만 (분산 형 공유 메모리 만 검색하면) vSMP (ScaleMP 솔루션) 만 생산 HPC 환경에서 충분히 성숙한 것으로 보입니다 (그에 따라 가격이 책정 됨). 이제는 대부분의 노력이 공동 배열 언어 (Co-Array Fortran, Unified Parallel C 등) 대신 개발 될 것으로 보입니다.나는 당신이 Berkeley UPC을 보거나 MPI를 배우는 데 약간의 시간을 투자 할 것을 제안합니다.

+0

+1. Btw, 다중 코어 클러스터에 MPI + OpenMP를 사용하는 것이 바람직하다고 생각하십니까? – dreamcrash

+0

@dreamcrash, 예, 있습니다. –

2

전에는 Cluster OpenMP이있었습니다.

클러스터 OpenMP는 MPI를 사용하지 않고 여러 SMP 시스템을 사용할 수있는 OpenMP 구현입니다. 이러한 진보는 프로그래밍 패러다임을 혼합하지 않고 명시 적 메시징 코드를 작성할 필요가 없으므로 이점이있었습니다. 클러스터 OpenMP의 공유 메모리는 분산 공유 메모리 서브 시스템을 통해 모든 시스템에서 유지 관리되었습니다. 클러스터 OpenMP는 OpenMP의 완화 된 메모리 일관성을 기반으로하므로 절대적으로 필요한 경우에만 공유 변수를 일관되게 만들 수 있습니다. 클러스터 OpenMP를

일부 메모리 작업 source

성능 고려 사항은 다른 사람들보다 훨씬 더 비싼 있습니다. Cluster OpenMP로 좋은 성능을 얻으려면 보호되지 않은 페이지에 대한 액세스 수가 보호 된 페이지에 대한 액세스 수에 비해 가능한 한 높아야합니다. 즉, 주어진 노드에서 페이지가 최신 상태가되면 다음 동기화 전에 많은 수의 액세스가 이루어져야합니다. 이것을 성취하기 위해서, 프로그램은 가능한 한 적은 동기화를 가져야하고 가능한 한 주어진 페이지에서 데이터를 재사용해야합니다. 이는 원자 구조 또는 잠금과 같은 미세 동기화를 방지하고 데이터 지역이 높습니다. source입니다.

+0

그러나 이것은 클러스터 네트워크에서만 가능합니까? 또는 어떤 네트워크? – gkris

+0

솔직히 말해서, 나는 잘 모르겠다. 그러나 나의 추측에 의하면, 단지 클러스터에서만 실현 가능하다. 어떤 유형의 네트워크를 추천하고 있습니까? – dreamcrash

+0

다른 네트워크는 무엇이든 될 수 있습니다. 예를 들어 간단한 독립 노드 LAN 네트워크 – gkris