51 #include <Teuchos_OpaqueWrapper.hpp> 75 pageSize = sysconf(_SC_PAGESIZE);
77 #warning "Page size query is not possible. No per-process memory stats." 82 std::ostringstream fname;
83 fname <<
"/proc/" << pid <<
"/statm";
84 std::ifstream memFile;
87 memFile.open(fname.str().c_str());
95 while (memFile.good()){
96 memFile.getline(buf, 128);
102 std::istringstream sbuf(buf);
106 long pageKBytes = pageSize / 1024;
107 totalPages = atol(buf);
109 return totalPages * pageKBytes;
114 #pragma message ("Zoltan2_Util.cpp: Page size query is not implemented on windows. No per-process memory stats.") 120 #ifdef HAVE_ZOLTAN2_MPI 125 RCP<Teuchos::MpiComm<int> >
126 MPI2Teuchos(
const MPI_Comm &comm)
128 typedef Teuchos::OpaqueWrapper<MPI_Comm> mpiWrapper_t;
129 RCP<mpiWrapper_t>handle = Teuchos::opaqueWrapper<MPI_Comm>(comm);
130 RCP<Teuchos::MpiComm<int> > tcommPtr(
131 new Teuchos::MpiComm<int>(handle));
136 RCP<const Teuchos::MpiComm<int> >
137 MPI2TeuchosConst(
const MPI_Comm &comm)
139 typedef Teuchos::OpaqueWrapper<MPI_Comm> mpiWrapper_t;
140 RCP<mpiWrapper_t>handle = Teuchos::opaqueWrapper<MPI_Comm>(comm);
141 RCP<const Teuchos::MpiComm<int> > tcommPtr(
142 new Teuchos::MpiComm<int>(handle));
151 Teuchos2MPI(
const RCP<Comm<int> > &comm)
154 typedef Teuchos::OpaqueWrapper<MPI_Comm> mpiWrapper_t;
156 Comm<int> *c = comm.get();
157 Teuchos::MpiComm<int> *mc =
dynamic_cast<Teuchos::MpiComm<int> *
>(c);
159 RCP<const mpiWrapper_t> wrappedComm = mc->getRawMpiComm();
160 mpiComm = (*wrappedComm.getRawPtr())();
163 mpiComm = MPI_COMM_SELF;
170 TeuchosConst2MPI(
const RCP<
const Comm<int> > &comm)
173 typedef Teuchos::OpaqueWrapper<MPI_Comm> mpiWrapper_t;
175 const Comm<int> *cConst = comm.get();
176 Comm<int> *c =
const_cast<Comm<int> *
>(cConst);
177 Teuchos::MpiComm<int> *mc =
dynamic_cast<Teuchos::MpiComm<int> *
>(c);
179 RCP<const mpiWrapper_t> wrappedComm = mc->getRawMpiComm();
180 mpiComm = (*wrappedComm.getRawPtr())();
183 mpiComm = MPI_COMM_SELF;
long getProcessKilobytes()
A gathering of useful namespace methods.