diff options
| author | Tor Aamodt <[email protected]> | 2010-07-15 18:09:46 -0800 |
|---|---|---|
| committer | Tor Aamodt <[email protected]> | 2010-07-15 18:09:46 -0800 |
| commit | 69f2911e04ffb1b19eef1fafb8c040af271f656e (patch) | |
| tree | 231d3b6bdc3a202f7c255bfcf7bf2c36e32cee9e /benchmarks/CUDA/DG/buildsource.m | |
creating branch for adding support for CUDA 3.x and Fermi
[git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6829]
Diffstat (limited to 'benchmarks/CUDA/DG/buildsource.m')
| -rw-r--r-- | benchmarks/CUDA/DG/buildsource.m | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/benchmarks/CUDA/DG/buildsource.m b/benchmarks/CUDA/DG/buildsource.m new file mode 100644 index 0000000..c93d363 --- /dev/null +++ b/benchmarks/CUDA/DG/buildsource.m @@ -0,0 +1,106 @@ + +function buildsource(in_N) + +Globals2D; + + +NODETOL = 1e-8; + +N = in_N; + +Np = (N+1)*(N+2)/2; Nfp = N+1; Nfaces = 3; + +[x,y] = Nodes2D(N); +[r,s] = xytors(x,y); + +% find all the nodes that lie on each edge +fmask1 = find( abs(s+1) < NODETOL)'; +fmask2 = find( abs(r+s) < NODETOL)'; +fmask3 = find( abs(r+1) < NODETOL)'; +Fmask = [fmask1;fmask2;fmask3]'; + +% vandermonde matrix +V = Vandermonde2D(N, r, s); + +% derivative matrices +[Dr, Ds] = Dmatrices2D(N, r, s, V); + +% lift matrix +LIFT = Lift2D(); + +% correct to 0-index +Fmask = Fmask-1; + + +fid = fopen(sprintf('dataN%02d.h', N), 'w'); + +fprintf(fid, sprintf('#ifndef DATAN%02d \n\n', N)); +fprintf(fid, sprintf('#define DATAN%02d 1\n\n', N)); +fprintf(fid, 'double p_r[%d] = { ', Np); +fprintf(fid, '%17.15g ', r(1)); +for n=2:Np + fprintf(fid, ', %17.15g ', r(n)); +end +fprintf(fid, '};\n') + +fprintf(fid, 'double p_s[%d] = {', Np); +fprintf(fid, '%17.15g ', s(1)); +for n=2:Np + fprintf(fid, ', %17.15g ', s(n)); +end +fprintf(fid, '};\n') + +fprintf(fid, 'double p_Dr[%d][%d] = {', Np, Np); +for m=1:Np +fprintf(fid, '{%17.15g ', Dr(m,1)); +for n=2:Np + fprintf(fid, ', %17.15g ', Dr(m,n)); +end +if(m<Np) +fprintf(fid, '},\n') +else +fprintf(fid, '}};\n') +end +end + +fprintf(fid, 'double p_Ds[%d][%d] = {', Np, Np); +for m=1:Np +fprintf(fid, '{%17.15g ', Ds(m,1)); +for n=2:Np + fprintf(fid, ', %17.15g ', Ds(m,n)); +end +if(m<Np) +fprintf(fid, '},\n') +else +fprintf(fid, '}};\n') +end +end + +fprintf(fid, 'double p_LIFT[%d][%d] = {', Np, Nfp*Nfaces); +for m=1:Np +fprintf(fid, '{%17.15g ', LIFT(m,1)); +for n=2:Nfp*Nfaces + fprintf(fid, ', %17.15g ', LIFT(m,n)); +end +if(m<Np) +fprintf(fid, '},\n') +else +fprintf(fid, '}};\n') +end +end + +fprintf(fid, 'int p_Fmask[%d][%d] = {', Nfaces, Nfp); +for m=1:Nfaces +fprintf(fid, '{%d ', Fmask(1,m)); +for n=2:Nfp + fprintf(fid, ', %d ', Fmask(n,m)); +end +if(m<Nfaces) +fprintf(fid, '},\n') +else +fprintf(fid, '}};\n') +end +end + +fprintf(fid, sprintf('\n#endif\n')); +fclose(fid) |
