I am interested in parallel programming. I wrote a serial radix sort algorithm. Now I want to convert it to a parallel algorithm. What methodology can I apply to it in order to convert it to parallel? When I tried to apply parfor
instead of for
, I got the error: "valid indices for 'C' are restricted in PARFOR loops." How can this be overcome?
Here is the code I wrote:
function array = radixSort(array)
maxx = max(array);
base = 1;
while maxx/base > 0
array = counting_sort(array,base);
base = base * 10;
end
function W = counting_sort(array,base)
X = zeros(1,11);
W = zeros(1,numel(array));
for j = 1:numel(array)
X(rem(floor(array(j)/base),10)+1) = X(rem(floor(array(j)/base),10)+1) + 1;
end
for i = 2:11
X(i) = X(i) + X(i-1);
end
for j = numel(array):-1:1
W(X(rem(floor(array(j)/base),10)+1)) = array(j);
X(rem(floor(array(j)/base),10)+1) = X(rem(floor(array(j)/base),10)+1) - 1;
end
end
end