2016-11-23 13 views
0

OpenMP를 사용하여 응용 프로그램에서 오버 헤드를 계산할 Ubuntu 16.04에서 GCC로 컴파일 한 응용 프로그램을 구현했습니다. (내 응용 프로그램의 바이너리 파일은, 예를 들어 xyz.exe입니다.)이 들어내 프로그램 용 EPCC의 OpenMP Microbenchmark Suite 사용 방법

내가 EPCC OpenMP를 마이크로 벤치 마크 스위트를 사용하는 것을 시도하고있다. make을 실행 한 후 터미널에서 syncbench (./syncbench)이라는 벤치 마크 중 하나를 실행하려고했습니다. 하지만 OpenMP 구현 (xyz.exe)에서 벤치 마크를 어떻게 사용할 수 있는지 알고 싶습니다. EPCC의 공식 웹 페이지 (https://www.epcc.ed.ac.uk/research/computing/performance-characterisation-and-benchmarking/epcc-openmp-micro-benchmark-suite)와 README (설치 코드 포함)을 검색하려고했지만 정확히 어떻게 할 수 있습니까?

누군가이 구현을 위해이 제품군을 사용했다면 구현과 함께 벤치 마크를 병합 한 방법을 알려주십시오.

필자는 병렬 컴퓨팅과 벤치마킹에 익숙하지 않으므로 내 쿼리가 간단하지 않은 경우 실례합니다.

+0

혼란 스러웠 기 때문에 제목을 변경했습니다. 처음에는 OpenMP에 대한 독자적인 구현이 있다고 생각했습니다. –

+0

@VladimirF : 변경에 감사드립니다. 또한, 나는 내 자신의 구현을했습니다. 혼란스럽게 죄송합니다. 다시 쿼리를 편집했습니다. – krishtof

+0

아니요, 귀하의 의도는 OpenMP 자체의 구현 일 것이므로 OpenMP 구현이 없습니다. 그것이 요점이다. –

답변

0

당신은 마이크로 벤치 마크와 프로파일 러를 혼란스럽게 생각합니다. 마이크로 벤치 마크 (EPCC와 같은)는 특정 코드 세트의 성능을 측정합니다 (EPCC OpenMP 벤치 마크의 경우 OpenMP 구문의 성능). 프로파일 러는 모든 코드의 성능을 측정하고 시간이 소비되는 곳을 알려줍니다.

따라서 코드의 동작을 측정하려면 마이크로 벤치 마크가 아닌 프로파일 러 (예 : 인텔 Vtune, HPC 툴킷, 타우 등)가 필요합니다.

[FWIW 나는 인텔에서 일하지만, Vtune에서는 직접 작업하지 않습니다.]

+0

@JimCrownie : 이미 VTune 증폭기를 사용하고 있습니다. 그러나이 프로파일 러는 OpenMP 구조 (예 : #pragma omp parallel)에 의해 얼마나 많은 오버 헤드가 발생하는지 알려주지 않습니다. 따라서 C++ OpenMP 코드에서 각 구문에 의해 도입 된 정확한 오버 헤드 시간을 계산하면됩니다. – krishtof

+0

그렇게하는 것이 쉽지 않습니다. OpenMP 런타임에서 (원하는 프로파일 러를 사용하여) 소요되는 시간을 볼 수는 있지만 런타임에 오버 헤드로로드 불균형을 표시합니다 (그렇지 않은 경우). OpenMP (공유 데이터에 액세스 할 때 여분의 경 우)에 대해 컴파일 할 때 비용이 들지는 않습니다. –