diff options
Diffstat (limited to 'benchmarks/CUDA/DG/include/proto.h')
| -rw-r--r-- | benchmarks/CUDA/DG/include/proto.h | 352 |
1 files changed, 352 insertions, 0 deletions
diff --git a/benchmarks/CUDA/DG/include/proto.h b/benchmarks/CUDA/DG/include/proto.h new file mode 100644 index 0000000..bbab2e5 --- /dev/null +++ b/benchmarks/CUDA/DG/include/proto.h @@ -0,0 +1,352 @@ +/* + * Copyright 1997, Regents of the University of Minnesota + * + * proto.h + * + * This file contains header files + * + * Started 10/19/95 + * George + * + * $Id: proto.h,v 1.11 2003/07/25 13:52:03 karypis Exp $ + * + */ + +/* kmetis.c */ +void Moc_Global_Partition(CtrlType *, GraphType *, WorkSpaceType *); + +/* mmetis.c */ + +/* gkmetis.c */ + +/* match.c */ +void Moc_GlobalMatch_Balance(CtrlType *, GraphType *, WorkSpaceType *); + +/* coarsen.c */ +void Moc_Global_CreateCoarseGraph(CtrlType *, GraphType *, WorkSpaceType *, int); + +/* initpart.c */ +void Moc_InitPartition_RB(CtrlType *, GraphType *, WorkSpaceType *); +void Moc_KeepPart(GraphType *, WorkSpaceType *, idxtype *, int); + +/* kwayrefine.c */ +void Moc_ProjectPartition(CtrlType *, GraphType *, WorkSpaceType *); +void Moc_ComputePartitionParams(CtrlType *, GraphType *, WorkSpaceType *); + +/* kwayfm.c */ +void Moc_KWayFM(CtrlType *, GraphType *, WorkSpaceType *, int); + +/* kwaybalance.c */ +void Moc_KWayBalance(CtrlType *, GraphType *, WorkSpaceType *, int); + +/* remap.c */ +void ParallelReMapGraph(CtrlType *, GraphType *, WorkSpaceType *); +void ParallelTotalVReMap(CtrlType *, idxtype *, idxtype *, WorkSpaceType *, int, int); +int SimilarTpwgts(float *, int, int, int); + +/* move.c */ +GraphType *Moc_MoveGraph(CtrlType *, GraphType *, WorkSpaceType *); +/* move.c */ +void CheckMGraph(CtrlType *, GraphType *); +void ProjectInfoBack(CtrlType *, GraphType *, idxtype *, idxtype *, WorkSpaceType *); +void FindVtxPerm(CtrlType *, GraphType *, idxtype *, WorkSpaceType *); + +/* memory.c */ +void PreAllocateMemory(CtrlType *, GraphType *, WorkSpaceType *); +void FreeWSpace(WorkSpaceType *); +void FreeCtrl(CtrlType *); +GraphType *CreateGraph(void); +void InitGraph(GraphType *); +void FreeGraph(GraphType *); +void FreeInitialGraphAndRemap(GraphType *, int); + + +/* ametis.c */ +void Adaptive_Partition(CtrlType *, GraphType *, WorkSpaceType *); + +/* rmetis.c */ + + +/* lmatch.c */ +void Mc_LocalMatch_HEM(CtrlType *, GraphType *, WorkSpaceType *); +void Mc_Local_CreateCoarseGraph(CtrlType *, GraphType *, WorkSpaceType *, int); + +/* wave.c */ +float WavefrontDiffusion(CtrlType *, GraphType *, idxtype *); + +/* balancemylink.c */ +int BalanceMyLink(CtrlType *, GraphType *, idxtype *, int, int, float *, float, float *, float *, float); + +/* redomylink.c */ +void RedoMyLink(CtrlType *, GraphType *, idxtype *, int, int, float *, float *, float *); + +/* initbalance.c */ +void Balance_Partition(CtrlType *, GraphType *, WorkSpaceType *); +GraphType *Moc_AssembleAdaptiveGraph(CtrlType *, GraphType *, WorkSpaceType *); + +/* mdiffusion.c */ +int Moc_Diffusion(CtrlType *, GraphType *, idxtype *, idxtype *, idxtype *, WorkSpaceType *, int); +GraphType *ExtractGraph(CtrlType *, GraphType *, idxtype *, idxtype *, idxtype *); + +/* diffutil.c */ +void SetUpConnectGraph(GraphType *, MatrixType *, idxtype *); +void Mc_ComputeMoveStatistics(CtrlType *, GraphType *, int *, int *, int *); + int Mc_ComputeSerialTotalV(GraphType *, idxtype *); +void ComputeLoad(GraphType *, int, float *, float *, int); +void ConjGrad2(MatrixType *, float *, float *, float, float *); +void mvMult2(MatrixType *, float *, float *); +void ComputeTransferVector(int, MatrixType *, float *, float *, int); +int ComputeSerialEdgeCut(GraphType *); +int ComputeSerialTotalV(GraphType *, idxtype *); + +/* akwayfm.c */ +void Moc_KWayAdaptiveRefine(CtrlType *, GraphType *, WorkSpaceType *, int); + +/* selectq.c */ +void Moc_DynamicSelectQueue(int, int, int, int, idxtype *, float *, int *, int *, int, float, float); +int Moc_HashVwgts(int, float *); +int Moc_HashVRank(int, int *); + + +/* csrmatch.c */ +void CSR_Match_SHEM(MatrixType *, idxtype *, idxtype *, idxtype *, int); + +/* serial.c */ +void Moc_SerialKWayAdaptRefine(GraphType *, int, idxtype *, float *, int); +void Moc_ComputeSerialPartitionParams(GraphType *, int, EdgeType *); +int AreAllHVwgtsBelow(int, float, float *, float, float *, float *); +void ComputeHKWayLoadImbalance(int, int, float *, float *); +void SerialRemap(GraphType *, int, idxtype *, idxtype *, idxtype *, float *); +int SSMIncKeyCmp(const void *, const void *); +void Moc_Serial_FM_2WayRefine(GraphType *, float *, int); +void Serial_SelectQueue(int, float *, float *, int *, int *, FPQueueType [MAXNCON][2]); +int Serial_BetterBalance(int, float *, float *, float *); +float Serial_Compute2WayHLoadImbalance(int, float *, float *); +void Moc_Serial_Balance2Way(GraphType *, float *, float); +void Moc_Serial_Init2WayBalance(GraphType *, float *); +int Serial_SelectQueueOneWay(int, float *, float *, int, FPQueueType [MAXNCON][2]); +void Moc_Serial_Compute2WayPartitionParams(GraphType *); +int Serial_AreAnyVwgtsBelow(int, float, float *, float, float *, float *); + +/* weird.c */ +void PartitionSmallGraph(CtrlType *, GraphType *, WorkSpaceType *); +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); + +/* mesh.c */ + +/* ometis.c */ + +/* pspases.c */ +GraphType *AssembleEntireGraph(CtrlType *, idxtype *, idxtype *, idxtype *); + +/* node_refine.c */ +void ComputeNodePartitionParams0(CtrlType *, GraphType *, WorkSpaceType *); +void ComputeNodePartitionParams(CtrlType *, GraphType *, WorkSpaceType *); +void KWayNodeRefine0(CtrlType *, GraphType *, WorkSpaceType *, int, float); +void KWayNodeRefine(CtrlType *, GraphType *, WorkSpaceType *, int, float); +void KWayNodeRefine2(CtrlType *, GraphType *, WorkSpaceType *, int, float); +void PrintNodeBalanceInfo(CtrlType *, int, idxtype *, idxtype *, idxtype *, int); + +/* initmsection.c */ +void InitMultisection(CtrlType *, GraphType *, WorkSpaceType *); +GraphType *AssembleMultisectedGraph(CtrlType *, GraphType *, WorkSpaceType *); + +/* order.c */ +void MultilevelOrder(CtrlType *, GraphType *, idxtype *, idxtype *, WorkSpaceType *); +void LabelSeparators(CtrlType *, GraphType *, idxtype *, idxtype *, idxtype *, idxtype *, WorkSpaceType *); +void CompactGraph(CtrlType *, GraphType *, idxtype *, WorkSpaceType *); +void LocalOrder(CtrlType *, GraphType *, idxtype *, int, WorkSpaceType *); +void LocalNDOrder(CtrlType *, GraphType *, idxtype *, int, WorkSpaceType *); +void Order_Partition(CtrlType *, GraphType *, WorkSpaceType *); + +/* xyzpart.c */ +void Coordinate_Partition(CtrlType *, GraphType *, int, float *, int, WorkSpaceType *); +void PartSort(CtrlType *, GraphType *, KeyValueType *, WorkSpaceType *); + + +/* fpqueue.c */ +void FPQueueInit(FPQueueType *, int); +void FPQueueReset(FPQueueType *); +void FPQueueFree(FPQueueType *); +int FPQueueGetSize(FPQueueType *); +int FPQueueInsert(FPQueueType *, int, float); +int FPQueueDelete(FPQueueType *, int); +int FPQueueUpdate(FPQueueType *, int, float, float); +void FPQueueUpdateUp(FPQueueType *, int, float, float); +int FPQueueGetMax(FPQueueType *); +int FPQueueSeeMaxVtx(FPQueueType *); +float FPQueueSeeMaxGain(FPQueueType *); +float FPQueueGetKey(FPQueueType *); +int FPQueueGetQSize(FPQueueType *); +int CheckHeapFloat(FPQueueType *); + +/* stat.c */ +void Moc_ComputeSerialBalance(CtrlType *, GraphType *, idxtype *, float *); +void Moc_ComputeParallelBalance(CtrlType *, GraphType *, idxtype *, float *); +void Moc_PrintThrottleMatrix(CtrlType *, GraphType *, float *); +void Moc_ComputeRefineStats(CtrlType *, GraphType *, float *); + +/* debug.c */ +void PrintVector(CtrlType *, int, int, idxtype *, char *); +void PrintVector2(CtrlType *, int, int, idxtype *, char *); +void PrintPairs(CtrlType *, int, KeyValueType *, char *); +void PrintGraph(CtrlType *, GraphType *); +void PrintGraph2(CtrlType *, GraphType *); +void PrintSetUpInfo(CtrlType *ctrl, GraphType *graph); +void PrintTransferedGraphs(CtrlType *, int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *); +void WriteMetisGraph(int, idxtype *, idxtype *, idxtype *, idxtype *); + +/* comm.c */ +void CommInterfaceData(CtrlType *, GraphType *, idxtype *, idxtype *, idxtype *); +void CommChangedInterfaceData(CtrlType *, GraphType *, int, idxtype *, idxtype *, KeyValueType *, KeyValueType *, idxtype *); +int GlobalSEMax(CtrlType *, int); +double GlobalSEMaxDouble(CtrlType *, double); +int GlobalSEMin(CtrlType *, int); +int GlobalSESum(CtrlType *, int); +float GlobalSEMaxFloat(CtrlType *, float); +float GlobalSEMinFloat(CtrlType *, float); +float GlobalSESumFloat(CtrlType *, float); + +/* util.c */ +void errexit(char *,...); +void myprintf(CtrlType *, char *f_str,...); +void rprintf(CtrlType *, char *f_str,...); +#ifndef DMALLOC +int *imalloc(int, char *); +idxtype *idxmalloc(int, char *); +float *fmalloc(int, char *); +int *ismalloc(int, int, char *); +idxtype *idxsmalloc(int, idxtype, char *); +void *GKmalloc(int, char *); +#endif +/*void GKfree(void **,...); */ +int *iset(int n, int val, int *x); +idxtype * idxset(int n, idxtype val, idxtype *x); +int idxamax(int n, idxtype *x); +int idxamin(int n, idxtype *x); +int idxasum(int n, idxtype *x); +float snorm2(int, float *); +float sdot(int n, float *, float *); +void saxpy(int, float, float *, float *); +void ikeyvalsort_org(int, KeyValueType *); +int IncKeyValueCmp(const void *, const void *); +void dkeyvalsort(int, KeyValueType *); +int DecKeyValueCmp(const void *, const void *); +int BSearch(int, idxtype *, int); +void RandomPermute(int, idxtype *, int); +void FastRandomPermute(int, idxtype *, int); +int ispow2(int); +int log2Int(int); +void BucketSortKeysDec(int, int, idxtype *, idxtype *); +float *sset(int n, float val, float *x); +int iamax(int, int *); +int idxamax_strd(int, idxtype *, int); +int idxamin_strd(int, idxtype *, int); +int samax_strd(int, float *, int); +int sfamax(int, float *); +int samin_strd(int, float *, int); +float idxavg(int, idxtype *); +float savg(int, float *); +int samax(int, float *); +int sfavg(int n, float *x); +int samax2(int, float *); +int samin(int, float *); +int idxsum(int, idxtype *); +int idxsum_strd(int, idxtype *, int); +void idxadd(int, idxtype *, idxtype *); +float ssum(int, float *); +float ssum_strd(int, float *, int); +void sscale(int, float, float *); +void saneg(int, float *); +float BetterVBalance(int, float *, float *, float *); +int IsHBalanceBetterTT(int, float *, float *, float *, float *); +int IsHBalanceBetterFT(int, float *, float *, float *, float *); +int myvalkeycompare(const void *, const void *); +int imyvalkeycompare(const void *, const void *); +float *fsmalloc(int, float, char *); +void saxpy2(int, float, float *, int, float *, int); +void GetThreeMax(int, float *, int *, int *, int *); + +/* qsort_special.c */ +void iidxsort(int, idxtype *); +void iintsort(int, int *); +void ikeysort(int, KeyValueType *); +void ikeyvalsort(int, KeyValueType *); + +/* grsetup.c */ +GraphType *Moc_SetUpGraph(CtrlType *, int, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int *); +void SetUpCtrl(CtrlType *ctrl, int, int, MPI_Comm); +void ChangeNumbering(idxtype *, idxtype *, idxtype *, idxtype *, int, int, int); +void ChangeNumberingMesh(idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int, int, int, int); +void ChangeNumberingMesh2(idxtype *elmdist, idxtype *eptr, idxtype *eind, + idxtype *xadj, idxtype *adjncy, idxtype *part, + int npes, int mype, int from); +void GraphRandomPermute(GraphType *); +void ComputeMoveStatistics(CtrlType *, GraphType *, int *, int *, int *); + +/* timer.c */ +void InitTimers(CtrlType *); +void PrintTimingInfo(CtrlType *); +void PrintTimer(CtrlType *, timer, char *); + +/* setup.c */ +void SetUp(CtrlType *, GraphType *, WorkSpaceType *); +int Home_PE(int, int, idxtype *, int); + + +/*********************/ +/* METIS subroutines */ +/*********************/ +void METIS_WPartGraphKway2(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); +void METIS_mCPartGraphRecursive2(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); +int MCMlevelRecursiveBisection2(CtrlType *, GraphType *, int, float *, idxtype *, float, int); +void METIS_PartGraphKway(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, int *, int *, idxtype *); +void METIS_mCPartGraphKway(int *, int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, int *, float *, int *, int *, idxtype *); +void METIS_EdgeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *); +void METIS_NodeComputeSeparator(int *, idxtype *, idxtype *, idxtype *, idxtype *, int *, int *, idxtype *); +void METIS_NodeND(int *, idxtype *, idxtype *, int *, int *, idxtype *, idxtype *); +void METIS_NodeNDP(int, idxtype *, idxtype *, int, int *, idxtype *, idxtype *, idxtype *); + + + +/***********************/ +/* TESTing subroutines */ +/***********************/ + +/* pio.c */ +void ParallelReadGraph(GraphType *, char *, MPI_Comm); +void Moc_ParallelWriteGraph(CtrlType *, GraphType *, char *, int, int); +void ReadTestGraph(GraphType *, char *, MPI_Comm); +float *ReadTestCoordinates(GraphType *, char *, int, MPI_Comm); +void ReadMetisGraph(char *, int *, idxtype **, idxtype **); +void Moc_SerialReadGraph(GraphType *, char *, int *, MPI_Comm); +void Moc_SerialReadMetisGraph(char *, int *, int *, int *, int *, idxtype **, idxtype **, idxtype **, idxtype **, int *); + +/* adaptgraph */ +void AdaptGraph(GraphType *, int, MPI_Comm); +void AdaptGraph2(GraphType *, int, MPI_Comm); +void Mc_AdaptGraph(GraphType *, idxtype *, int, int, MPI_Comm); + +/* ptest.c */ +void TestParMetis(char *, MPI_Comm); + +/* NEW_ptest.c */ +void TestParMetis_V3(char *, MPI_Comm); +int ComputeRealCut(idxtype *, idxtype *, char *, MPI_Comm); +int ComputeRealCut2(idxtype *, idxtype *, idxtype *, idxtype *, char *, MPI_Comm); +void TestMoveGraph(GraphType *, GraphType *, idxtype *, MPI_Comm); +GraphType *SetUpGraph(CtrlType *, idxtype *, idxtype *, idxtype *, idxtype *, idxtype *, int); + +/* mienio.c */ +void mienIO(MeshType *, char *, int, int, MPI_Comm); + +/* meshio.c */ +void ParallelReadMesh(MeshType *, char *, MPI_Comm); + +/* parmetis.c */ +void ChangeToFortranNumbering(idxtype *, idxtype *, idxtype *, int, int); + |
