📄 op_inln.h
字号:
// -*- 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 Cisco Systems, Inc. All rights reserved.// $COPYRIGHT$// // Additional copyrights may follow// // $HEADER$//#if 0 /* OMPI_ENABLE_MPI_PROFILING */inlineMPI::Op::Op() { } inlineMPI::Op::Op(const MPI::Op& o) : pmpi_op(o.pmpi_op) { } inlineMPI::Op::Op(MPI_Op o) : pmpi_op(o) { }inlineMPI::Op::~Op() { }inlineMPI::Op& MPI::Op::operator=(const MPI::Op& op) { pmpi_op = op.pmpi_op; return *this;}// comparisoninline boolMPI::Op::operator== (const MPI::Op &a) { return (bool)(pmpi_op == a.pmpi_op);}inline boolMPI::Op::operator!= (const MPI::Op &a) { return (bool)!(*this == a);}// inter-language operabilityinline MPI::Op&MPI::Op::operator= (const MPI_Op &i) { pmpi_op = i; return *this; }inlineMPI::Op::operator MPI_Op () const { return pmpi_op; }//inline//MPI::Op::operator MPI_Op* () { return pmpi_op; }#else // ============= NO PROFILING ===================================// constructioninlineMPI::Op::Op() : mpi_op(MPI_OP_NULL) { }inlineMPI::Op::Op(MPI_Op i) : mpi_op(i) { }inlineMPI::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;}// comparisoninline boolMPI::Op::operator== (const MPI::Op &a) { return (bool)(mpi_op == a.mpi_op); }inline boolMPI::Op::operator!= (const MPI::Op &a) { return (bool)!(*this == a); }// inter-language operabilityinline MPI::Op&MPI::Op::operator= (const MPI_Op &i) { mpi_op = i; return *this; }inlineMPI::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 voidMPI::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 voidMPI::Op::Free(){ (void)MPI_Op_free(&mpi_op);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -