Skip to content
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions src/collectives.c
Original file line number Diff line number Diff line change
Expand Up @@ -268,6 +268,8 @@ shmem_internal_sync_linear(int PE_start, int PE_stride, int PE_size, long *pSync
i < PE_size ;
i++, pe += PE_stride) {
shmem_internal_put_scalar(SHMEM_CTX_DEFAULT, pSync, &one, sizeof(one), pe, nic_idx);
//shmem_internal_atomic(SHMEM_CTX_DEFAULT, pSync, &one, sizeof(one), pe,
// SHM_INTERNAL_SUM, SHM_INTERNAL_LONG, nic_idx);
}

} else {
Expand Down
75 changes: 49 additions & 26 deletions src/shmem_synchronization.h
Original file line number Diff line number Diff line change
Expand Up @@ -99,36 +99,59 @@ shmem_internal_fence(shmem_ctx_t ctx)

#define SHMEM_TEST(type, a, b, ret) COMP(type, SYNC_LOAD(a), b, ret)

#define SHMEM_WAIT_POLL(var, value) \
do { \
while (SYNC_LOAD(var) == value) { \
shmem_transport_probe(); \
SPINLOCK_BODY(); \
} \
#ifdef USE_OFI
#define SHMEM_TRANSPORT_PROBE_ALL() \
do { \
for (size_t nic_idx = 0; nic_idx < shmem_transport_ofi_num_nics; nic_idx++) { \
shmem_transport_probe(nic_idx); \
} \
} while (0);
#define SHMEM_TRANSPORT_PROBE_ALL_SPINLOCK() \
do { \
for (size_t nic_idx = 0; nic_idx < shmem_transport_ofi_num_nics; nic_idx++) { \
shmem_transport_probe(nic_idx); \
SPINLOCK_BODY(); \
} \
} while (0);
#else
#define SHMEM_TRANSPORT_PROBE_ALL() \
do { \
shmem_transport_probe(0); \
} while (0);
#define SHMEM_TRANSPORT_PROBE_ALL_SPINLOCK() \
do { \
shmem_transport_probe(0); \
SPINLOCK_BODY(); \
} while (0);
#endif

#define SHMEM_WAIT_POLL(var, value) \
do { \
while (SYNC_LOAD(var) == value) { \
SHMEM_TRANSPORT_PROBE_ALL_SPINLOCK(); \
} \
} while(0)

#define SHMEM_WAIT_UNTIL_POLL(var, cond, value) \
do { \
int cmpret; \
\
COMP(cond, SYNC_LOAD(var), value, cmpret); \
while (!cmpret) { \
shmem_transport_probe(); \
SPINLOCK_BODY(); \
COMP(cond, SYNC_LOAD(var), value, cmpret); \
} \
#define SHMEM_WAIT_UNTIL_POLL(var, cond, value) \
do { \
int cmpret; \
\
COMP(cond, SYNC_LOAD(var), value, cmpret); \
while (!cmpret) { \
SHMEM_TRANSPORT_PROBE_ALL_SPINLOCK(); \
COMP(cond, SYNC_LOAD(var), value, cmpret); \
} \
} while(0)

#define SHMEM_SIGNAL_WAIT_UNTIL_POLL(var, cond, value, sat_value) \
do { \
int cmpret; \
\
COMP_SIGNAL(cond, SYNC_LOAD(var), value, cmpret, sat_value); \
while (!cmpret) { \
shmem_transport_probe(); \
SPINLOCK_BODY(); \
COMP_SIGNAL(cond, SYNC_LOAD(var), value, cmpret, sat_value); \
} \
#define SHMEM_SIGNAL_WAIT_UNTIL_POLL(var, cond, value, sat_value) \
do { \
int cmpret; \
\
COMP_SIGNAL(cond, SYNC_LOAD(var), value, cmpret, sat_value); \
while (!cmpret) { \
SHMEM_TRANSPORT_PROBE_ALL_SPINLOCK(); \
COMP_SIGNAL(cond, SYNC_LOAD(var), value, cmpret, sat_value); \
} \
} while(0)

#define SHMEM_WAIT_BLOCK(var, value) \
Expand Down
1 change: 0 additions & 1 deletion src/symmetric_heap_c.c
Original file line number Diff line number Diff line change
Expand Up @@ -363,7 +363,6 @@ shmem_realloc(void *ptr, size_t size)
}
SHMEM_MUTEX_UNLOCK(shmem_internal_mutex_alloc);

SHMEM_GET_TRANSMIT_NIC_IDX(nic_idx);
shmem_internal_barrier_all(nic_idx);

return ret;
Expand Down
Loading