Supported/Unsupported Features
The following tables indicate which APIs are supported in Intel® SHMEM as of
the 1.1.0 release.
The Intel® SHMEM development team strives to eventually support all OpenSHMEM
APIs.
Currently unsupported interfaces are targeted for implementation in future
releases of Intel® SHMEM.
Library Setup Query |
Supported? |
ishmem_init
|
Yes |
ishmemx_init_attr
|
Yes |
ishmem_init_thread
|
No |
ishmem_my_pe
|
Yes |
ishmem_n_pes
|
Yes |
ishmem_finalize
|
Yes |
ishmem_global_exit
|
No |
ishmem_pe_accessible
|
No |
ishmem_addr_accessible
|
No |
ishmem_ptr
|
Yes |
ishmem_team_ptr
|
No |
ishmem_info_get_version
|
Yes |
ishmem_info_get_name
|
Yes |
Memory Management |
Supported? |
ishmem_malloc
|
Yes |
ishmem_free
|
Yes |
ishmem_realloc
|
No |
ishmem_align
|
Yes |
ishmem_malloc_with_hints
|
No |
ishmem_calloc
|
Yes |
OpenSHMEM Communication Contexts |
Supported? |
All routines |
No |
OpenSHMEM Team Management |
Supported? |
ishmem_team_my_pe
|
Yes |
ishmem_team_n_pes
|
Yes |
ishmem_team_config_t
|
Yes (but ignored) |
ishmem_team_get_config
|
Yes |
ishmem_team_translate_pe
|
Yes |
ishmem_team_split_strided
|
Yes |
ishmem_team_split_2d
|
Yes |
ishmem_team_destroy
|
Yes |
Remote Memory Access |
Supported? |
ishmem_TYPENAME_put
|
Yes |
ishmemx_TYPENAME_put_work_group
|
Yes |
ishmem_putmem
|
Yes |
ishmemx_TYPENAME_putmem_work_group
|
Yes |
ishmem_putSIZE
|
Yes |
ishmemx_putSIZE_work_group
|
Yes |
ishmem_TYPENAME_p
|
Yes |
ishmem_TYPENAME_iput
|
Yes |
ishmemx_TYPENAME_iput_work_group
|
Yes |
ishmemx_TYPENAME_ibput
|
Yes |
ishmemx_TYPENAME_ibput_work_group
|
Yes |
ishmem_TYPENAME_get
|
Yes |
ishmemx_TYPENAME_get_work_group
|
Yes |
ishmem_getmem
|
Yes |
ishmemx_TYPENAME_getmem_work_group
|
Yes |
ishmem_getSIZE
|
Yes |
ishmemx_getSIZE_work_group
|
Yes |
ishmem_TYPENAME_g
|
Yes |
ishmem_TYPENAME_iget
|
Yes |
ishmemx_TYPENAME_iget_work_group
|
Yes |
ishmemx_TYPENAME_ibget
|
Yes |
ishmemx_TYPENAME_ibget_work_group
|
Yes |
ishmem_TYPENAME_put_nbi
|
Yes |
ishmemx_TYPENAME_put_nbi_work_group
|
Yes |
ishmem_TYPENAME_putmem_nbi
|
Yes |
ishmemx_TYPENAME_putmem_nbi_work_group
|
Yes |
ishmem_putSIZE_nbi
|
Yes |
ishmemx_putSIZE_nbi_work_group
|
Yes |
ishmem_TYPENAME_get_nbi
|
Yes |
ishmemx_TYPENAME_get_nbi_work_group
|
Yes |
ishmem_TYPENAME_getmem_nbi
|
Yes |
ishmemx_TYPENAME_getmem_nbi_work_group
|
Yes |
ishmem_getSIZE_nbi
|
Yes |
ishmemx_getSIZE_nbi_work_group
|
Yes |
C++ function template routines* |
Yes |
Atomic Memory Operations |
Supported? |
ishmem_TYPENAME_atomic_fetch
|
Yes |
ishmem_TYPENAME_atomic_set
|
Yes |
ishmem_TYPENAME_atomic_compare_swap
|
Yes |
ishmem_TYPENAME_atomic_swap
|
Yes |
ishmem_TYPENAME_atomic_fetch_inc
|
Yes |
ishmem_TYPENAME_atomic_inc
|
Yes |
ishmem_TYPENAME_atomic_fetch_add
|
Yes |
ishmem_TYPENAME_atomic_add
|
Yes |
ishmem_TYPENAME_atomic_fetch_and
|
Yes |
ishmem_TYPENAME_atomic_and
|
Yes |
ishmem_TYPENAME_atomic_fetch_or
|
Yes |
ishmem_TYPENAME_atomic_or
|
Yes |
ishmem_TYPENAME_fetch_xor
|
Yes |
ishmem_TYPENAME_xor
|
Yes |
C++ function template routines* |
Yes |
Non-blocking Atomic Memory Operations |
Supported? |
ishmem_TYPENAME_atomic_fetch_nbi
|
Yes |
ishmem_TYPENAME_atomic_compare_swap_nbi
|
Yes |
ishmem_TYPENAME_atomic_swap_nbi
|
Yes |
ishmem_TYPENAME_atomic_fetch_inc_nbi
|
Yes |
ishmem_TYPENAME_atomic_fetch_add_nbi
|
Yes |
ishmem_TYPENAME_atomic_fetch_and_nbi
|
Yes |
ishmem_TYPENAME_atomic_fetch_or_nbi
|
Yes |
ishmem_TYPENAME_atomic_fetch_xor_nbi
|
Yes |
Signaling Operations |
Supported? |
ishmem_TYPENAME_put_signal
|
Yes |
ishmemx_TYPENAME_put_signal_work_group
|
Yes |
ishmem_TYPENAME_put_signal_nbi
|
Yes |
ishmemx_TYPENAME_put_signal_nbi_work_group
|
Yes |
ishmem_putmem_signal
|
Yes |
ishmem_putmem_signal_nbi
|
Yes |
ishmemx_putmem_signal_nbi_work_group
|
Yes |
ishmem_putSIZE_signal
|
Yes |
ishmemx_putSIZE_signal_work_group
|
Yes |
ishmem_putSIZE_signal_nbi
|
Yes |
ishmemx_putSIZE_signal_nbi_work_group
|
Yes |
ishmem_signal_fetch
|
Yes |
ishmemx_signal_add
|
Yes |
ishmemx_signal_set
|
Yes |
Synchronization and Ordering |
Supported? |
ishmem_fence
|
Yes |
ishmemx_fence_work_group
|
Yes |
ishmem_quiet
|
Yes |
ishmemx_quiet_work_group
|
Yes |
Collective Communication |
Supported? |
ishmem_barrier_all
|
Yes |
ishmemx_barrier_all_work_group
|
Yes |
ishmem_sync_all
|
Yes |
ishmemx_sync_all_work_group
|
Yes |
ishmem_TYPENAME_alltoall
|
Yes |
ishmemx_TYPENAME_alltoall_work_group
|
Yes |
ishmem_TYPENAME_alltoalls
|
No |
ishmemx_TYPENAME_alltoalls_work_group
|
No |
ishmem_TYPENAME_broadcast
|
Yes |
ishmem_broadcastmem
|
Yes |
ishmemx_TYPENAME_broadcast_work_group
|
Yes |
ishmemx_broadcastmem_work_group
|
Yes |
ishmem_TYPENAME_collect
|
Yes |
ishmem_TYPENAME_fcollect
|
Yes |
ishmem_collectmem
|
Yes |
ishmem_fcollectmem
|
Yes |
ishmemx_TYPENAME_collect_work_group
|
Yes |
ishmemx_TYPENAME_fcollect_work_group
|
Yes |
ishmemx_collectmem_work_group
|
Yes |
ishmemx_fcollectmem_work_group
|
Yes |
ishmem_TYPENAME_OP_reduce
|
Yes |
ishmemx_TYPENAME_OP_reduce_work_group
|
Yes |
C++ function template routines* |
Yes |
Point-to-Point Synchronization |
Supported? |
ishmem_test
|
Yes |
ishmemx_test_work_group
|
Yes |
ishmem_test_all
|
Yes |
ishmemx_test_all_work_group
|
Yes |
ishmem_test_any
|
Yes |
ishmemx_test_any_work_group
|
Yes |
ishmem_test_some
|
Yes |
ishmemx_test_some_work_group
|
Yes |
ishmem_wait_until
|
Yes |
ishmemx_wait_until_work_group
|
Yes |
ishmem_wait_until_all
|
Yes |
ishmemx_wait_until_all_work_group
|
Yes |
ishmem_wait_until_any
|
Yes |
ishmemx_wait_until_any_work_group
|
Yes |
ishmem_wait_until_some
|
Yes |
ishmemx_wait_until_some_work_group
|
Yes |
ishmem_signal_wait_until
|
Yes |
ishmemx_signal_wait_until_work_group
|
Yes |
C++ function template routines* |
Yes |
Mutual Exclusion |
Supported? |
All routines |
No |
Library Constants |
Supported? |
ISHMEM_THREAD_SINGLE
|
No |
ISHMEM_THREAD_FUNNELED
|
No |
ISHMEM_THREAD_SERIALIZED
|
No |
ISHMEM_THREAD_MULTIPLE
|
No |
ISHMEM_MAJOR_VERSION
|
Yes |
ISHMEM_MINOR_VERSION
|
Yes |
ISHMEM_MAX_NAME_LEN
|
Yes |
ISHMEM_VENDOR_STRING
|
Yes |
Environment Variables |
Supported? |
ISHMEM_VERSION
|
No |
ISHMEM_INFO
|
No |
ISHMEM_SYMMETRIC_SIZE
|
Yes |
ISHMEM_DEBUG
|
Yes |
ISHMEM_SHMEM_LIB_NAME
|
Yes |
ISHMEM_ENABLE_GPU_IPC
|
Yes |
ISHMEM_ENABLE_GPU_IPC_PIDFD
|
Yes |
* C11 generic selection routines from the OpenSHMEM specification are replaced
with corresponding C++ template function routines in Intel® SHMEM.