// // Copyright 2010 Intel Corporation // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. // // [2010-10-25] added support for non-blocking send/recv operations // - RCCE_isend(), ..._test(), ..._wait(), ..._push() // - RCCE_irecv(), ..._test(), ..._wait(), ..._push() // by Carsten Clauss, Chair for Operating Systems, // RWTH Aachen University // // [2012-09-10] added support for "tagged" flags // - RCCE_send_tagged(), RCCE_recv_tagged(), RCCE_recv_probe_tagged() // by Carsten Clauss, Chair for Operating Systems, // RWTH Aachen University // // [2015-10-18] port (i)RCCE to "HermitCore" // by Stefan Lankes, Institute for Automation of Complex Power Systems // RWTH Aachen University #ifndef RCCE_H #define RCCE_H #include #include #ifdef __hermit__ #define SCC #define COPPERRIDGE #define USE_REMOTE_PUT_LOCAL_GET #define USE_PROBE_FLAGS #undef SHMADD #endif #define _RCCE "1.0.13 release" // #define USE_BYTE_FLAGS // #define USE_FLAG_EXPERIMENTAL // little trick to allow the application to be called "RCCE_APP" under // OpenMP, and "main" otherwise #define ABS(x) ((x > 0)?x:-x) #if !defined(_OPENMP) || defined(__hermit__) #define RCCE_APP main #endif // modify next line for Intel BareMetal, which supports stdout, but not stdferr #define STDERR stdout #ifdef __hermit__ #define LOG2_LINE_SIZE 6 #else #define LOG2_LINE_SIZE 5 #endif #define RCCE_LINE_SIZE (1<