Mgl example

From Jacket Wiki

Jump to: navigation, search

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;
Views
Personal tools