내 코드는 다음과 같다 : 밀도가 높은 IO 작업의 Openmp, 속도 향상 방법은 무엇입니까?
for (int i = 0; i < N; i++)
{
/*Reading for big data*/
HeavyProcess();
/*Writing for big data*/
}
내가이 시도 :
#pragma omp parallel ordered schedule(dynamic)
for (int i = 0; i < N; i++)
{
#pragma omp ordered
/*Reading for big data*/
HeavyProcess();
#pragma omp ordered
/*Writing for big data*/
}
을하지만 매우 느리게, CPU 사용은 하나 개의 코어가 작동 보이는 것으로 판명.
만약 내가 간단한 사용
#pragma omp parallel for
내가 훨씬 더 높은 CPU 사용량을 얻을 수 있지만, 100 %.
의견이 있습니까? 매우 감사합니다! Zboson의 코멘트 @에 확장
의미있는 도움/조언을 제공하려면 더 많은 정보가 필요하다고 생각합니다. –
openmp에 대해 많이 알지는 못하지만 100 % CPU 사용량이 매우 드문 경우, 보통 프로세서가 RAM을 기다리는 데 많은 시간을 낭비하므로 더 많은 데이터가 필요없는 알고리즘을 작성하지 않으면 프로세서의 레지스터에 맞으면 메모리를 기다릴 것입니다. – cdkrot
한 스레드로 버퍼에 데이터를 읽은 다음 병렬로 (순서대로 정렬하지 않고) 버퍼에서 작동 한 다음 한 스레드로 출력 버퍼를 씁니다. –