![]() System : Linux absol.cf 5.4.0-198-generic #218-Ubuntu SMP Fri Sep 27 20:18:53 UTC 2024 x86_64 User : www-data ( 33) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, Directory : /etc/alternatives/mpi/openmpi/ompi/mpi/cxx/ |
Upload File : |
// -*- c++ -*- // // Copyright (c) 2004-2005 The Trustees of Indiana University and Indiana // University Research and Technology // Corporation. All rights reserved. // Copyright (c) 2004-2005 The University of Tennessee and The University // of Tennessee Research Foundation. All rights // reserved. // Copyright (c) 2004-2005 High Performance Computing Center Stuttgart, // University of Stuttgart. All rights reserved. // Copyright (c) 2004-2005 The Regents of the University of California. // All rights reserved. // Copyright (c) 2006-2009 Cisco Systems, Inc. All rights reserved. // $COPYRIGHT$ // // Additional copyrights may follow // // $HEADER$ // #if 0 /* OMPI_ENABLE_MPI_PROFILING */ inline MPI::Op::Op() { } inline MPI::Op::Op(const MPI::Op& o) : pmpi_op(o.pmpi_op) { } inline MPI::Op::Op(MPI_Op o) : pmpi_op(o) { } inline MPI::Op::~Op() { } inline MPI::Op& MPI::Op::operator=(const MPI::Op& op) { pmpi_op = op.pmpi_op; return *this; } // comparison inline bool MPI::Op::operator== (const MPI::Op &a) { return (bool)(pmpi_op == a.pmpi_op); } inline bool MPI::Op::operator!= (const MPI::Op &a) { return (bool)!(*this == a); } // inter-language operability inline MPI::Op& MPI::Op::operator= (const MPI_Op &i) { pmpi_op = i; return *this; } inline MPI::Op::operator MPI_Op () const { return pmpi_op; } //inline //MPI::Op::operator MPI_Op* () { return pmpi_op; } #else // ============= NO PROFILING =================================== // construction inline MPI::Op::Op() : mpi_op(MPI_OP_NULL) { } inline MPI::Op::Op(MPI_Op i) : mpi_op(i) { } inline MPI::Op::Op(const MPI::Op& op) : mpi_op(op.mpi_op) { } inline MPI::Op::~Op() { #if 0 mpi_op = MPI_OP_NULL; op_user_function = 0; #endif } inline MPI::Op& MPI::Op::operator=(const MPI::Op& op) { mpi_op = op.mpi_op; return *this; } // comparison inline bool MPI::Op::operator== (const MPI::Op &a) { return (bool)(mpi_op == a.mpi_op); } inline bool MPI::Op::operator!= (const MPI::Op &a) { return (bool)!(*this == a); } // inter-language operability inline MPI::Op& MPI::Op::operator= (const MPI_Op &i) { mpi_op = i; return *this; } inline MPI::Op::operator MPI_Op () const { return mpi_op; } //inline //MPI::Op::operator MPI_Op* () { return &mpi_op; } #endif // Extern this function here rather than include an internal Open MPI // header file (and therefore force installing the internal Open MPI // header file so that user apps can #include it) extern "C" void ompi_op_set_cxx_callback(MPI_Op op, MPI_User_function*); // There is a lengthy comment in ompi/mpi/cxx/intercepts.cc explaining // what this function is doing. Please read it before modifying this // function. inline void MPI::Op::Init(MPI::User_function *func, bool commute) { (void)MPI_Op_create((MPI_User_function*) ompi_mpi_cxx_op_intercept, (int) commute, &mpi_op); ompi_op_set_cxx_callback(mpi_op, (MPI_User_function*) func); } inline void MPI::Op::Free() { (void)MPI_Op_free(&mpi_op); } inline void MPI::Op::Reduce_local(const void *inbuf, void *inoutbuf, int count, const MPI::Datatype& datatype) const { (void)MPI_Reduce_local(const_cast<void*>(inbuf), inoutbuf, count, datatype, mpi_op); } inline bool MPI::Op::Is_commutative(void) const { int commute; (void)MPI_Op_commutative(mpi_op, &commute); return (bool) commute; }