2013-02-14 1 views
0

OpenMP에 대한 강연을하고 OpenMP를 사용하여 프로그램을 작성하고 싶습니다. OpenMP에 대해 가장 중요한 개념을 갖고 있으며 눈에 띄는 속도 향상을 보이는 프로그램이 무엇이라고 생각하십니까? 나는 멋진 프로그램 예제를 원한다. OpenMP에 대해 전문가라면 모두 도와주세요. 기술적 인 부분과 흥미로운 좋은 결과물을 찾고 있습니다.주목할만한 속도 향상과 가장 중요한 개념을 담은 OpenMP 프로그램을 제안하십시오.

나는 가장 중요한 OpenMP의 개념의 더 나은 그림을 위해이 개 프로그램 활기찬, 첫 번째를 작성하려는 모든 사람들이 동시에

에서 그 코드를 작성해야하는 실습 인상적 속도 향상 및 두 번째 하나를 가지고 내 관객들은 아마이 (비록 매트릭스 또한 간단 것) 가장 간단한 예제

+1

두 개의 매우 큰 행렬을 곱하십시오. – gaganbm

+0

@talonmies : 편집 해 주셔서 감사합니다. –

+0

N 몸체 문제 - 당황스럽지 않은 평행 문제가 아니므로 괜찮지 만 (완벽하지는 않지만) 스케일링을 얻고 병렬 루프, 축소 및 원자 업데이트를 사용해야합니다. –

답변

1

(1) 매트릭스 곱

매우 아마추어 수 있습니다.

(2) 만델

http://en.wikipedia.org/wiki/Mandelbrot_set

만델도 황당 평행 한 OpenMP는 알맞은 속도 증가를 달성 할 수있다. 그래픽을 사용하여 시각화 할 수도 있습니다. Mandelbrot은 작업 부하 불균형 때문에 흥미로운 예입니다. 예약 정책 (예 : schedule(dynamic,1)schedule(static))과 다양한 스레딩 라이브러리 (예 : Cilk Plus 또는 TBB)를 기반으로 다른 속도 향상을 볼 수 있습니다.

(3) 수학 커널

예를 들어

의 부부, FFT (비 재귀 버전)도 곤란하게 병렬화입니다.

"OmpSCR"벤치 마크를보십시오 : http://sourceforge.net/projects/ompscr/이 제품군에는 간단한 OpenMP 예제가 있습니다.

3

필자는 개인적으로 OpenMP의 가장 인상적인면은 코드로 작성할 수있는 코드의 확장 성이라고 말하지 않습니다. 좀 더 인상적인면은 기존 직렬 프로그램을 사용할 수있는 편이라는 점과 몇 가지 OpenMP 지시어만으로도 만족스러운 확장 성을 가진 병렬 프로그램으로 바꿀 수 있다는 점입니다.

청중에게 관심있는 모든 프로그램 (또는 어떤 프로그램의 일부)을 청취하고 청중에게 친숙한 프로그램을 더 좋아하고 강의실에서 병렬로 사용하는 것이 좋습니다. 활기찬을 넣으십시오. 강사가 5 분 코딩과 재 컴파일을 통해 8 코어에서 4 배의 속도 향상을 보여줄 수 있다면 감명을받을 것입니다. 그리고 이것이 왜 8 코어에서 8 배의 속도 향상을 얻지 못하는지에 대한 흥미로운 모든 주제로 이어집니다.

물론 모든 무대 환상 분자들처럼, 당신의 예를 신중하게 선택하고 논쟁을 뒷받침 할 수있는 인상적인 속도 향상을 얻기 위해 연습해야합니다.

개인적으로 난 당황스럽게 평행 같은 데모 프로그램을 사용하는 것이 당황 스러울 것입니다. 청중의보다 지각있는 구성원이 meh과 같은 응답으로 자극 될 수 있습니다.

+0

도움이 될만한 답변을 주셔서 감사합니다.이 예가 제공하는 예는 무엇입니까? 저는 인상적인 스피드 업을 가진 가장 중요한 OpenMP 컨셉을보다 잘 이해하기 위해 활발하게 두 개의 프로그램을 작성하고자합니다. 동시에 모든 사람이 동시에 코드를 작성해야하는 실습으로 두 번째 프로그램을 작성하고 싶습니다. –

관련 문제