From 69f2911e04ffb1b19eef1fafb8c040af271f656e Mon Sep 17 00:00:00 2001 From: Tor Aamodt Date: Thu, 15 Jul 2010 18:09:46 -0800 Subject: creating branch for adding support for CUDA 3.x and Fermi [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 6829] --- benchmarks/CUDA/DG/src/LoadBalance3d.c | 243 +++++++++++++++++++++++++++++++++ 1 file changed, 243 insertions(+) create mode 100644 benchmarks/CUDA/DG/src/LoadBalance3d.c (limited to 'benchmarks/CUDA/DG/src/LoadBalance3d.c') diff --git a/benchmarks/CUDA/DG/src/LoadBalance3d.c b/benchmarks/CUDA/DG/src/LoadBalance3d.c new file mode 100644 index 0000000..586cd8c --- /dev/null +++ b/benchmarks/CUDA/DG/src/LoadBalance3d.c @@ -0,0 +1,243 @@ +#include "mpi.h" +#include + +#include "fem.h" + +void LoadBalance3d(Mesh *mesh){ + + int n,p,k,v,f; + + int nprocs = mesh->nprocs; + int procid = mesh->procid; + int **EToV = mesh->EToV; + double **VX = mesh->GX; + double **VY = mesh->GY; + double **VZ = mesh->GZ; + + if(!procid) printf("Root: Entering LoadBalance\n"); + + int Nverts = mesh->Nverts; + + int *Kprocs = BuildIntVector(nprocs); + + /* local number of elements */ + int Klocal = mesh->K; + + /* find number of elements on all processors */ + MPI_Allgather(&Klocal, 1, MPI_INT, Kprocs, 1, MPI_INT, MPI_COMM_WORLD); + + /* element distribution -- cumulative element count on processes */ + idxtype *elmdist = idxmalloc(nprocs+1, "elmdist"); + + elmdist[0] = 0; + for(p=0;pGX!=NULL){ + DestroyMatrix(mesh->GX); + DestroyMatrix(mesh->GY); + DestroyMatrix(mesh->GZ); + DestroyIntMatrix(mesh->EToV); + } + + mesh->GX = newVX; + mesh->GY = newVY; + mesh->GZ = newVZ; + mesh->EToV = newEToV; + mesh->K = totalinK; + + for(p=0;p