Performance optimization for amaze on multi-core-systems (Issue 1676)
This commit is contained in:
@@ -70,6 +70,14 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) {
|
||||
|
||||
volatile double progress = 0.0;
|
||||
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
// Issue 1676
|
||||
// Moved from inside the parallel section
|
||||
if (plistener) {
|
||||
plistener->setProgressStr ("AMaZE Demosaicing...");
|
||||
plistener->setProgress (0.0);
|
||||
}
|
||||
|
||||
#pragma omp parallel
|
||||
{
|
||||
//position of top/left corner of the tile
|
||||
@@ -194,10 +202,6 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) {
|
||||
|
||||
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
if (plistener) {
|
||||
plistener->setProgressStr ("AMaZE Demosaicing...");
|
||||
plistener->setProgress (0.0);
|
||||
}
|
||||
|
||||
// %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
||||
|
||||
@@ -212,7 +216,10 @@ void RawImageSource::amaze_demosaic_RT(int winx, int winy, int winw, int winh) {
|
||||
// Main algorithm: Tile loop
|
||||
//#pragma omp parallel for shared(rawData,height,width,red,green,blue) private(top,left) schedule(dynamic)
|
||||
//code is openmp ready; just have to pull local tile variable declarations inside the tile loop
|
||||
#pragma omp for schedule(dynamic) nowait
|
||||
|
||||
// Issue 1676
|
||||
// use collapse(2) to collapse the 2 loops to one large loop, so there is better scaling
|
||||
#pragma omp for schedule(dynamic) collapse(2) nowait
|
||||
for (top=winy-16; top < winy+height; top += TS-32)
|
||||
for (left=winx-16; left < winx+width; left += TS-32) {
|
||||
//location of tile bottom edge
|
||||
|
Reference in New Issue
Block a user