diff --git a/oshmem/mca/memheap/base/base.h b/oshmem/mca/memheap/base/base.h index d7f11f724a..6e4c219823 100644 --- a/oshmem/mca/memheap/base/base.h +++ b/oshmem/mca/memheap/base/base.h @@ -38,7 +38,7 @@ OSHMEM_DECLSPEC extern struct mca_memheap_base_module_t* mca_memheap_base_module #define MEMHEAP_BASE_PRIVATE_SIZE (1ULL << MEMHEAP_BASE_PAGE_ORDER) /* should be at least the same as a huge page size */ #define MEMHEAP_BASE_MIN_SIZE (1ULL << MEMHEAP_BASE_PAGE_ORDER) /* must fit into at least one huge page */ -extern unsigned long long mca_memheap_base_start_address; +extern void* mca_memheap_base_start_address; extern char* mca_memheap_base_include; extern char* mca_memheap_base_exclude; extern int mca_memheap_base_already_opened; @@ -84,8 +84,8 @@ typedef struct map_segment_t { int is_active; /* enable/disable flag */ int shmid; - uint64_t start; /* base address of the segment */ - uint64_t end; /* final address of the segment */ + void* start; /* base address of the segment */ + void* end; /* final address of the segment */ size_t size; /* length of the segment */ segment_type_t type; /* type of the segment */ @@ -111,15 +111,15 @@ void memheap_oob_destruct(void); OSHMEM_DECLSPEC uint64_t mca_memheap_base_find_offset(int pe, int tr_id, - unsigned long va, - uint64_t rva); -OSHMEM_DECLSPEC int mca_memheap_base_is_symmetric_addr(unsigned long va); -OSHMEM_DECLSPEC mca_spml_mkey_t *mca_memheap_base_get_mkey(unsigned long va, + void* va, + void* rva); +OSHMEM_DECLSPEC int mca_memheap_base_is_symmetric_addr(const void* va); +OSHMEM_DECLSPEC mca_spml_mkey_t *mca_memheap_base_get_mkey(void* va, int tr_id); OSHMEM_DECLSPEC mca_spml_mkey_t * mca_memheap_base_get_cached_mkey(int pe, - unsigned long va, + void* va, int btl_id, - uint64_t *rva); + void** rva); OSHMEM_DECLSPEC void mca_memheap_modex_recv_all(void); /* This function is for internal usage only @@ -133,7 +133,7 @@ typedef enum { ADDR_INVALID = 0, ADDR_USER, ADDR_PRIVATE, ADDR_STATIC, } addr_type_t; -OSHMEM_DECLSPEC int mca_memheap_base_detect_addr_type(unsigned long va); +OSHMEM_DECLSPEC int mca_memheap_base_detect_addr_type(void* va); static inline unsigned memheap_log2(unsigned long long val) { diff --git a/oshmem/mca/memheap/base/memheap_base_alloc.c b/oshmem/mca/memheap/base/memheap_base_alloc.c index 6a2bc6f5e8..abe8997c65 100644 --- a/oshmem/mca/memheap/base/memheap_base_alloc.c +++ b/oshmem/mca/memheap/base/memheap_base_alloc.c @@ -243,7 +243,7 @@ static int __shm_attach(map_segment_t *s, size_t size, int use_hp, int do_rmid) s->type = MAP_SEGMENT_ALLOC_SHM; s->shmid = shmid; - s->start = (uintptr_t) addr; + s->start = addr; s->size = size; s->end = s->start + s->size; s->context = &shm_context; @@ -295,7 +295,7 @@ MAP_ANONYMOUS s->type = MAP_SEGMENT_ALLOC_MMAP; s->shmid = MEMHEAP_SHM_INVALID; - s->start = (uintptr_t) addr; + s->start = addr; s->size = size; s->end = s->start + s->size; s->context = NULL; @@ -472,7 +472,7 @@ static int __ibv_attach(map_segment_t *s, size_t size) s->type = MAP_SEGMENT_ALLOC_IBV; s->shmid = device->ib_mr_shared->handle; - s->start = (intptr_t)ib_mr->addr; + s->start = ib_mr->addr; s->size = size; s->end = s->start + s->size; s->context = &memheap_device; diff --git a/oshmem/mca/memheap/base/memheap_base_frame.c b/oshmem/mca/memheap/base/memheap_base_frame.c index 3bdc8ef85d..1c36e5ed17 100644 --- a/oshmem/mca/memheap/base/memheap_base_frame.c +++ b/oshmem/mca/memheap/base/memheap_base_frame.c @@ -33,7 +33,7 @@ int mca_memheap_base_alloc_type = 5; int mca_memheap_base_alloc_type = 1; #endif /* MPAGE_ENABLE */ -unsigned long long int mca_memheap_base_start_address = 0xFF000000; +void* mca_memheap_base_start_address = (void*)0xFF000000; int mca_memheap_base_output = -1; int mca_memheap_base_key_exchange = 1; int mca_memheap_base_mr_interleave_factor = 2; diff --git a/oshmem/mca/memheap/base/memheap_base_mkey.c b/oshmem/mca/memheap/base/memheap_base_mkey.c index cf2fe17052..050aba90ba 100644 --- a/oshmem/mca/memheap/base/memheap_base_mkey.c +++ b/oshmem/mca/memheap/base/memheap_base_mkey.c @@ -66,33 +66,33 @@ static int memheap_oob_get_mkeys(int pe, uint32_t va_seg_num, mca_spml_mkey_t *mkey); -static inline unsigned long __seg2base_va(int seg) +static inline void* __seg2base_va(int seg) { return memheap_map->mem_segs[seg].start; } static int __seg_cmp(const void *k, const void *v) { - unsigned long va = (unsigned long) k; + uintptr_t va = (uintptr_t) k; map_segment_t *s = (map_segment_t *) v; - if (va < s->start) + if (va < (uintptr_t)s->start) return -1; - if (va >= s->end) + if (va >= (uintptr_t)s->end) return 1; return 0; } -static inline map_segment_t *__find_va(unsigned long va) +static inline map_segment_t *__find_va(const void* va) { map_segment_t *s; - if (OPAL_LIKELY(va >= (unsigned long)memheap_map->mem_segs[HEAP_SEG_INDEX].start && - va < (unsigned long)memheap_map->mem_segs[HEAP_SEG_INDEX].end)) { + if (OPAL_LIKELY((uintptr_t)va >= (uintptr_t)memheap_map->mem_segs[HEAP_SEG_INDEX].start && + (uintptr_t)va < (uintptr_t)memheap_map->mem_segs[HEAP_SEG_INDEX].end)) { s = &memheap_map->mem_segs[HEAP_SEG_INDEX]; } else { - s = bsearch((const void *) va, + s = bsearch(va, &memheap_map->mem_segs[SYMB_SEG_INDEX], memheap_map->n_segments - 1, sizeof(*s), @@ -155,8 +155,8 @@ static int do_mkey_req(opal_buffer_t *msg, int pe, int seg) } MEMHEAP_VERBOSE(5, - "seg#%d tr_id: %d key %llx base_va %llx", - seg, tr_id, (unsigned long long)mkey->key, (unsigned long long)mkey->va_base); + "seg#%d tr_id: %d key %llx base_va %p", + seg, tr_id, (unsigned long long)mkey->key, mkey->va_base); } return OSHMEM_SUCCESS; } @@ -171,15 +171,15 @@ static void memheap_attach_segment(mca_spml_mkey_t *mkey, int tr_id) if (!mkey->va_base && ((int) MEMHEAP_SHM_GET_ID(mkey->key) != MEMHEAP_SHM_INVALID)) { MEMHEAP_VERBOSE(5, - "shared memory usage tr_id: %d key %llx base_va %llx shmid 0x%X|0x%X", - tr_id, - (unsigned long long)mkey->key, - (unsigned long long)mkey->va_base, + "shared memory usage tr_id: %d key %llx base_va %p shmid 0x%X|0x%X", + tr_id, + (unsigned long long)mkey->key, + mkey->va_base, MEMHEAP_SHM_GET_TYPE(mkey->key), MEMHEAP_SHM_GET_ID(mkey->key)); if (MEMHEAP_SHM_GET_TYPE(mkey->key) == MAP_SEGMENT_ALLOC_SHM) { - mkey->va_base = (intptr_t) shmat(MEMHEAP_SHM_GET_ID(mkey->key), + mkey->va_base = shmat(MEMHEAP_SHM_GET_ID(mkey->key), 0, 0); } else if (MEMHEAP_SHM_GET_TYPE(mkey->key) == MAP_SEGMENT_ALLOC_IBV) { @@ -204,7 +204,7 @@ static void memheap_attach_segment(mca_spml_mkey_t *mkey, int tr_id) device->ib_pd, addr, access_flag); if (NULL == ib_mr) { - mkey->va_base = -1; + mkey->va_base = (void*)-1; MEMHEAP_ERROR("error to ibv_reg_shared_mr() errno says %d: %s", errno, strerror(errno)); } @@ -215,7 +215,7 @@ static void memheap_attach_segment(mca_spml_mkey_t *mkey, int tr_id) } opal_value_array_append_item(&device->ib_mr_array, &ib_mr); - mkey->va_base = (intptr_t)ib_mr->addr; + mkey->va_base = ib_mr->addr; } #endif /* MPAGE_ENABLE */ } else { @@ -267,8 +267,8 @@ static void do_mkey_resp(opal_buffer_t *msg) memheap_attach_segment(&memheap_oob.mkeys[tr_id], tr_id); MEMHEAP_VERBOSE(5, - "tr_id: %d key %llx base_va %llx", - tr_id, (unsigned long long)memheap_oob.mkeys[tr_id].key, (unsigned long long)memheap_oob.mkeys[tr_id].va_base); + "tr_id: %d key %llx base_va %p", + tr_id, (unsigned long long)memheap_oob.mkeys[tr_id].key, memheap_oob.mkeys[tr_id].va_base); } } @@ -401,11 +401,11 @@ static int memheap_oob_get_mkeys(int pe, uint32_t seg, mca_spml_mkey_t *mkeys) for (i = 0; i < memheap_map->num_transports; i++) { mkeys[i].va_base = __seg2base_va(seg); MEMHEAP_VERBOSE(5, - "MKEY CALCULATED BY LOCAL SPML: pe: %d tr_id: %d key %llx base_va %llx", + "MKEY CALCULATED BY LOCAL SPML: pe: %d tr_id: %d key %llx base_va %p", pe, - i, - (unsigned long long)mkeys[i].key, - (unsigned long long)mkeys[i].va_base); + i, + (unsigned long long)mkeys[i].key, + mkeys[i].va_base); } return OSHMEM_SUCCESS; } @@ -461,7 +461,7 @@ void mca_memheap_modex_recv_all(void) int nprocs, my_pe; oshmem_proc_t *proc; mca_spml_mkey_t *mkey; - uint64_t dummy_rva; + void* dummy_rva; if (!mca_memheap_base_key_exchange) return; @@ -524,24 +524,24 @@ void mca_memheap_modex_recv_all(void) } } -static inline uint64_t va2rva(unsigned long va, - uint64_t local_base, - uint64_t remote_base) +static inline void* va2rva(void* va, + void* local_base, + void* remote_base) { - return remote_base > local_base ? va + (remote_base - local_base) : - va - (local_base - remote_base); + return (void*) (remote_base > local_base ? (uintptr_t)va + (remote_base - local_base) : + (uintptr_t)va - (local_base - remote_base)); } mca_spml_mkey_t * mca_memheap_base_get_cached_mkey(int pe, - unsigned long va, + void* va, int btl_id, - uint64_t *rva) + void** rva) { map_segment_t *s; int rc; mca_spml_mkey_t *mkey; - MEMHEAP_VERBOSE_FASTPATH(10, "rkey: pe=%d va=%p", pe, (void *)va); + MEMHEAP_VERBOSE_FASTPATH(10, "rkey: pe=%d va=%p", pe, va); s = __find_va(va); if (NULL == s) return NULL ; @@ -551,8 +551,8 @@ mca_spml_mkey_t * mca_memheap_base_get_cached_mkey(int pe, if (pe == oshmem_my_proc_id()) { *rva = va; - MEMHEAP_VERBOSE_FASTPATH(10, "rkey: pe=%d va=%p -> (local) %lx %p", pe, (void *)va, - s->mkeys[btl_id].key, (void *)*rva); + MEMHEAP_VERBOSE_FASTPATH(10, "rkey: pe=%d va=%p -> (local) %lx %p", pe, va, + s->mkeys[btl_id].key, *rva); return &s->mkeys[btl_id]; } @@ -581,7 +581,7 @@ mca_spml_mkey_t * mca_memheap_base_get_cached_mkey(int pe, return mkey; } -mca_spml_mkey_t *mca_memheap_base_get_mkey(unsigned long va, int tr_id) +mca_spml_mkey_t *mca_memheap_base_get_mkey(void* va, int tr_id) { map_segment_t *s; @@ -592,8 +592,8 @@ mca_spml_mkey_t *mca_memheap_base_get_mkey(unsigned long va, int tr_id) uint64_t mca_memheap_base_find_offset(int pe, int tr_id, - unsigned long va, - uint64_t rva) + void* va, + void* rva) { map_segment_t *s; @@ -602,12 +602,12 @@ uint64_t mca_memheap_base_find_offset(int pe, return ((s && s->is_active) ? (rva - s->mkeys_cache[pe][tr_id].va_base) : 0); } -int mca_memheap_base_is_symmetric_addr(unsigned long va) +int mca_memheap_base_is_symmetric_addr(const void* va) { return (__find_va(va) ? 1 : 0); } -int mca_memheap_base_detect_addr_type(unsigned long va) +int mca_memheap_base_detect_addr_type(void* va) { int addr_type = ADDR_INVALID; map_segment_t *s; @@ -617,11 +617,11 @@ int mca_memheap_base_detect_addr_type(unsigned long va) if (s) { if (s->type == MAP_SEGMENT_STATIC) { addr_type = ADDR_STATIC; - } else if (va >= (unsigned long) s->start - && va < (unsigned long) (s->start + mca_memheap.memheap_size)) { + } else if ((uintptr_t)va >= (uintptr_t) s->start + && (uintptr_t)va < (uintptr_t) (s->start + mca_memheap.memheap_size)) { addr_type = ADDR_USER; } else { - assert( va >= (unsigned long)(s->start + mca_memheap.memheap_size) && va < (unsigned long)s->end); + assert( (uintptr_t)va >= (uintptr_t)(s->start + mca_memheap.memheap_size) && (uintptr_t)va < (uintptr_t)s->end); addr_type = ADDR_PRIVATE; } } diff --git a/oshmem/mca/memheap/base/memheap_base_register.c b/oshmem/mca/memheap/base/memheap_base_register.c index 67c123847a..d91fff8216 100644 --- a/oshmem/mca/memheap/base/memheap_base_register.c +++ b/oshmem/mca/memheap/base/memheap_base_register.c @@ -27,10 +27,10 @@ int mca_memheap_base_reg(mca_memheap_map_t *memheap_map) map_segment_t *s = &memheap_map->mem_segs[i]; MEMHEAP_VERBOSE(5, - "register seg#%02d: 0x%llX - 0x%llX %llu bytes type=0x%X id=0x%X", + "register seg#%02d: 0x%p - 0x%p %llu bytes type=0x%X id=0x%X", i, - (long long)s->start, - (long long)s->end, + s->start, + s->end, (long long)(s->end - s->start), s->type, s->shmid); @@ -52,10 +52,10 @@ int mca_memheap_base_dereg(mca_memheap_map_t *memheap_map) continue; MEMHEAP_VERBOSE(5, - "deregistering segment#%d: %llx - %llx %llu bytes", + "deregistering segment#%d: %p - %p %llu bytes", i, - (long long)s->start, - (long long)s->end, + s->start, + s->end, (long long)(s->end - s->start)); ret = __dereg_segment(s); } diff --git a/oshmem/mca/memheap/base/memheap_base_static.c b/oshmem/mca/memheap/base/memheap_base_static.c index a496e0dd4a..dee3004a27 100644 --- a/oshmem/mca/memheap/base/memheap_base_static.c +++ b/oshmem/mca/memheap/base/memheap_base_static.c @@ -16,8 +16,8 @@ #include struct map_segment_desc { - uint64_t start; - uint64_t end; + void* start; + void* end; char perms[8]; uint64_t offset; char dev[8]; @@ -27,8 +27,8 @@ struct map_segment_desc { typedef struct memheap_static_context { struct { - uint64_t start; - uint64_t end; + void* start; + void* end; } mem_segs[MCA_MEMHEAP_MAX_SEGMENTS]; int n_segments; } memheap_static_context_t; @@ -93,7 +93,7 @@ static int __check_perms(struct map_segment_desc *seg) static int __check_address(struct map_segment_desc *seg) { extern unsigned _end; - unsigned long data_end = (unsigned long) &_end; + void* data_end = &_end; /** * SGI shmem only supports globals&static in main program. @@ -104,10 +104,10 @@ static int __check_address(struct map_segment_desc *seg) * FIXME: make sure we do not register symmetric heap twice * if we decide to allow shared objects */ - if (seg->start > data_end) { + if ((uintptr_t)seg->start > (uintptr_t)data_end) { MEMHEAP_VERBOSE(100, - "skip segment: data _end < segment start (%llx < %llx)", - (unsigned long long)data_end, (unsigned long long)seg->start); + "skip segment: data _end < segment start (%p < %p)", + data_end, seg->start); return OSHMEM_ERROR; } return OSHMEM_SUCCESS; diff --git a/oshmem/mca/memheap/buddy/memheap_buddy.c b/oshmem/mca/memheap/buddy/memheap_buddy.c index 2a7062ff6d..35b033a910 100644 --- a/oshmem/mca/memheap/buddy/memheap_buddy.c +++ b/oshmem/mca/memheap/buddy/memheap_buddy.c @@ -90,13 +90,12 @@ static inline int test_bit(int nr, const volatile void * addr) static inline __opal_attribute_always_inline__ unsigned long __ffs(unsigned long word) { int num = 0; - - if(bits_per_long() == 64) { +#if __SIZEOF_LONG__ == 8 if ((word & 0xffffffff) == 0) { num += 32; word >>= 32; } - } +#endif if ((word & 0xffff) == 0) { num += 16; diff --git a/oshmem/mca/memheap/memheap.h b/oshmem/mca/memheap/memheap.h index f1da5b8aa1..6427aa76d5 100644 --- a/oshmem/mca/memheap/memheap.h +++ b/oshmem/mca/memheap/memheap.h @@ -58,18 +58,18 @@ typedef int (*mca_memheap_base_module_free_fn_t)(void*); */ typedef uint64_t (*mca_memheap_base_module_find_offset_fn_t)(int pe, int tr_id, - unsigned long va, - uint64_t rva); + void* va, + void* rva); /** * @return mkey suitable to access pe via given transport id. rva is set to virtual address mapping of (va) * on remote pe. */ typedef mca_spml_mkey_t * (*mca_memheap_base_module_get_cached_mkey_fn_t)(int pe, - unsigned long va, + void* va, int transport_id, - uint64_t *rva); -typedef mca_spml_mkey_t * (*mca_memheap_base_module_get_local_mkey_fn_t)(unsigned long va, + void** rva); +typedef mca_spml_mkey_t * (*mca_memheap_base_module_get_local_mkey_fn_t)(void* va, int transport_id); /* @@ -77,7 +77,7 @@ typedef mca_spml_mkey_t * (*mca_memheap_base_module_get_local_mkey_fn_t)(unsigne */ typedef int (*mca_memheap_base_module_finalize_fn_t)(void); -typedef int (*mca_memheap_base_is_memheap_addr_fn_t)(unsigned long va); +typedef int (*mca_memheap_base_is_memheap_addr_fn_t)(const void* va); /* get mkeys from all ranks */ typedef void (*mca_memheap_base_mkey_exchange_fn_t)(void); diff --git a/oshmem/mca/spml/spml.h b/oshmem/mca/spml/spml.h index 6bdeaf7732..e2e9d1dfd3 100644 --- a/oshmem/mca/spml/spml.h +++ b/oshmem/mca/spml/spml.h @@ -80,7 +80,7 @@ typedef struct mca_spml_mkey { } ib; uint64_t key; }; - uint64_t va_base; + void* va_base; void *spml_context; /* spml module can attach internal structures here */ } mca_spml_mkey_t; diff --git a/oshmem/mca/spml/yoda/spml_yoda.c b/oshmem/mca/spml/yoda/spml_yoda.c index 7eb85fe86f..04700ef567 100644 --- a/oshmem/mca/spml/yoda/spml_yoda.c +++ b/oshmem/mca/spml/yoda/spml_yoda.c @@ -98,7 +98,7 @@ static char *btl_type2str(int btl_type) static inline void calc_nfrags(mca_bml_base_btl_t* bml_btl, size_t size, - int *frag_size, + unsigned int *frag_size, int *nfrags, int use_send) { @@ -428,11 +428,11 @@ mca_spml_mkey_t *mca_spml_yoda_register(void* addr, } } - mkeys[i].va_base = (unsigned long) addr; + mkeys[i].va_base = addr; SPML_VERBOSE(5, - "rank %d btl %s rkey %x lkey %x key %llx address 0x%llX len %llu shmid 0x%X|0x%X", - oshmem_proc_local_proc->proc_name.vpid, btl_type2str(ybtl->btl_type), mkeys[i].ib.rkey, mkeys[i].ib.lkey, (unsigned long long)mkeys[i].key, (unsigned long long)mkeys[i].va_base, (unsigned long long)size, MEMHEAP_SHM_GET_TYPE(shmid), MEMHEAP_SHM_GET_ID(shmid)); + "rank %d btl %s rkey %x lkey %x key %llx address 0x%p len %llu shmid 0x%X|0x%X", + oshmem_proc_local_proc->proc_name.vpid, btl_type2str(ybtl->btl_type), mkeys[i].ib.rkey, mkeys[i].ib.lkey, (unsigned long long)mkeys[i].key, mkeys[i].va_base, (unsigned long long)size, MEMHEAP_SHM_GET_TYPE(shmid), MEMHEAP_SHM_GET_ID(shmid)); } OBJ_DESTRUCT(&convertor); *count = mca_spml_yoda.n_btls; @@ -724,10 +724,10 @@ static inline int mca_spml_yoda_put_internal(void *dst_addr, int nfrags; int i; unsigned ncopied = 0; - int frag_size = 0; + unsigned int frag_size = 0; char *p_src, *p_dst; mca_spml_yoda_context_t* yoda_context; - uint64_t rva; + void* rva; mca_spml_mkey_t *r_mkey; int btl_id = 0; struct yoda_btl *ybtl; @@ -749,7 +749,7 @@ static inline int mca_spml_yoda_put_internal(void *dst_addr, /* Get rkey of remote PE (dst proc) which must be on memheap*/ r_mkey = mca_memheap.memheap_get_cached_mkey(dst, - (unsigned long) dst_addr, + dst_addr, btl_id, &rva); if (!r_mkey) { @@ -769,7 +769,7 @@ static inline int mca_spml_yoda_put_internal(void *dst_addr, * just do memcpy */ if ((ybtl->btl_type == YODA_BTL_SM) - && OPAL_LIKELY(mca_memheap.memheap_is_symmetric_addr((unsigned long)dst_addr) && (unsigned long)dst_addr != rva)) { + && OPAL_LIKELY(mca_memheap.memheap_is_symmetric_addr(dst_addr) && dst_addr != rva)) { memcpy((void *) (unsigned long) rva, src_addr, size); return OSHMEM_SUCCESS; } @@ -783,7 +783,7 @@ static inline int mca_spml_yoda_put_internal(void *dst_addr, /* Allocating send request from free list */ putreq = mca_spml_yoda_putreq_alloc(dst); frag = &putreq->put_frag; - ncopied = i < nfrags - 1 ? (unsigned)frag_size : (char *) src_addr + size - p_src; + ncopied = i < nfrags - 1 ? frag_size :(unsigned) ((char *) src_addr + size - p_src); /* Preparing source buffer */ @@ -993,9 +993,9 @@ int mca_spml_yoda_get(void* src_addr, size_t size, void* dst_addr, int src) { int rc = OSHMEM_SUCCESS; mca_spml_mkey_t *r_mkey, *l_mkey; - uint64_t rva; + void* rva; unsigned ncopied = 0; - int frag_size = 0; + unsigned int frag_size = 0; char *p_src, *p_dst; int i; int nfrags; @@ -1032,7 +1032,7 @@ int mca_spml_yoda_get(void* src_addr, size_t size, void* dst_addr, int src) /* Get rkey of remote PE (src proc) which must be on memheap*/ r_mkey = mca_memheap.memheap_get_cached_mkey(src, - (unsigned long) src_addr, + src_addr, btl_id, &rva); if (!r_mkey) { @@ -1053,8 +1053,8 @@ int mca_spml_yoda_get(void* src_addr, size_t size, void* dst_addr, int src) * just do memcpy */ if ((ybtl->btl_type == YODA_BTL_SM) - && OPAL_LIKELY(mca_memheap.memheap_is_symmetric_addr((unsigned long)src_addr) && (unsigned long)src_addr != rva)) { - memcpy(dst_addr, (void *) (unsigned long) rva, size); + && OPAL_LIKELY(mca_memheap.memheap_is_symmetric_addr(src_addr) && src_addr != rva)) { + memcpy(dst_addr, (void *) rva, size); /* must call progress here to avoid deadlock. Scenarion: * pe1 pols pe2 via shm get. pe2 tries to get static variable from node one, which goes to sm btl * In this case pe2 is stuck forever because pe1 never calls opal_progress. @@ -1064,13 +1064,13 @@ int mca_spml_yoda_get(void* src_addr, size_t size, void* dst_addr, int src) return OSHMEM_SUCCESS; } - l_mkey = mca_memheap.memheap_get_local_mkey((unsigned long) dst_addr, + l_mkey = mca_memheap.memheap_get_local_mkey(dst_addr, btl_id); /* * Need a copy if local memory has not been registered or * we make GET via SEND */ - frag_size = (int)ncopied; + frag_size = ncopied; if ((NULL == l_mkey) || get_via_send) { calc_nfrags(bml_btl, size, &frag_size, &nfrags, get_via_send); @@ -1091,7 +1091,7 @@ int mca_spml_yoda_get(void* src_addr, size_t size, void* dst_addr, int src) frag = &getreq->get_frag; getreq->parent = &get_holder; - ncopied = i < nfrags - 1 ? (unsigned)frag_size : (char *) dst_addr + size - p_dst; + ncopied = i < nfrags - 1 ? frag_size :(unsigned) ((char *) dst_addr + size - p_dst); frag->allocated = 0; /* Prepare destination descriptor*/ yoda_context = r_mkey->spml_context; diff --git a/oshmem/op/op.c b/oshmem/op/op.c index 0da8fe29e0..684db17ab2 100644 --- a/oshmem/op/op.c +++ b/oshmem/op/op.c @@ -189,7 +189,9 @@ FUNC_OP_CREATE(max, fint4, ompi_fortran_integer4_t, __max_op); FUNC_OP_CREATE(max, fint8, ompi_fortran_integer8_t, __max_op); FUNC_OP_CREATE(max, freal4, ompi_fortran_real4_t, __max_op); FUNC_OP_CREATE(max, freal8, ompi_fortran_real8_t, __max_op); +#if ompi_fortran_real16_t FUNC_OP_CREATE(max, freal16, ompi_fortran_real16_t, __max_op); +#endif /* MIN */ #define __min_op(a, b) ((a) < (b) ? (a) : (b)) @@ -204,7 +206,9 @@ FUNC_OP_CREATE(min, fint4, ompi_fortran_integer4_t, __min_op); FUNC_OP_CREATE(min, fint8, ompi_fortran_integer8_t, __min_op); FUNC_OP_CREATE(min, freal4, ompi_fortran_real4_t, __min_op); FUNC_OP_CREATE(min, freal8, ompi_fortran_real8_t, __min_op); +#if ompi_fortran_real16_t FUNC_OP_CREATE(min, freal16, ompi_fortran_real16_t, __min_op); +#endif /* SUM */ #define __sum_op(a, b) ((a) + (b)) @@ -221,7 +225,9 @@ FUNC_OP_CREATE(sum, fint4, ompi_fortran_integer4_t, __sum_op); FUNC_OP_CREATE(sum, fint8, ompi_fortran_integer8_t, __sum_op); FUNC_OP_CREATE(sum, freal4, ompi_fortran_real4_t, __sum_op); FUNC_OP_CREATE(sum, freal8, ompi_fortran_real8_t, __sum_op); +#if ompi_fortran_real16_t FUNC_OP_CREATE(sum, freal16, ompi_fortran_real16_t, __sum_op); +#endif /* PROD */ #define __prod_op(a, b) ((a) * (b)) @@ -238,7 +244,9 @@ FUNC_OP_CREATE(prod, fint4, ompi_fortran_integer4_t, __prod_op); FUNC_OP_CREATE(prod, fint8, ompi_fortran_integer8_t, __prod_op); FUNC_OP_CREATE(prod, freal4, ompi_fortran_real4_t, __prod_op); FUNC_OP_CREATE(prod, freal8, ompi_fortran_real8_t, __prod_op); +#if ompi_fortran_real16_t FUNC_OP_CREATE(prod, freal16, ompi_fortran_real16_t, __prod_op); +#endif int oshmem_op_init(void) { @@ -289,7 +297,9 @@ int oshmem_op_init(void) OBJ_OP_CREATE(max, fint8, ompi_fortran_integer8_t, OSHMEM_OP_MAX, OSHMEM_OP_TYPE_FINT8); OBJ_OP_CREATE(max, freal4, ompi_fortran_real4_t, OSHMEM_OP_MAX, OSHMEM_OP_TYPE_FREAL4); OBJ_OP_CREATE(max, freal8, ompi_fortran_real8_t, OSHMEM_OP_MAX, OSHMEM_OP_TYPE_FREAL8); +#if ompi_fortran_real16_t OBJ_OP_CREATE(max, freal16, ompi_fortran_real16_t, OSHMEM_OP_MAX, OSHMEM_OP_TYPE_FREAL16); +#endif /* MIN */ OBJ_OP_CREATE(min, short, short, OSHMEM_OP_MIN, OSHMEM_OP_TYPE_SHORT); @@ -303,7 +313,9 @@ int oshmem_op_init(void) OBJ_OP_CREATE(min, fint8, ompi_fortran_integer8_t, OSHMEM_OP_MIN, OSHMEM_OP_TYPE_FINT8); OBJ_OP_CREATE(min, freal4, ompi_fortran_real4_t, OSHMEM_OP_MIN, OSHMEM_OP_TYPE_FREAL4); OBJ_OP_CREATE(min, freal8, ompi_fortran_real8_t, OSHMEM_OP_MIN, OSHMEM_OP_TYPE_FREAL8); +#if ompi_fortran_real16_t OBJ_OP_CREATE(min, freal16, ompi_fortran_real16_t, OSHMEM_OP_MIN, OSHMEM_OP_TYPE_FREAL16); +#endif /* SUM */ OBJ_OP_CREATE(sum, short, short, OSHMEM_OP_SUM, OSHMEM_OP_TYPE_SHORT); @@ -319,7 +331,9 @@ int oshmem_op_init(void) OBJ_OP_CREATE(sum, fint8, ompi_fortran_integer8_t, OSHMEM_OP_SUM, OSHMEM_OP_TYPE_FINT8); OBJ_OP_CREATE(sum, freal4, ompi_fortran_real4_t, OSHMEM_OP_SUM, OSHMEM_OP_TYPE_FREAL4); OBJ_OP_CREATE(sum, freal8, ompi_fortran_real8_t, OSHMEM_OP_SUM, OSHMEM_OP_TYPE_FREAL8); +#if ompi_fortran_real16_t OBJ_OP_CREATE(sum, freal16, ompi_fortran_real16_t, OSHMEM_OP_SUM, OSHMEM_OP_TYPE_FREAL16); +#endif /* PROD */ OBJ_OP_CREATE(prod, short, short, OSHMEM_OP_PROD, OSHMEM_OP_TYPE_SHORT); @@ -335,7 +349,9 @@ int oshmem_op_init(void) OBJ_OP_CREATE(prod, fint8, ompi_fortran_integer8_t, OSHMEM_OP_PROD, OSHMEM_OP_TYPE_FINT8); OBJ_OP_CREATE(prod, freal4, ompi_fortran_real4_t, OSHMEM_OP_PROD, OSHMEM_OP_TYPE_FREAL4); OBJ_OP_CREATE(prod, freal8, ompi_fortran_real8_t, OSHMEM_OP_PROD, OSHMEM_OP_TYPE_FREAL8); +#if ompi_fortran_real16_t OBJ_OP_CREATE(prod, freal16, ompi_fortran_real16_t, OSHMEM_OP_PROD, OSHMEM_OP_TYPE_FREAL16); +#endif return OSHMEM_SUCCESS; } diff --git a/oshmem/runtime/runtime.h b/oshmem/runtime/runtime.h index 8fc114b069..c398ce515a 100644 --- a/oshmem/runtime/runtime.h +++ b/oshmem/runtime/runtime.h @@ -177,7 +177,7 @@ OSHMEM_DECLSPEC int oshmem_shmem_register_params(void); */ #include "oshmem/mca/memheap/memheap.h" #define RUNTIME_CHECK_ADDR(x) \ - if (OPAL_UNLIKELY(!MCA_MEMHEAP_CALL(is_symmetric_addr((unsigned long)(x))))) \ + if (OPAL_UNLIKELY(!MCA_MEMHEAP_CALL(is_symmetric_addr((x))))) \ { \ RUNTIME_CHECK_ERROR("Required address %p is not in symmetric space\n", (x)); \ oshmem_shmem_abort(-1); \ diff --git a/oshmem/shmem/c/shmem_addr_accessible.c b/oshmem/shmem/c/shmem_addr_accessible.c index 9685f4472f..d5f50c82d4 100644 --- a/oshmem/shmem/c/shmem_addr_accessible.c +++ b/oshmem/shmem/c/shmem_addr_accessible.c @@ -17,12 +17,12 @@ int shmem_addr_accessible(void *addr, int pe) { - uint64_t rva; + void* rva; mca_spml_mkey_t *mkey; RUNTIME_CHECK_INIT(); - mkey = MCA_MEMHEAP_CALL(get_cached_mkey(pe, (unsigned long)addr, + mkey = MCA_MEMHEAP_CALL(get_cached_mkey(pe, addr, oshmem_get_transport_id(pe), &rva)); return mkey ? 1 : 0; diff --git a/oshmem/shmem/f77/shmem_fortran_pointer.h b/oshmem/shmem/f77/shmem_fortran_pointer.h index 0ff2c1996a..577851375b 100644 --- a/oshmem/shmem/f77/shmem_fortran_pointer.h +++ b/oshmem/shmem/f77/shmem_fortran_pointer.h @@ -11,7 +11,7 @@ #ifndef SHMEM_FORTRAN_POINTER_H #define SHMEM_FORTRAN_POINTER_H -#define FORTRAN_POINTER_T uint64_t +#define FORTRAN_POINTER_T uintptr_t #define FPTR_2_VOID_PTR(a) ((void *)(a)) #endif