summaryrefslogtreecommitdiff
path: root/benchmarks/CUDA/DG/include/proto.h
diff options
context:
space:
mode:
Diffstat (limited to 'benchmarks/CUDA/DG/include/proto.h')
-rw-r--r--benchmarks/CUDA/DG/include/proto.h352
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);
+