2010-01-15 7 views
1

예를 들어 여왕을 위해 음식을 제공하는 개미가 당황스럽게 병행한다고 가정 해 보겠습니다. 음식의작업 병렬 처리, 스레드 수?

X = 금액은 하나의 주 스레드가 Z 초 정도 걸립니다 음식을 구하고 시작하는 개미를 얻으려면 = 식품
Z의 단위를 얻기 위해 개미 소요
Y = 시간이 필요했다.

주 스레드는 문제가 완전히 해결 될 때까지 스레드를 생성 할 수 있지만 새 스레드를 만들 때 임계 값이 있기 때문에 결과가 줄어든다. 작업에 대한 진행률 중 새 스레드 만들기를 중지하는 것이 가장 효율적입니다.

고정 된 X 및 Y 값에 대해 주 스레드에 스폰을 지시하는 스레드 수는 몇 개입니까?

편집 : 자바 래퍼를 통해 CUDA를 사용하여 엔비디아 GTS250 GPU의 환경입니다 운영

답변

2

  1. 몇 가지 실험을 설정 마십시오.
  2. 실험을 실행하고 결과를 기록하십시오.
  3. 결과를 분석하십시오.
  4. 결론을 내려주십시오. 당신이 당신의 질문 (들)

    답했다까지

당신은 당신의 문제가 곤란하게 평행 것을 쓰기. 이러한 문제는 대개 EP가되는 명백한 '차원'을 가지고 있습니다. 예를 들어, 동영상의 이미지 렌더링은 프레임 단위 (각 프레임을 별도의 프로세스 (또는)로 전송) 또는 하위 작업 렌더링 (파이프 라인 설정)을 통해 EP로 수행됩니다. 드물게 각 이미지를 하위 이미지 작업으로 잘라서 이미지 렌더링을 병렬화 할 것입니다. 나는 당신의 문제가 '개미'의 차원을 따라 분해 될 때 EP라고 생각한다. 그래서 아마도 개미마다 하나의 작업을 만들어야합니다. 그렇다면 사용 가능한 프로세서보다 한 번에 더 이상 개미 작업을 실행해서는 안됩니다. 당신은 프로세서보다 더 많은 개미를 원할 가능성이 적고 적을 수 있습니다. 그러나 프로세서와 작업의 비율이 가장 좋은 것은 사용자가 직접 알아야 할 것입니다.

스레드가 수행해야하는 작업, 하드웨어가 수행해야하는 작업 및 하드웨어가 처리해야하는 작업에 대한 논쟁은 간헐적으로 밝혀 지지만 테스트를 대신 할 수는 없습니다.

덧붙여 말하자면, 개미를 사냥하기 위해서 나는 Y를 고치는 것이 좋지 않다고 생각합니다.

더 자세한 조언이 필요하면 Fortran + OpenMP를 작성하는 경우 Java 프로그램에 적합한 스레드에 대한 조언이 잘 적용되지 않을 수 있습니다.

+0

용적 계산을 위해 형상 표면을 분리 된 삼각형으로 나누어 그 삼각형으로 병렬화를위한 '치수'를 만듭니다 – mglmnc

0

각각의 작업자 스레드가 CPU 바운드라고 가정하면 추측 한 것처럼 코어가있는 것보다 더 많은 스레드를 생성하는 것은 실용적이지 않습니다.