aboutsummaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c
diff options
context:
space:
mode:
authorTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
committerTor Aamodt <[email protected]>2010-10-01 08:55:28 -0800
commit11b308e7363e937966b035b4891db32b4eece3bf (patch)
tree50ca4c9ad6f163ac4acb2bf505e64dfebed66947 /benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c
parentbb820c116764d7a1b8e071137d32b74e7f34dd2f (diff)
integrating recent changes from fermi-test into fermi
(i'll use "fermi" for more disruptive changes to the pipeline model such as updating the MSHRs and getting rid of the warp tracker, ripping out DWF, etc...) [git-p4: depot-paths = "//depot/gpgpu_sim_research/fermi/distribution/": change = 7805]
Diffstat (limited to 'benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c')
-rw-r--r--benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c275
1 files changed, 0 insertions, 275 deletions
diff --git a/benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c b/benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c
deleted file mode 100644
index 69d0e5d..0000000
--- a/benchmarks/CUDA/DG/3rdParty/ParMetis-3.1/ParMETISLib/weird.c
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
- * Copyright 1997, Regents of the University of Minnesota
- *
- * weird.c
- *
- * This file contain various graph setting up routines
- *
- * Started 10/19/96
- * George
- *
- * $Id: weird.c,v 1.9 2003/07/31 16:27:28 karypis Exp $
- *
- */
-
-#include <parmetislib.h>
-
-
-
-/*************************************************************************
-* This function computes a partitioning of a small graph
-**************************************************************************/
-void PartitionSmallGraph(CtrlType *ctrl, GraphType *graph, WorkSpaceType *wspace)
-{
- int i, h, ncon, nparts, npes, mype;
- int moptions[10];
- int mynumflag, mywgtflag, me;
- idxtype *mypart;
- int lpecut[2], gpecut[2];
- GraphType *agraph;
- int *sendcounts, *displs;
- float *mytpwgts, *gnpwgts, *lnpwgts;
-
- ncon = graph->ncon;
- nparts = ctrl->nparts;
-
- MPI_Comm_size(ctrl->comm, &npes);
- MPI_Comm_rank(ctrl->comm, &mype);
-
- SetUp(ctrl, graph, wspace);
- graph->where = idxmalloc(graph->nvtxs+graph->nrecv, "PartitionSmallGraph: where");
- agraph = Moc_AssembleAdaptiveGraph(ctrl, graph, wspace);
- mypart = idxmalloc(agraph->nvtxs, "mypart");
-
- moptions[0] = 0;
- moptions[7] = ctrl->sync + mype;
- mynumflag = 0;
- mywgtflag = 3;
- if (ncon == 1) {
- METIS_WPartGraphKway2(&agraph->nvtxs, agraph->xadj, agraph->adjncy, agraph->vwgt,
- agraph->adjwgt, &mywgtflag, &mynumflag, &nparts, ctrl->tpwgts, moptions,
- &graph->mincut, mypart);
- }
- else {
- mytpwgts = fmalloc(nparts, "mytpwgts");
- for (i=0; i<nparts; i++)
- mytpwgts[i] = ctrl->tpwgts[i*ncon];
-
- METIS_mCPartGraphRecursive2(&agraph->nvtxs, &ncon, agraph->xadj, agraph->adjncy,
- agraph->vwgt, agraph->adjwgt, &mywgtflag, &mynumflag, &nparts, mytpwgts,
- moptions, &graph->mincut, mypart);
-
- free(mytpwgts);
- }
-
- lpecut[0] = graph->mincut;
- lpecut[1] = mype;
- MPI_Allreduce(lpecut, gpecut, 1, MPI_2INT, MPI_MINLOC, ctrl->comm);
- graph->mincut = gpecut[0];
-
- if (lpecut[1] == gpecut[1] && gpecut[1] != 0)
- MPI_Send((void *)mypart, agraph->nvtxs, IDX_DATATYPE, 0, 1, ctrl->comm);
- if (lpecut[1] == 0 && gpecut[1] != 0)
- MPI_Recv((void *)mypart, agraph->nvtxs, IDX_DATATYPE, gpecut[1], 1, ctrl->comm, &ctrl->status);
-
- sendcounts = imalloc(npes, "sendcounts");
- displs = imalloc(npes, "displs");
-
- for (i=0; i<npes; i++) {
- sendcounts[i] = graph->vtxdist[i+1]-graph->vtxdist[i];
- displs[i] = graph->vtxdist[i];
- }
-
- MPI_Scatterv((void *)mypart, sendcounts, displs, IDX_DATATYPE,
- (void *)graph->where, graph->nvtxs, IDX_DATATYPE, 0, ctrl->comm);
-
- lnpwgts = graph->lnpwgts = fmalloc(nparts*ncon, "lnpwgts");
- gnpwgts = graph->gnpwgts = fmalloc(nparts*ncon, "gnpwgts");
- sset(nparts*ncon, 0, lnpwgts);
- for (i=0; i<graph->nvtxs; i++) {
- me = graph->where[i];
- for (h=0; h<ncon; h++)
- lnpwgts[me*ncon+h] += graph->nvwgt[i*ncon+h];
- }
- MPI_Allreduce((void *)lnpwgts, (void *)gnpwgts, nparts*ncon, MPI_FLOAT, MPI_SUM, ctrl->comm);
- GKfree((void**)&mypart, (void**)&sendcounts, (void**)&displs, LTERM);
- FreeGraph(agraph);
-
- return;
-}
-
-
-
-/*************************************************************************
-* This function checks the inputs for the partitioning routines
-**************************************************************************/
-void CheckInputs(int partType, int npes, int dbglvl, int *wgtflag, int *iwgtflag,
- int *numflag, int *inumflag, int *ncon, int *incon, int *nparts,
- int *inparts, float *tpwgts, float **itpwgts, float *ubvec,
- float *iubvec, float *ipc2redist, float *iipc2redist, int *options,
- int *ioptions, idxtype *part, MPI_Comm *comm)
-{
- int i, j;
- int doweabort, doiabort = 0;
- float tsum, *myitpwgts;
- int mgcnums[5] = {-1, 2, 3, 4, 2};
-
- /**************************************/
- if (part == NULL) {
- doiabort = 1;
- IFSET(dbglvl, DBG_INFO, printf("ERROR: part array is set to NULL.\n"));
- }
- /**************************************/
-
-
- /**************************************/
- if (wgtflag == NULL) {
- *iwgtflag = 0;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: wgtflag is NULL. Using a value of 0.\n"));
- }
- else {
- *iwgtflag = *wgtflag;
- }
- /**************************************/
-
-
- /**************************************/
- if (numflag == NULL) {
- *inumflag = 0;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: numflag is NULL. Using a value of 0.\n"));
- }
- else {
- if (*numflag != 0 && *numflag != 1) {
- IFSET(dbglvl, DBG_INFO, printf("WARNING: bad value for numflag %d. Using a value of 0.\n", *numflag));
- *inumflag = 0;
- }
- else {
- *inumflag = *numflag;
- }
- }
- /**************************************/
-
-
- /**************************************/
- if (ncon == NULL) {
- *incon = 1;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: ncon is NULL. Using a value of 1.\n"));
- }
- else {
- if (*ncon < 1 || *ncon > MAXNCON) {
- IFSET(dbglvl, DBG_INFO, printf("WARNING: bad value for ncon %d. Using a value of 1.\n", *ncon));
- *incon = 1;
- }
- else {
- *incon = *ncon;
- }
- }
- /**************************************/
-
-
- /**************************************/
- if (nparts == NULL) {
- *inparts = npes;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: nparts is NULL. Using a value of %d.\n", npes));
- }
- else {
- if (*nparts < 1 || *nparts > MAX_NPARTS) {
- IFSET(dbglvl, DBG_INFO, printf("WARNING: bad value for nparts %d. Using a value of %d.\n", *nparts, npes));
- *inparts = npes;
- }
- else {
- *inparts = *nparts;
- }
- }
- /**************************************/
-
-
- /**************************************/
- myitpwgts = *itpwgts = fmalloc((*inparts)*(*incon), "CheckInputs: itpwgts");
- if (tpwgts == NULL) {
- sset((*inparts)*(*incon), 1.0/(float)(*inparts), myitpwgts);
- IFSET(dbglvl, DBG_INFO, printf("WARNING: tpwgts is NULL. Setting all array elements to %.3f.\n", 1.0/(float)(*inparts)));
- }
- else {
- for (i=0; i<*incon; i++) {
- tsum = 0.0;
- for (j=0; j<*inparts; j++) {
- tsum += tpwgts[j*(*incon)+i];
- }
- if (fabs(1.0-tsum) < SMALLFLOAT)
- tsum = 1.0;
- for (j=0; j<*inparts; j++)
- myitpwgts[j*(*incon)+i] = tpwgts[j*(*incon)+i] / tsum;
- }
- }
- /**************************************/
-
-
- /**************************************/
- if (ubvec == NULL) {
- sset(*incon, 1.05, iubvec);
- IFSET(dbglvl, DBG_INFO, printf("WARNING: ubvec is NULL. Setting all array elements to 1.05.\n"));
- }
- else {
- for (i=0; i<*incon; i++) {
- if (ubvec[i] < 1.0 || ubvec[i] > (float)(*inparts)) {
- iubvec[i] = 1.05;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: bad value for ubvec[%d]: %.3f. Setting value to 1.05.[%d]\n", i, ubvec[i], *inparts));
- }
- else {
- iubvec[i] = ubvec[i];
- }
- }
- }
- /**************************************/
-
-
- /**************************************/
- if (partType == ADAPTIVE_PARTITION) {
- if (ipc2redist != NULL) {
- if (*ipc2redist < SMALLFLOAT || *ipc2redist > 1000000.0) {
- IFSET(dbglvl, DBG_INFO, printf("WARNING: bad value for ipc2redist %.3f. Using a value of 1000.\n", *ipc2redist));
- *iipc2redist = 1000.0;
- }
- else {
- *iipc2redist = *ipc2redist;
- }
- }
- else {
- IFSET(dbglvl, DBG_INFO, printf("WARNING: ipc2redist is NULL. Using a value of 1000.\n"));
- *iipc2redist = 1000.0;
- }
- }
- /**************************************/
-
-
- /**************************************/
- if (options == NULL) {
- ioptions[0] = 0;
- IFSET(dbglvl, DBG_INFO, printf("WARNING: options is NULL. Using defaults\n"));
- }
- else {
- ioptions[0] = options[0];
- ioptions[1] = options[1];
- ioptions[2] = options[2];
- if (partType == ADAPTIVE_PARTITION || partType == REFINE_PARTITION)
- ioptions[3] = options[3];
- }
- /**************************************/
-
-
- /**************************************/
- if (comm == NULL) {
- IFSET(dbglvl, DBG_INFO, printf("ERROR: comm is NULL. Aborting\n"));
- abort();
- }
- else {
- MPI_Allreduce((void *)&doiabort, (void *)&doweabort, 1, MPI_INT, MPI_MAX, *comm);
- if (doweabort > 0)
- abort();
- }
- /**************************************/
-
-}
-
-