1 /****************************************************************/ 2 /* Parallel Combinatorial BLAS Library (for Graph Computations) */ 3 /* version 1.6 -------------------------------------------------*/ 4 /* date: 04/29/2018 --------------------------------------------*/ 5 /* authors: Ariful Azad, Aydin Buluc, John Gilbert------------*/ 6 /****************************************************************/ 7 /* 8 9 Combinatorial BLAS, Copyright (c) 2018, The Regents of the University of California, through Lawrence Berkeley National Laboratory (subject to receipt of any required approvals from the U.S. Dept. of Energy) and University of California, Santa Barbara. All rights reserved. 10 11 If you have questions about your rights to use or distribute this software, please contact Berkeley Lab's Innovation & Partnerships Office at IPO@lbl.gov. 12 13 14 NOTICE. This Software was developed under funding from the U.S. Department of Energy and the U.S. Government consequently retains certain rights. As such, the U.S. Government has been granted for itself and others acting on its behalf a paid-up, nonexclusive, irrevocable, worldwide license in the Software to reproduce, distribute copies to the public, prepare derivative works, and perform publicly and display publicly, and to permit other to do so. 15 */ 16 17 18 #ifndef COMBBLAS_H 19 #define COMBBLAS_H 20 21 // These macros should be defined before stdint.h is included 22 #ifndef __STDC_CONSTANT_MACROS 23 #define __STDC_CONSTANT_MACROS 24 #endif 25 #ifndef __STDC_LIMIT_MACROS 26 #define __STDC_LIMIT_MACROS 27 #endif 28 #include <stdint.h> 29 30 #if defined(COMBBLAS_BOOST) 31 #ifdef CRAYCOMP 32 #include <boost/config/compiler/cray.hpp> 33 #endif 34 #include <boost/tr1/memory.hpp> 35 #include <boost/tr1/unordered_map.hpp> 36 #include <boost/tr1/tuple.hpp> 37 #define joker boost // namespace 38 #elif defined(COMBBLAS_TR1) 39 #include <tr1/memory> 40 #include <tr1/unordered_map> 41 #include <tr1/tuple> 42 #include <tr1/type_traits> 43 #define joker std::tr1 44 #elif defined(_MSC_VER) && (_MSC_VER < 1600) 45 #include <memory> 46 #include <unordered_map> 47 #include <tuple> 48 #include <type_traits> 49 #define joker std::tr1 50 #else // C++11 51 #include <memory> 52 #include <unordered_map> 53 #include <tuple> 54 #include <type_traits> 55 #define joker std 56 #endif 57 // for VC2008 58 59 60 // Just in case the -fopenmp didn't define _OPENMP by itself 61 #ifdef THREADED 62 #ifndef _OPENMP 63 #define _OPENMP 64 #endif 65 #endif 66 67 #ifdef _OPENMP 68 #include <omp.h> 69 #endif 70 71 72 //#ifdef _MSC_VER 73 //#pragma warning( disable : 4244 ) // conversion from 'int64_t' to 'double', possible loss of data 74 //#endif 75 76 extern int cblas_splits; 77 extern double cblas_alltoalltime; 78 extern double cblas_allgathertime; 79 extern double cblas_localspmvtime; 80 extern double cblas_mergeconttime; 81 extern double cblas_transvectime; 82 83 84 extern double mcl_Abcasttime; 85 extern double mcl_Bbcasttime; 86 extern double mcl_localspgemmtime; 87 extern double mcl_multiwaymergetime; 88 extern double mcl_kselecttime; 89 extern double mcl_prunecolumntime; 90 91 92 93 // An adapter function that allows using extended-callback EWiseApply with plain-old binary functions that don't want the extra parameters. 94 template <typename RETT, typename NU1, typename NU2, typename BINOP> 95 class EWiseExtToPlainAdapter 96 { 97 public: 98 BINOP plain_binary_op; 99 EWiseExtToPlainAdapter(BINOP op)100 EWiseExtToPlainAdapter(BINOP op): plain_binary_op(op) {} 101 operator()102 RETT operator()(const NU1& a, const NU2& b, bool aIsNull, bool bIsNull) 103 { 104 return plain_binary_op(a, b); 105 } 106 }; 107 108 #include "SpDefs.h" 109 #include "BitMap.h" 110 #include "SpTuples.h" 111 #include "SpDCCols.h" 112 #include "SpCCols.h" 113 #include "SpParMat.h" 114 #include "FullyDistVec.h" 115 #include "FullyDistSpVec.h" 116 #include "VecIterator.h" 117 #include "PreAllocatedSPA.h" 118 #include "ParFriends.h" 119 #include "BFSFriends.h" 120 #include "DistEdgeList.h" 121 #include "Semirings.h" 122 #include "Operations.h" 123 #include "MPIOp.h" 124 #include "MPIType.h" 125 126 #endif 127