2012-02-28 3 views
2

시스템과 구현에 따라 다르다는 것을 알고 있습니다 만, 실행하기에 오랜 시간이 걸리지 않는 병렬화가 쉬운 코드가있는 곳에서 OpenMP를 사용할 수 있는지는 전혀 알 수 없습니다 . 예를 들어 OpenMP에 이상적이지만 단일 스레드에서 실행되는 데 몇 초 밖에 걸리지 않는 루프가있는 경우 오버 헤드로 인한 이익이 사라지나요?OpenMP가 가장 작은 가장 작은 타임 슬라이스

내 사용법은 각 프레임을 생성하는 데 20ms 정도 걸리는 실시간 렌더링입니다. 따라서 일반적으로 우리는 5-10ms 이상 걸리는 단일 코드 블록을 가지고 있지 않습니다 ... OpenMP는 이런 종류의 시간 규모를 목표로 했습니까, 아니면 몇 가지를 취하는 작업에서만 을 실행해야합니까?

일화/경험적 데이터는 물론 '공식'소스도 환영합니다. MSVC++ 및 GCC OpenMP 구현에 주로 관심이 있다고 가정합니다. , http://software.intel.com/en-us/blogs/2010/06/02/using-openmp-to-parallelize-a-game/

+0

흥미로운 기사입니다. –

답변

3

대답, 데이터를 사용할 수없는 모든 경험적 질문에 ... (42)

입니다하지만 심각, 당신은 자신을 도출해야 할거야 :

나는이 흥미로운 기사를 발견 하드웨어, 소프트웨어 및 문제에 대한 자신의 구성에 대해이 질문에 대답하십시오.

예, 1997 년에 OpenMP가 처음 게시 된 경우 일반적으로 비교적 많이 사용되는 계산 스레드에 대한 일반적인 사용 사례가 각각 초 단위로 나타났습니다. 그 후 프로세서가 빨라지고 구현이 나아 졌으므로 벤치마킹없이 질문에 대한 좋은 대답을 얻지 못할 것이라고 생각합니다. 그리고 어쨌든 벤치마킹해야하므로 SO에서 배운 것이 무엇이든간에 시간을 낭비하지 말고 코딩하십시오.

OpenMP가 유용하지 않다고 설득 당할 수도 있지만, 자신의 요구 사항에 대한 대답은 신뢰할 수 없습니다.

OpenMP가 유용하다고 설득 당할 수도 있지만 사용자의 요구 사항에 대한 대답은 신뢰할 수 없습니다.

충돌하는 일화 적 증거가 많이있을 수 있지만 자신의 요구 사항에 대한 답변을 신뢰할 수는 없습니다.

벤치마킹을하십시오. 그리고 당신이 어떻게 시작하는지 알려주세요. 그래서 쓰레기와 같은 일화는 너무 길기 때문에 하드 데이터에는 너무 짧습니다.

PS 벤치 마크 코드를 분실하지 마십시오. 경험을 발전시키고 하드웨어, 시스템 소프트웨어 및 응용 프로그램 소프트웨어가 변경됨에 따라이를 수정하고 다시 실행하십시오. 데이터없이 확신 할 수있는 한 가지 : 귀하의 질문에 대한 대답은 움직이는 표적입니다.

+0

글쎄, 다른 사람이 이미 벤치마킹을 한 것 같아서 휠체어를 다시 발명하지 않고도 테스트 할 수 있도록 벤치마킹 코드 나 결과를 공유 할 수있었습니다. –

+0

물론 OpenMP에 대한 코드를 벤치마킹했지만 그 결과가 유용하다고 생각하지 않습니다. 내 프로그램은 몇 시간 동안 실행되기 때문에 OpenMP의 최소 크기를 알아내는 데는별로 관심이없고 좋은 벤치 마크를 얻지 못했습니다. –

+0

다른 사람이 게임 (또는 비슷한) 맥락에서 OpenMP를 사용하기를 바랍니다. 이전에 OpenMP로 작업 한 모든 것들 (나는 위대하다고 생각한다) 또한 큰 데이터 세트를 처리하고 있었다. 스레드 캐싱으로 인해 작은 작업으로 확장되면 저렴한 비용으로 최적화 할 수있는 정말 멋진 방법입니다. –

관련 문제