Mgl example
From Jacket Wiki
This is a copy of jacket/examples/mgl_example/mgl_example.m from Jacket v2.0
function mgl_example() fprintf( '** Jacket FFT-MGL Example **\n' ); fprintf( '** by AccelerEyes **\n' ); size = 2.^[11:20]; workers = 2; columns = 20; disp('Ensuring Jacket has been initialized on all workers...'); matlabpool(workers); spmd k = fft(grand(4)); geval(k); gsync; end k = fft(grand(4)); geval(k); gsync; disp('--- FFT, No Parallelization:'); for i=1:numel(size) tic; fft(rand(size(i), columns, 'single')); nognop(i)=toc; disp([num2str(size(i)) ': ' num2str(nognop(i))]) end disp('--- FFT on GPU, No Parallelization:'); for i=1:numel(size) tic; fft(grand(size(i), columns, 'single')); gsync nop(i) = toc; disp([num2str(size(i)) ': ' num2str(nop(i))]) end disp('--- FFT, Parallelization:'); for i=1:numel(size) tic; parfor j=1:workers fft(rand(size(i), columns/workers, 'single')); end; nog(i) = toc; disp([num2str(size(i)) ': ' num2str(nog(i))]) end disp('--- FFT on GPU, Parallelization (PCT):'); for i=1:numel(size) tic; parfor j=1:workers fft(grand(size(i), columns/workers, 'single')); gsync end pgp(i)=toc; disp([num2str(size(i)) ': ' num2str(pgp(i))]) end disp('--- FFT on GPU, Parallelization (NO PCT):'); for i=1:numel(size) current = gselect; tic; for j=1:workers gselect(j); fft(grand(size(i), columns/workers, 'single')); end gsync('all') pgf(i)=toc; gselect(current); % return to original card disp([num2str(size(i)) ': ' num2str(pgf(i))]) end gflops = columns .* size .* log2(size) .* 5 / 1e9; c(1,:) = gflops./nognop(1:end); c(2,:) = gflops./nog(1:end); c(3,:) = gflops./nop(1:end); c(4,:) = gflops./pgp(1:end); c(5,:) = gflops./pgf(1:end); plot(size, c); title('Jacket MGL: FFT Example'); xlabel('Matrix size'); ylabel('GFLOPs'); legend({'Single CPU', 'Multiple CPU', 'Single CPU with GPU', 'Multiple CPU, Multiple GPU', 'Single CPU, Multiple GPU'}, 'Location', 'Best'); matlabpool close;