각 사이트에서 이벤트를 처리해야하는 "사이트"(m)의 수가 있습니다 (데이터 청크는 모두 사용 가능). 각 이벤트 (그 중 n 개)는 처리를 위해 각 사이트로 전송됩니다. 그래서 당신은 nxm 작업이 있다고 생각할 수 있습니다. 처리 순서는 중요하지 않으며 한 번에 하나의 사이트에서만 여러 이벤트를 처리 할 수 없습니다 (Task (m, x)는 Task (m, y)와 병렬로 실행할 수 없습니다)종속성과 병행하여 여러 작업 실행
"에 대한 OMP 평행"그러나 모든 사이트는 각 이벤트에 대해 동일한 복잡성을 가지고 있지, 이벤트
이 제대로 작동for(...event...)
#pragma omp parallel for
for(...site...)
site.process(event)
에 루프에 대한 일반에 중첩 사이트에. 즉 모든 사이트는 다음 이벤트로 이동하기 전에 가장 느린 사이트를 기다려야합니다. 직원들이 다음 행사로 이동할 수 있도록 허용하면 2 배를 절약 할 수 있다고 추측합니다.
이것을 구현하는 가장 좋은 방법은 무엇입니까? 나는 C++을 사용하고 있습니다. TBB Flow Graph 또는 여러 개의 파이프 라인을 조사 중입니다 ...
각 "이벤트"는 디스크에서 읽어야하고, 약간의 메모리를 차지한다는 점이 하나 더 고려해야합니다. 아직 중요하지는 않지만, 한 번에 시스템에 이벤트를 거의 갖지 않거나 제한하려고합니다. 현재 구현에서 나는 단지 하나 (플러스 부부가 백그라운드에서 준비)를 가지고 있습니다 고마워
종속성을 언급하지 않았습니다. 사이트 A는 사이트 B가 시작되기 전에 모든 작업을 완료 할 수 있습니까? – NiRR
예. 어쩌면 의존성이 최고의 단어는 아닙니다. 병렬화에 한도 ...? 그래, 각 사이트에서 모든 이벤트를 처리 한 다음 다음 사이트로 이동할 수 있습니다. 이것은 2 for 루프의 순서를 뒤집는 것입니다 (내부를 평행선으로 남겨 둡니다). 그러나 모든 이벤트를 m 번 준비 (읽기)하는 오버 헤드로 인해이 솔루션에 미친 것은 아닙니다. – user2232888
이 질문에 대한 답변이 필요합니까? – Anton