OpenMP를 사용하여 각 스레드가 그리드의 하위 섹션에서 작동하는 2 차원 그리드에서 작업을 병렬 처리하고 싶습니다.OpenMP For 루프 범위
상한 및 하한이 주어진 하위 섹션을 처리하는 함수 f(lower,upper,grid)
을 상상해보십시오 (아래쪽과 위쪽이 모눈 축 중 하나를 참조한다고 가정).
내가 가진 질문은 lower
과 upper
을 명시 적으로 계산하지 않고 f
을 호출 할 수 있는지 여부입니다.
예를 들어 for 루프가있는 경우 OpenMP는 자동으로 스레드간에 루프를 나눕니다. OpenMP가 범위를 나누어 범위의 청크를 f
에 할당하는 방법이 있습니까?
감사합니다.
업데이트 : for 루프가 있다면
가 명확히하려면 :
#pragma omp parallel for
for(int i=0;i<50;i++)
의 OpenMP는 루프 나눌 것입니다. 제가 알고 싶은 것은 for 루프가 어떻게 나뉘어 졌는지를 아는 것과 같습니다. 나는 당신의 질문에 대한 대답은 아니오 것을 합리적으로 확신 parallel for
OpenMP에서 2D 작업 세트를 동적으로 예약하도록 요청하고 있습니까? – Mysticial
2D 데이터에는 여러 가지 복잡한 계산이 포함되므로 '붕괴'가있는 'for'의 간단한 적용은 실현 될 수 없습니다. OpenMP가 루프의 '하한'경계와 '상한'경계를 동적으로 구분하여 그 경계가 무엇인지를 알 수 있습니다. – Richard
OpenMP가 범위를 "파악"하는 방법을 알지 못합니다. (나도 알아낼 수 없지만 ...)? 어떤 시점에서, 당신은 어떤 종류의 범위를 제공해야합니다. – Mysticial