Shift the architecture calculation from the ompi/datatype engine to the opal/util area. This allows us to compute the architecture earlier in the launch and communicate it outside of the modex.
Note: this is an early preliminary step in the movement of portions of the datatype engine to the opal layer. This commit was SVN r18198.
Этот коммит содержится в:
родитель
01148b77dc
Коммит
fa082cafa9
@ -27,7 +27,6 @@ headers = \
|
||||
datatype_unpack.h \
|
||||
datatype_checksum.h \
|
||||
datatype_memcpy.h \
|
||||
dt_arch.h \
|
||||
convertor.h \
|
||||
convertor_internal.h
|
||||
|
||||
@ -54,7 +53,6 @@ libdatatype_la_SOURCES = \
|
||||
dt_sndrcv.c \
|
||||
fake_stack.c \
|
||||
dt_args.c \
|
||||
dt_arch.c \
|
||||
dt_copy.c \
|
||||
dt_external32.c \
|
||||
dt_match_size.c \
|
||||
|
@ -27,6 +27,7 @@
|
||||
#include <stdio.h>
|
||||
|
||||
#include "opal/prefetch.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
@ -34,7 +35,6 @@
|
||||
#include "ompi/datatype/datatype_checksum.h"
|
||||
#include "ompi/datatype/datatype_prototypes.h"
|
||||
#include "ompi/datatype/convertor_internal.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
extern size_t ompi_ddt_local_sizes[DT_MAX_PREDEFINED];
|
||||
extern int ompi_convertor_create_stack_with_pos_general( ompi_convertor_t* convertor,
|
||||
@ -123,18 +123,18 @@ ompi_convertor_find_or_create_master( uint32_t remote_arch )
|
||||
}
|
||||
|
||||
/* Find out the remote bool size */
|
||||
if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_BOOLIS8 ) ) {
|
||||
if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_BOOLIS8 ) ) {
|
||||
remote_sizes[DT_CXX_BOOL] = 1;
|
||||
} else if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_BOOLIS16 ) ) {
|
||||
} else if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_BOOLIS16 ) ) {
|
||||
remote_sizes[DT_CXX_BOOL] = 2;
|
||||
} else if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_BOOLIS32 ) ) {
|
||||
} else if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_BOOLIS32 ) ) {
|
||||
remote_sizes[DT_CXX_BOOL] = 4;
|
||||
} else {
|
||||
opal_output( 0, "Unknown sizeof(bool) for the remote architecture\n" );
|
||||
}
|
||||
|
||||
/* check the length of the long */
|
||||
if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_LONGIS64 ) ) {
|
||||
if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_LONGIS64 ) ) {
|
||||
remote_sizes[DT_LONG] = 8;
|
||||
remote_sizes[DT_UNSIGNED_LONG] = 8;
|
||||
remote_sizes[DT_LONG_LONG_INT] = 8;
|
||||
@ -144,11 +144,11 @@ ompi_convertor_find_or_create_master( uint32_t remote_arch )
|
||||
* unknown (if Fortran is not supported on the remote library). If this is
|
||||
* the case, just let the remote logical size to match the local size.
|
||||
*/
|
||||
if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_LOGICALIS8 ) ) {
|
||||
if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_LOGICALIS8 ) ) {
|
||||
remote_sizes[DT_LOGIC] = 1;
|
||||
} else if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_LOGICALIS16 ) ) {
|
||||
} else if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_LOGICALIS16 ) ) {
|
||||
remote_sizes[DT_LOGIC] = 2;
|
||||
} else if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_LOGICALIS32 ) ) {
|
||||
} else if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_LOGICALIS32 ) ) {
|
||||
remote_sizes[DT_LOGIC] = 4;
|
||||
} else {
|
||||
opal_output( 0, "Unknown sizeof(fortran logical) for the remote architecture\n" );
|
||||
@ -164,8 +164,8 @@ ompi_convertor_find_or_create_master( uint32_t remote_arch )
|
||||
if( remote_sizes[i] != ompi_ddt_local_sizes[i] )
|
||||
master->hetero_mask |= (((uint64_t)1) << i);
|
||||
}
|
||||
if( ompi_arch_checkmask( &master->remote_arch, OMPI_ARCH_ISBIGENDIAN ) !=
|
||||
ompi_arch_checkmask( &ompi_mpi_local_arch, OMPI_ARCH_ISBIGENDIAN ) ) {
|
||||
if( opal_arch_checkmask( &master->remote_arch, OPAL_ARCH_ISBIGENDIAN ) !=
|
||||
opal_arch_checkmask( &ompi_mpi_local_arch, OPAL_ARCH_ISBIGENDIAN ) ) {
|
||||
uint64_t hetero_mask = 0;
|
||||
|
||||
for( i = DT_CHAR; i < DT_MAX_PREDEFINED; i++ ) {
|
||||
|
@ -13,9 +13,9 @@
|
||||
#include "ompi_config.h"
|
||||
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "opal/types.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
#include "ompi/datatype/datatype_internal.h"
|
||||
@ -47,8 +47,8 @@ copy_##TYPENAME##_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count,
|
||||
from, from_len, from_extent, \
|
||||
to, to_length, to_extent); \
|
||||
\
|
||||
if ((pConvertor->remoteArch & OMPI_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_ISBIGENDIAN)) { \
|
||||
if ((pConvertor->remoteArch & OPAL_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_ISBIGENDIAN)) { \
|
||||
for( i = 0; i < count; i++ ) { \
|
||||
ompi_dt_swap_bytes(to, from, sizeof(TYPE)); \
|
||||
to += to_extent; \
|
||||
@ -84,8 +84,8 @@ copy_##TYPENAME##_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count, \
|
||||
from, from_len, from_extent, \
|
||||
to, to_length, to_extent); \
|
||||
\
|
||||
if ((pConvertor->remoteArch & OMPI_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_ISBIGENDIAN)) { \
|
||||
if ((pConvertor->remoteArch & OPAL_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_ISBIGENDIAN)) { \
|
||||
/* source and destination are different endianness */ \
|
||||
for( i = 0; i < count; i++ ) { \
|
||||
TYPE1* to_1, *from_1; \
|
||||
@ -131,8 +131,8 @@ copy_2complex_##TYPENAME##_heterogeneous(ompi_convertor_t *pConvertor, uint32_t
|
||||
from, from_len, from_extent, \
|
||||
to, to_length, to_extent); \
|
||||
\
|
||||
if ((pConvertor->remoteArch & OMPI_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_ISBIGENDIAN)) { \
|
||||
if ((pConvertor->remoteArch & OPAL_ARCH_ISBIGENDIAN) != \
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_ISBIGENDIAN)) { \
|
||||
/* source and destination are different endianness */ \
|
||||
for( i = 0; i < count; i++ ) { \
|
||||
TYPE *to_p = (TYPE*) to, *from_p = (TYPE*) from; \
|
||||
@ -228,16 +228,16 @@ copy_cxx_bool_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count,
|
||||
uint32_t i;
|
||||
|
||||
/* fix up the from extent */
|
||||
if ((pConvertor->remoteArch & OMPI_ARCH_BOOLISxx) !=
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_BOOLISxx)) {
|
||||
switch (pConvertor->remoteArch & OMPI_ARCH_BOOLISxx) {
|
||||
case OMPI_ARCH_BOOLIS8:
|
||||
if ((pConvertor->remoteArch & OPAL_ARCH_BOOLISxx) !=
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_BOOLISxx)) {
|
||||
switch (pConvertor->remoteArch & OPAL_ARCH_BOOLISxx) {
|
||||
case OPAL_ARCH_BOOLIS8:
|
||||
from_extent = 1;
|
||||
break;
|
||||
case OMPI_ARCH_BOOLIS16:
|
||||
case OPAL_ARCH_BOOLIS16:
|
||||
from_extent = 2;
|
||||
break;
|
||||
case OMPI_ARCH_BOOLIS32:
|
||||
case OPAL_ARCH_BOOLIS32:
|
||||
from_extent = 4;
|
||||
break;
|
||||
}
|
||||
@ -248,16 +248,16 @@ copy_cxx_bool_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count,
|
||||
to, to_length, to_extent);
|
||||
|
||||
if ((to_extent != sizeof(bool) || from_extent != sizeof(bool)) ||
|
||||
((pConvertor->remoteArch & OMPI_ARCH_BOOLISxx) !=
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_BOOLISxx))) {
|
||||
switch (pConvertor->remoteArch & OMPI_ARCH_BOOLISxx) {
|
||||
case OMPI_ARCH_BOOLIS8:
|
||||
((pConvertor->remoteArch & OPAL_ARCH_BOOLISxx) !=
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_BOOLISxx))) {
|
||||
switch (pConvertor->remoteArch & OPAL_ARCH_BOOLISxx) {
|
||||
case OPAL_ARCH_BOOLIS8:
|
||||
CXX_BOOL_COPY_LOOP(int8_t);
|
||||
break;
|
||||
case OMPI_ARCH_BOOLIS16:
|
||||
case OPAL_ARCH_BOOLIS16:
|
||||
CXX_BOOL_COPY_LOOP(int16_t);
|
||||
break;
|
||||
case OMPI_ARCH_BOOLIS32:
|
||||
case OPAL_ARCH_BOOLIS32:
|
||||
CXX_BOOL_COPY_LOOP(int32_t);
|
||||
break;
|
||||
}
|
||||
@ -285,16 +285,16 @@ copy_fortran_logical_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count,
|
||||
uint32_t i;
|
||||
|
||||
/* fix up the from extent */
|
||||
if ((pConvertor->remoteArch & OMPI_ARCH_LOGICALISxx) !=
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_LOGICALISxx)) {
|
||||
switch (pConvertor->remoteArch & OMPI_ARCH_LOGICALISxx) {
|
||||
case OMPI_ARCH_LOGICALIS8:
|
||||
if ((pConvertor->remoteArch & OPAL_ARCH_LOGICALISxx) !=
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_LOGICALISxx)) {
|
||||
switch (pConvertor->remoteArch & OPAL_ARCH_LOGICALISxx) {
|
||||
case OPAL_ARCH_LOGICALIS8:
|
||||
from_extent = 1;
|
||||
break;
|
||||
case OMPI_ARCH_LOGICALIS16:
|
||||
case OPAL_ARCH_LOGICALIS16:
|
||||
from_extent = 2;
|
||||
break;
|
||||
case OMPI_ARCH_LOGICALIS32:
|
||||
case OPAL_ARCH_LOGICALIS32:
|
||||
from_extent = 4;
|
||||
break;
|
||||
}
|
||||
@ -307,16 +307,16 @@ copy_fortran_logical_heterogeneous(ompi_convertor_t *pConvertor, uint32_t count,
|
||||
|
||||
if ((to_extent != sizeof(ompi_fortran_logical_t) ||
|
||||
from_extent != sizeof(ompi_fortran_logical_t)) ||
|
||||
((pConvertor->remoteArch & OMPI_ARCH_LOGICALISxx) !=
|
||||
(ompi_mpi_local_arch & OMPI_ARCH_LOGICALISxx))) {
|
||||
switch (pConvertor->remoteArch & OMPI_ARCH_LOGICALISxx) {
|
||||
case OMPI_ARCH_LOGICALIS8:
|
||||
((pConvertor->remoteArch & OPAL_ARCH_LOGICALISxx) !=
|
||||
(ompi_mpi_local_arch & OPAL_ARCH_LOGICALISxx))) {
|
||||
switch (pConvertor->remoteArch & OPAL_ARCH_LOGICALISxx) {
|
||||
case OPAL_ARCH_LOGICALIS8:
|
||||
FORTRAN_LOGICAL_COPY_LOOP(int8_t);
|
||||
break;
|
||||
case OMPI_ARCH_LOGICALIS16:
|
||||
case OPAL_ARCH_LOGICALIS16:
|
||||
FORTRAN_LOGICAL_COPY_LOOP(int16_t);
|
||||
break;
|
||||
case OMPI_ARCH_LOGICALIS32:
|
||||
case OPAL_ARCH_LOGICALIS32:
|
||||
FORTRAN_LOGICAL_COPY_LOOP(int32_t);
|
||||
break;
|
||||
}
|
||||
|
@ -18,11 +18,12 @@
|
||||
*/
|
||||
|
||||
#include "ompi_config.h"
|
||||
#include "ompi/constants.h"
|
||||
|
||||
#include "mpi.h"
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/datatype_internal.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
|
||||
static inline int
|
||||
@ -499,7 +500,7 @@ __ompi_ddt_create_from_packed_description( void** packed_buffer,
|
||||
bool need_swap = false;
|
||||
|
||||
if( (remote_processor->proc_arch ^ ompi_proc_local()->proc_arch) &
|
||||
OMPI_ARCH_ISBIGENDIAN ) {
|
||||
OPAL_ARCH_ISBIGENDIAN ) {
|
||||
need_swap = true;
|
||||
}
|
||||
#endif
|
||||
|
@ -22,7 +22,7 @@
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
#include "ompi/datatype/datatype_internal.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
/* From the MPI standard. external32 use the following types:
|
||||
* Type Length
|
||||
@ -68,10 +68,10 @@
|
||||
* consider the data stored in external32 as being packed.
|
||||
*/
|
||||
|
||||
uint32_t ompi_ddt_external32_arch_id = OMPI_ARCH_LDEXPSIZEIS15 | OMPI_ARCH_LDMANTDIGIS113 |
|
||||
OMPI_ARCH_LONGDOUBLEIS128 | OMPI_ARCH_ISBIGENDIAN |
|
||||
OMPI_ARCH_HEADERMASK | OMPI_ARCH_HEADERMASK2 |
|
||||
OMPI_ARCH_BOOLIS8 | OMPI_ARCH_LOGICALIS8;
|
||||
uint32_t ompi_ddt_external32_arch_id = OPAL_ARCH_LDEXPSIZEIS15 | OPAL_ARCH_LDMANTDIGIS113 |
|
||||
OPAL_ARCH_LONGDOUBLEIS128 | OPAL_ARCH_ISBIGENDIAN |
|
||||
OPAL_ARCH_HEADERMASK | OPAL_ARCH_HEADERMASK2 |
|
||||
OPAL_ARCH_BOOLIS8 | OPAL_ARCH_LOGICALIS8;
|
||||
|
||||
ompi_convertor_t* ompi_mpi_external32_convertor = NULL;
|
||||
ompi_convertor_t* ompi_mpi_local_convertor = NULL;
|
||||
@ -79,7 +79,7 @@ uint32_t ompi_mpi_local_arch = 0xFFFFFFFF;
|
||||
|
||||
int32_t ompi_ddt_default_convertors_init( void )
|
||||
{
|
||||
ompi_arch_compute_local_id( &ompi_mpi_local_arch );
|
||||
opal_arch_compute_local_id( &ompi_mpi_local_arch );
|
||||
|
||||
/* create the extern32 convertor */
|
||||
ompi_mpi_external32_convertor = ompi_convertor_create( ompi_ddt_external32_arch_id, 0 );
|
||||
|
@ -28,6 +28,8 @@
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/if.h"
|
||||
#include "opal/util/show_help.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/mca/btl/btl.h"
|
||||
#include "ompi/mca/btl/base/btl_base_error.h"
|
||||
@ -38,7 +40,6 @@
|
||||
#include "btl_openib_xrc.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/mca/mpool/base/base.h"
|
||||
#include "ompi/mca/mpool/mpool.h"
|
||||
#include "ompi/mca/mpool/rdma/mpool_rdma.h"
|
||||
@ -1114,8 +1115,8 @@ int mca_btl_openib_put( mca_btl_base_module_t* btl,
|
||||
}
|
||||
/* post descriptor */
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if((ep->endpoint_proc->proc_ompi->proc_arch & OMPI_ARCH_ISBIGENDIAN)
|
||||
!= (ompi_proc_local()->proc_arch & OMPI_ARCH_ISBIGENDIAN)) {
|
||||
if((ep->endpoint_proc->proc_ompi->proc_arch & OPAL_ARCH_ISBIGENDIAN)
|
||||
!= (ompi_proc_local()->proc_arch & OPAL_ARCH_ISBIGENDIAN)) {
|
||||
rem_addr = opal_swap_bytes8(rem_addr);
|
||||
rkey = opal_swap_bytes4(rkey);
|
||||
}
|
||||
@ -1193,8 +1194,8 @@ int mca_btl_openib_get(mca_btl_base_module_t* btl,
|
||||
}
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if((ep->endpoint_proc->proc_ompi->proc_arch & OMPI_ARCH_ISBIGENDIAN)
|
||||
!= (ompi_proc_local()->proc_arch & OMPI_ARCH_ISBIGENDIAN)) {
|
||||
if((ep->endpoint_proc->proc_ompi->proc_arch & OPAL_ARCH_ISBIGENDIAN)
|
||||
!= (ompi_proc_local()->proc_arch & OPAL_ARCH_ISBIGENDIAN)) {
|
||||
rem_addr = opal_swap_bytes8(rem_addr);
|
||||
rkey = opal_swap_bytes4(rkey);
|
||||
}
|
||||
|
@ -21,8 +21,9 @@
|
||||
#include "ompi_config.h"
|
||||
|
||||
#include "opal/class/opal_hash_table.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/runtime/ompi_module_exchange.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
#include "btl_openib.h"
|
||||
#include "btl_openib_proc.h"
|
||||
@ -212,14 +213,14 @@ int mca_btl_openib_proc_insert(mca_btl_openib_proc_t* module_proc,
|
||||
Network Byte Order) and expect all information received to
|
||||
be in NBO. Since big endian machines always send and receive
|
||||
in NBO, we don't care so much about that case. */
|
||||
if (module_proc->proc_ompi->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (module_proc->proc_ompi->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
module_endpoint->nbo = true;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* only allow eager rdma if the peers agree on the size of a long */
|
||||
if((module_proc->proc_ompi->proc_arch & OMPI_ARCH_LONGISxx) !=
|
||||
(ompi_proc_local()->proc_arch & OMPI_ARCH_LONGISxx)) {
|
||||
if((module_proc->proc_ompi->proc_arch & OPAL_ARCH_LONGISxx) !=
|
||||
(ompi_proc_local()->proc_arch & OPAL_ARCH_LONGISxx)) {
|
||||
module_endpoint->use_eager_rdma = false;
|
||||
}
|
||||
|
||||
|
@ -26,9 +26,10 @@
|
||||
#endif
|
||||
|
||||
#include "opal/class/opal_hash_table.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/mca/btl/base/btl_base_error.h"
|
||||
#include "ompi/runtime/ompi_module_exchange.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
#include "btl_sctp.h"
|
||||
#include "btl_sctp_proc.h"
|
||||
@ -181,7 +182,7 @@ int mca_btl_sctp_proc_insert(
|
||||
Network Byte Order) and expect all information received to
|
||||
be in NBO. Since big endian machines always send and receive
|
||||
in NBO, we don't care so much about that case. */
|
||||
if (btl_proc->proc_ompi->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (btl_proc->proc_ompi->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
btl_endpoint->endpoint_nbo = true;
|
||||
}
|
||||
#endif
|
||||
|
@ -28,7 +28,7 @@
|
||||
#include "opal/class/opal_hash_table.h"
|
||||
#include "ompi/mca/btl/base/btl_base_error.h"
|
||||
#include "ompi/runtime/ompi_module_exchange.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "opal/util/if.h"
|
||||
#include "opal/util/net.h"
|
||||
#include "orte/mca/oob/tcp/oob_tcp_addr.h"
|
||||
@ -255,7 +255,7 @@ int mca_btl_tcp_proc_insert( mca_btl_tcp_proc_t* btl_proc,
|
||||
Network Byte Order) and expect all information received to
|
||||
be in NBO. Since big endian machines always send and receive
|
||||
in NBO, we don't care so much about that case. */
|
||||
if (btl_proc->proc_ompi->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (btl_proc->proc_ompi->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
btl_endpoint->endpoint_nbo = true;
|
||||
}
|
||||
#endif
|
||||
|
@ -167,6 +167,7 @@
|
||||
#include "opal/util/show_help.h"
|
||||
#include "opal/util/argv.h"
|
||||
#include "opal/util/opal_environ.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "opal/mca/mca.h"
|
||||
#include "opal/mca/base/base.h"
|
||||
#include "opal/mca/base/mca_base_param.h"
|
||||
@ -174,7 +175,6 @@
|
||||
#include "orte/runtime/orte_globals.h"
|
||||
#include "orte/util/name_fns.h"
|
||||
#include "ompi/request/request.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/mca/dpm/dpm.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/mca/pml/base/base.h"
|
||||
|
@ -28,13 +28,14 @@
|
||||
#include "osc_pt2pt_buffer.h"
|
||||
|
||||
#include "opal/threads/mutex.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/info/info.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/mca/osc/osc.h"
|
||||
#include "ompi/mca/osc/base/base.h"
|
||||
#include "ompi/mca/osc/base/osc_base_obj_convert.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
static int component_open(void);
|
||||
static void component_fragment_cb(ompi_osc_pt2pt_mpireq_t *mpireq);
|
||||
|
@ -23,10 +23,10 @@
|
||||
#include "osc_pt2pt_buffer.h"
|
||||
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "opal/sys/atomic.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/mca/osc/base/base.h"
|
||||
#include "ompi/mca/osc/base/osc_base_obj_convert.h"
|
||||
#include "ompi/memchecker.h"
|
||||
@ -270,7 +270,7 @@ ompi_osc_pt2pt_sendreq_send(ompi_osc_pt2pt_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (sendreq->req_target_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (sendreq->req_target_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
OMPI_OSC_PT2PT_SEND_HDR_HTON(*header);
|
||||
}
|
||||
@ -472,7 +472,7 @@ ompi_osc_pt2pt_replyreq_send(ompi_osc_pt2pt_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (replyreq->rep_origin_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (replyreq->rep_origin_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
OMPI_OSC_PT2PT_REPLY_HDR_HTON(*header);
|
||||
}
|
||||
@ -1078,7 +1078,7 @@ ompi_osc_pt2pt_control_send(ompi_osc_pt2pt_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_PT2PT_HDR_FLAG_NBO;
|
||||
OMPI_OSC_PT2PT_CONTROL_HDR_HTON(*header);
|
||||
}
|
||||
|
@ -29,6 +29,8 @@
|
||||
|
||||
#include "opal/threads/condition.h"
|
||||
#include "opal/threads/mutex.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "ompi/info/info.h"
|
||||
#include "ompi/communicator/communicator.h"
|
||||
#include "ompi/mca/osc/osc.h"
|
||||
@ -38,7 +40,6 @@
|
||||
#include "ompi/mca/bml/bml.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/mca/bml/base/base.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
|
||||
static int component_open(void);
|
||||
static void component_fragment_cb(struct mca_btl_base_module_t *btl,
|
||||
@ -1075,7 +1076,7 @@ rdma_send_info_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (peer_send_info->proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (peer_send_info->proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_RDMA_INFO_HDR_HTON(*header);
|
||||
}
|
||||
|
@ -25,6 +25,7 @@
|
||||
#include "osc_rdma_obj_convert.h"
|
||||
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "opal/sys/atomic.h"
|
||||
#include "ompi/mca/bml/bml.h"
|
||||
#include "ompi/mca/bml/base/base.h"
|
||||
@ -32,7 +33,6 @@
|
||||
#include "ompi/mca/osc/base/base.h"
|
||||
#include "ompi/mca/osc/base/osc_base_obj_convert.h"
|
||||
#include "ompi/datatype/datatype.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/memchecker.h"
|
||||
|
||||
static inline int32_t
|
||||
@ -551,7 +551,7 @@ ompi_osc_rdma_sendreq_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (sendreq->req_target_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (sendreq->req_target_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_SEND_HDR_HTON(*header);
|
||||
}
|
||||
@ -570,7 +570,7 @@ ompi_osc_rdma_sendreq_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (sendreq->req_target_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (sendreq->req_target_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_SEND_HDR_HTON(*header);
|
||||
}
|
||||
@ -754,7 +754,7 @@ ompi_osc_rdma_replyreq_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (replyreq->rep_origin_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (replyreq->rep_origin_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_REPLY_HDR_HTON(*header);
|
||||
}
|
||||
@ -1324,7 +1324,7 @@ ompi_osc_rdma_control_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_CONTROL_HDR_HTON(*header);
|
||||
}
|
||||
@ -1386,7 +1386,7 @@ ompi_osc_rdma_rdma_ack_send(ompi_osc_rdma_module_t *module,
|
||||
#ifdef WORDS_BIGENDIAN
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
#elif OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if (proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) {
|
||||
if (proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) {
|
||||
header->hdr_base.hdr_flags |= OMPI_OSC_RDMA_HDR_FLAG_NBO;
|
||||
OMPI_OSC_RDMA_CONTROL_HDR_HTON(*header);
|
||||
}
|
||||
|
@ -31,7 +31,7 @@
|
||||
|
||||
#include "opal/types.h"
|
||||
#include "ompi/proc/proc.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#define MCA_PML_OB1_HDR_TYPE_MATCH (MCA_BTL_TAG_PML + 1)
|
||||
#define MCA_PML_OB1_HDR_TYPE_RNDV (MCA_BTL_TAG_PML + 2)
|
||||
@ -326,7 +326,7 @@ ob1_hdr_hton_intr(mca_pml_ob1_hdr_t *hdr, const uint8_t hdr_type,
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
#else
|
||||
|
||||
if(!(proc->proc_arch & OMPI_ARCH_ISBIGENDIAN))
|
||||
if(!(proc->proc_arch & OPAL_ARCH_ISBIGENDIAN))
|
||||
return;
|
||||
|
||||
hdr->hdr_common.hdr_flags |= MCA_PML_OB1_HDR_FLAGS_NBO;
|
||||
|
@ -29,7 +29,7 @@
|
||||
#include "pml_ob1_rdmafrag.h"
|
||||
#include "ompi/mca/bml/base/base.h"
|
||||
#include "orte/mca/errmgr/errmgr.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "opal/util/arch.h"
|
||||
#include "ompi/memchecker.h"
|
||||
|
||||
void mca_pml_ob1_recv_request_process_pending(void)
|
||||
@ -426,8 +426,8 @@ static void mca_pml_ob1_recv_request_rget(
|
||||
for(i = 0; i < hdr->hdr_seg_cnt; i++) {
|
||||
frag->rdma_segs[i] = hdr->hdr_segs[i];
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if ((recvreq->req_recv.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) !=
|
||||
(ompi_proc_local()->proc_arch & OMPI_ARCH_ISBIGENDIAN)) {
|
||||
if ((recvreq->req_recv.req_base.req_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) !=
|
||||
(ompi_proc_local()->proc_arch & OPAL_ARCH_ISBIGENDIAN)) {
|
||||
size += opal_swap_bytes4(hdr->hdr_segs[i].seg_len);
|
||||
} else
|
||||
#endif
|
||||
|
@ -1142,8 +1142,8 @@ void mca_pml_ob1_send_request_put( mca_pml_ob1_send_request_t* sendreq,
|
||||
frag->rdma_segs[i].seg_key.key64 = hdr->hdr_segs[i].seg_key.key64;
|
||||
|
||||
#if OMPI_ENABLE_HETEROGENEOUS_SUPPORT
|
||||
if ((sendreq->req_send.req_base.req_proc->proc_arch & OMPI_ARCH_ISBIGENDIAN) !=
|
||||
(ompi_proc_local()->proc_arch & OMPI_ARCH_ISBIGENDIAN)) {
|
||||
if ((sendreq->req_send.req_base.req_proc->proc_arch & OPAL_ARCH_ISBIGENDIAN) !=
|
||||
(ompi_proc_local()->proc_arch & OPAL_ARCH_ISBIGENDIAN)) {
|
||||
size += opal_swap_bytes4(frag->rdma_segs[i].seg_len);
|
||||
} else
|
||||
#endif
|
||||
|
@ -24,6 +24,7 @@
|
||||
#include "opal/threads/mutex.h"
|
||||
#include "opal/util/output.h"
|
||||
#include "opal/util/show_help.h"
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
#include "opal/dss/dss.h"
|
||||
#include "orte/mca/errmgr/errmgr.h"
|
||||
@ -33,7 +34,6 @@
|
||||
|
||||
#include "ompi/proc/proc.h"
|
||||
#include "ompi/mca/pml/pml.h"
|
||||
#include "ompi/datatype/dt_arch.h"
|
||||
#include "ompi/datatype/convertor.h"
|
||||
#include "ompi/runtime/params.h"
|
||||
#include "ompi/runtime/mpiruntime.h"
|
||||
@ -119,7 +119,7 @@ int ompi_proc_init(void)
|
||||
}
|
||||
|
||||
/* Fill in our local information */
|
||||
rc = ompi_arch_compute_local_id(&ui32);
|
||||
rc = opal_arch_compute_local_id(&ui32);
|
||||
if (OMPI_SUCCESS != rc) return rc;
|
||||
|
||||
ompi_proc_local_proc->proc_nodeid = orte_process_info.nodeid;
|
||||
@ -598,7 +598,7 @@ int ompi_proc_refresh(void) {
|
||||
}
|
||||
|
||||
/* Fill in our local information */
|
||||
rc = ompi_arch_compute_local_id(&ui32);
|
||||
rc = opal_arch_compute_local_id(&ui32);
|
||||
if (OMPI_SUCCESS != rc) {
|
||||
return rc;
|
||||
}
|
||||
|
@ -27,6 +27,7 @@ noinst_LTLIBRARIES = libopalutil.la
|
||||
# Source code files
|
||||
|
||||
headers = \
|
||||
arch.h \
|
||||
argv.h \
|
||||
basename.h \
|
||||
bit_ops.h \
|
||||
@ -61,6 +62,7 @@ headers = \
|
||||
|
||||
libopalutil_la_SOURCES = \
|
||||
$(headers) \
|
||||
arch.c \
|
||||
argv.c \
|
||||
basename.c \
|
||||
cmd_line.c \
|
||||
|
@ -16,76 +16,87 @@
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
#include "ompi_config.h"
|
||||
#include "dt_arch.h"
|
||||
#include "opal_config.h"
|
||||
|
||||
int32_t ompi_arch_compute_local_id( uint32_t *me )
|
||||
#include "opal/util/arch.h"
|
||||
|
||||
int32_t opal_arch_compute_local_id( uint32_t *me )
|
||||
{
|
||||
*me = (OMPI_ARCH_HEADERMASK | OMPI_ARCH_UNUSEDMASK);
|
||||
*me = (OPAL_ARCH_HEADERMASK | OPAL_ARCH_UNUSEDMASK);
|
||||
|
||||
/* Handle the size of long (can hold a pointer) */
|
||||
if( 8 == sizeof(long) )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LONGIS64 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LONGIS64 );
|
||||
|
||||
/* sizeof bool */
|
||||
if (1 == sizeof(bool) ) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_BOOLIS8);
|
||||
opal_arch_setmask( me, OPAL_ARCH_BOOLIS8);
|
||||
} else if (2 == sizeof(bool)) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_BOOLIS16);
|
||||
opal_arch_setmask( me, OPAL_ARCH_BOOLIS16);
|
||||
} else if (4 == sizeof(bool)) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_BOOLIS32);
|
||||
opal_arch_setmask( me, OPAL_ARCH_BOOLIS32);
|
||||
}
|
||||
|
||||
/* sizeof fortran logical */
|
||||
/* sizeof fortran logical
|
||||
*
|
||||
* RHC: technically, use of the ompi_ prefix is
|
||||
* an abstraction violation. However, this is actually
|
||||
* an error in our configure scripts that transcends
|
||||
* all the data types and eventually should be fixed.
|
||||
* The guilty part is f77_check.m4. Fixing it right
|
||||
* now is beyond a reasonable scope - this comment is
|
||||
* placed here to explain the abstraction break and
|
||||
* indicate that it will eventually be fixed
|
||||
*/
|
||||
if (1 == sizeof(ompi_fortran_logical_t) ) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LOGICALIS8);
|
||||
opal_arch_setmask( me, OPAL_ARCH_LOGICALIS8);
|
||||
} else if (2 == sizeof(ompi_fortran_logical_t)) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LOGICALIS16);
|
||||
opal_arch_setmask( me, OPAL_ARCH_LOGICALIS16);
|
||||
} else if (4 == sizeof(ompi_fortran_logical_t)) {
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LOGICALIS32);
|
||||
opal_arch_setmask( me, OPAL_ARCH_LOGICALIS32);
|
||||
}
|
||||
|
||||
/* Initialize the information regarding the long double */
|
||||
if( 12 == sizeof(long double) )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LONGDOUBLEIS96 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LONGDOUBLEIS96 );
|
||||
else if( 16 == sizeof(long double) )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LONGDOUBLEIS128 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LONGDOUBLEIS128 );
|
||||
|
||||
/* Big endian or little endian ? That's the question */
|
||||
if( ompi_arch_isbigendian() )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_ISBIGENDIAN );
|
||||
if( opal_arch_isbigendian() )
|
||||
opal_arch_setmask( me, OPAL_ARCH_ISBIGENDIAN );
|
||||
|
||||
/* What's the maximum exponent ? */
|
||||
if ( LDBL_MAX_EXP == 16384 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDEXPSIZEIS15 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDEXPSIZEIS15 );
|
||||
|
||||
/* How about the length in bits of the mantissa */
|
||||
if ( LDBL_MANT_DIG == 64 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDMANTDIGIS64 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDMANTDIGIS64 );
|
||||
else if ( LDBL_MANT_DIG == 105 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDMANTDIGIS105 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDMANTDIGIS105 );
|
||||
else if ( LDBL_MANT_DIG == 106 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDMANTDIGIS106 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDMANTDIGIS106 );
|
||||
else if ( LDBL_MANT_DIG == 107 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDMANTDIGIS107 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDMANTDIGIS107 );
|
||||
else if ( LDBL_MANT_DIG == 113 )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDMANTDIGIS113 );
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDMANTDIGIS113 );
|
||||
|
||||
/* Intel data representation or Sparc ? */
|
||||
if( ompi_arch_ldisintel() )
|
||||
ompi_arch_setmask( me, OMPI_ARCH_LDISINTEL );
|
||||
if( opal_arch_ldisintel() )
|
||||
opal_arch_setmask( me, OPAL_ARCH_LDISINTEL );
|
||||
|
||||
return OMPI_SUCCESS;
|
||||
return OPAL_SUCCESS;
|
||||
}
|
||||
|
||||
int32_t ompi_arch_checkmask ( uint32_t *var, uint32_t mask )
|
||||
int32_t opal_arch_checkmask ( uint32_t *var, uint32_t mask )
|
||||
{
|
||||
unsigned int tmpvar = *var;
|
||||
|
||||
/* Check whether the headers are set correctly,
|
||||
or whether this is an erroneous integer */
|
||||
if( !((*var) & OMPI_ARCH_HEADERMASK) ) {
|
||||
if( (*var) & OMPI_ARCH_HEADERMASK2 ) {
|
||||
if( !((*var) & OPAL_ARCH_HEADERMASK) ) {
|
||||
if( (*var) & OPAL_ARCH_HEADERMASK2 ) {
|
||||
char* pcDest, *pcSrc;
|
||||
/* Both ends of this integer have the wrong settings,
|
||||
maybe its just the wrong endian-representation. Try
|
||||
@ -100,7 +111,7 @@ int32_t ompi_arch_checkmask ( uint32_t *var, uint32_t mask )
|
||||
*pcDest++ = *pcSrc--;
|
||||
*pcDest++ = *pcSrc--;
|
||||
|
||||
if( (tmpvar & OMPI_ARCH_HEADERMASK) && (!(tmpvar & OMPI_ARCH_HEADERMASK2)) ) {
|
||||
if( (tmpvar & OPAL_ARCH_HEADERMASK) && (!(tmpvar & OPAL_ARCH_HEADERMASK2)) ) {
|
||||
*var = tmpvar;
|
||||
} else
|
||||
return -1;
|
@ -16,12 +16,13 @@
|
||||
*
|
||||
* $HEADER$
|
||||
*/
|
||||
#ifndef DATATYPE_ARCH_H_HAS_BEEN_INCLUDED
|
||||
#define DATATYPE_ARCH_H_HAS_BEEN_INCLUDED
|
||||
#ifndef OPAL_ARCH_H_HAS_BEEN_INCLUDED
|
||||
#define OPAL_ARCH_H_HAS_BEEN_INCLUDED
|
||||
|
||||
#include <float.h>
|
||||
#include <assert.h>
|
||||
#include "ompi/constants.h"
|
||||
|
||||
#include "opal/constants.h"
|
||||
|
||||
/***************************************************
|
||||
** This file tries to classify the most relevant
|
||||
@ -190,46 +191,46 @@
|
||||
|
||||
/* These masks implement the specification above above */
|
||||
|
||||
#define OMPI_ARCH_HEADERMASK 0x03000000 /* set the fields for the header */
|
||||
#define OMPI_ARCH_HEADERMASK2 0x00000003 /* other end, needed for checks */
|
||||
#define OMPI_ARCH_UNUSEDMASK 0xfc000000 /* mark the unused fields */
|
||||
#define OPAL_ARCH_HEADERMASK 0x03000000 /* set the fields for the header */
|
||||
#define OPAL_ARCH_HEADERMASK2 0x00000003 /* other end, needed for checks */
|
||||
#define OPAL_ARCH_UNUSEDMASK 0xfc000000 /* mark the unused fields */
|
||||
|
||||
/* BYTE 1 */
|
||||
#define OMPI_ARCH_ISBIGENDIAN 0x00000008
|
||||
#define OPAL_ARCH_ISBIGENDIAN 0x00000008
|
||||
|
||||
/* BYTE 2 */
|
||||
#define OMPI_ARCH_LONGISxx 0x0000c000 /* mask for sizeof long */
|
||||
#define OMPI_ARCH_LONGIS64 0x00001000
|
||||
#define OMPI_ARCH_LONGLONGISxx 0x00003000 /* mask for sizeof long long */
|
||||
#define OPAL_ARCH_LONGISxx 0x0000c000 /* mask for sizeof long */
|
||||
#define OPAL_ARCH_LONGIS64 0x00001000
|
||||
#define OPAL_ARCH_LONGLONGISxx 0x00003000 /* mask for sizeof long long */
|
||||
|
||||
#define OMPI_ARCH_BOOLISxx 0x00000c00 /* mask for sizeof bool */
|
||||
#define OMPI_ARCH_BOOLIS8 0x00000000 /* bool is 8 bits */
|
||||
#define OMPI_ARCH_BOOLIS16 0x00000400 /* bool is 16 bits */
|
||||
#define OMPI_ARCH_BOOLIS32 0x00000800 /* bool is 32 bits */
|
||||
#define OPAL_ARCH_BOOLISxx 0x00000c00 /* mask for sizeof bool */
|
||||
#define OPAL_ARCH_BOOLIS8 0x00000000 /* bool is 8 bits */
|
||||
#define OPAL_ARCH_BOOLIS16 0x00000400 /* bool is 16 bits */
|
||||
#define OPAL_ARCH_BOOLIS32 0x00000800 /* bool is 32 bits */
|
||||
|
||||
#define OMPI_ARCH_LOGICALISxx 0x00000300 /* mask for sizeof Fortran logical */
|
||||
#define OMPI_ARCH_LOGICALIS8 0x00000000 /* logical is 8 bits */
|
||||
#define OMPI_ARCH_LOGICALIS16 0x00000100 /* logical is 16 bits */
|
||||
#define OMPI_ARCH_LOGICALIS32 0x00000200 /* logical is 32 bits */
|
||||
#define OPAL_ARCH_LOGICALISxx 0x00000300 /* mask for sizeof Fortran logical */
|
||||
#define OPAL_ARCH_LOGICALIS8 0x00000000 /* logical is 8 bits */
|
||||
#define OPAL_ARCH_LOGICALIS16 0x00000100 /* logical is 16 bits */
|
||||
#define OPAL_ARCH_LOGICALIS32 0x00000200 /* logical is 32 bits */
|
||||
|
||||
/* BYTE 3 */
|
||||
#define OMPI_ARCH_LONGDOUBLEIS96 0x00020000
|
||||
#define OMPI_ARCH_LONGDOUBLEIS128 0x00010000
|
||||
#define OPAL_ARCH_LONGDOUBLEIS96 0x00020000
|
||||
#define OPAL_ARCH_LONGDOUBLEIS128 0x00010000
|
||||
|
||||
#define OMPI_ARCH_LDEXPSIZEIS15 0x00080000
|
||||
#define OPAL_ARCH_LDEXPSIZEIS15 0x00080000
|
||||
|
||||
#define OMPI_ARCH_LDMANTDIGIS64 0x00400000
|
||||
#define OMPI_ARCH_LDMANTDIGIS105 0x00200000
|
||||
#define OMPI_ARCH_LDMANTDIGIS106 0x00600000
|
||||
#define OMPI_ARCH_LDMANTDIGIS107 0x00100000
|
||||
#define OMPI_ARCH_LDMANTDIGIS113 0x00500000
|
||||
#define OPAL_ARCH_LDMANTDIGIS64 0x00400000
|
||||
#define OPAL_ARCH_LDMANTDIGIS105 0x00200000
|
||||
#define OPAL_ARCH_LDMANTDIGIS106 0x00600000
|
||||
#define OPAL_ARCH_LDMANTDIGIS107 0x00100000
|
||||
#define OPAL_ARCH_LDMANTDIGIS113 0x00500000
|
||||
|
||||
#define OMPI_ARCH_LDISINTEL 0x00800000
|
||||
#define OPAL_ARCH_LDISINTEL 0x00800000
|
||||
|
||||
int32_t ompi_arch_compute_local_id( uint32_t *var);
|
||||
int32_t opal_arch_compute_local_id( uint32_t *var);
|
||||
|
||||
int32_t ompi_arch_checkmask ( uint32_t *var, uint32_t mask );
|
||||
static inline int32_t ompi_arch_isbigendian ( void )
|
||||
int32_t opal_arch_checkmask ( uint32_t *var, uint32_t mask );
|
||||
static inline int32_t opal_arch_isbigendian ( void )
|
||||
{
|
||||
const uint32_t value = 0x12345678;
|
||||
const char *ptr = (char*)&value;
|
||||
@ -253,7 +254,7 @@ static inline int32_t ompi_arch_isbigendian ( void )
|
||||
* of the mantissa. If it's 1 then we have an intel representaion, if not
|
||||
* we have a sparc one. QED
|
||||
*/
|
||||
static inline int32_t ompi_arch_ldisintel( void )
|
||||
static inline int32_t opal_arch_ldisintel( void )
|
||||
{
|
||||
long double ld = 2.0;
|
||||
int i, j;
|
||||
@ -261,7 +262,7 @@ static inline int32_t ompi_arch_ldisintel( void )
|
||||
|
||||
j = LDBL_MANT_DIG / 32;
|
||||
i = (LDBL_MANT_DIG % 32) - 1;
|
||||
if( ompi_arch_isbigendian() ) { /* big endian */
|
||||
if( opal_arch_isbigendian() ) { /* big endian */
|
||||
j = (sizeof(long double) / sizeof(unsigned int)) - j;
|
||||
if( i < 0 ) {
|
||||
i = 31;
|
||||
@ -276,10 +277,10 @@ static inline int32_t ompi_arch_ldisintel( void )
|
||||
return (pui[j] & (1 << i) ? 1 : 0);
|
||||
}
|
||||
|
||||
static inline void ompi_arch_setmask ( uint32_t *var, uint32_t mask)
|
||||
static inline void opal_arch_setmask ( uint32_t *var, uint32_t mask)
|
||||
{
|
||||
*var |= mask;
|
||||
}
|
||||
|
||||
#endif /* DATATYPE_ARCH_H_HAS_BEEN_INCLUDED */
|
||||
#endif /* OPAL_ARCH_H_HAS_BEEN_INCLUDED */
|
||||
|
Загрузка…
x
Ссылка в новой задаче
Block a user