⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 op_inln.h

📁 MPI stands for the Message Passing Interface. Written by the MPI Forum (a large committee comprising
💻 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 + -