Parallelization of a Loop with 'parfor - Unsuccessfully
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
Royi Avital
am 13 Sep. 2014
Kommentiert: Matt J
am 13 Sep. 2014
Hello, I created an algorithm which work on Image Patches. I go through matrix of an image and apply a function of a neighborhood predefined.
For some reason MATLAB won't allow me using the 'parfor' command.
Here is the code:
mInputFrames = padarray(mInputFrames, [searchWinEffRadius searchWinEffRadius], 'replicate');
parfor iRowIdx = 1:videoFramesNumRows
for jColIdx = 1:videoFramesNumCols
paddedImageRowIdx = iRowIdx + searchWinEffRadius;
paddedImageColIdx = jColIdx + searchWinEffRadius;
vSearchWindowRowIdx = [(paddedImageRowIdx - searchWinEffRadius):(paddedImageRowIdx + searchWinEffRadius)];
vSearchWindowColIdx = [(paddedImageColIdx - searchWinEffRadius):(paddedImageColIdx + searchWinEffRadius)];
for kFrameIdx = 1:videoFramesNumFrames
vPatches = ((kFrameIdx - 1) * singleFrameSearchWindowNumPixels) + ...
[1:singleFrameSearchWindowNumPixels];
mCurrSearchWindow = mInputFrames(vSearchWindowRowIdx, vSearchWindowColIdx, kFrameIdx);
mCurrSearchWindowPatches(:, vPatches) = Im2ColSliding(mCurrSearchWindow, [localWinSize, localWinSize]);
end
mOutputFrame(iRowIdx, jColIdx) = PatchFilter(mCurrSearchWindowPatches, refPixelRowIdx, refPixelColIdx, vGaussianKernel, weightsStd);
end
end
The error I'm getting: "The PARFOR loop cannot run due to the way variable 'mCurrSearchWindowPatches' is used.
The work on the loops is per pixel which is completely indepndent (In the result) from its neighborhood. What can I do to allow the parallelization to kick in?
Thank You.
0 Kommentare
Akzeptierte Antwort
Weitere Antworten (0)
Siehe auch
Kategorien
Mehr zu Loops and Conditional Statements finden Sie in Help Center und File Exchange
Produkte
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!