Supported/Unsupported Features

Supported/Unsupported Features#

The following tables indicate which APIs are supported in Intel® SHMEM as of the 1.2.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_my_pe

Yes

ishmem_n_pes

Yes

ishmem_finalize

Yes

ishmemx_query_initialized

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

Thread

Supported?

ishmem_init_thread

Yes

ishmem_query_thread

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_on_queue

Yes

ishmemx_TYPENAME_put_work_group

Yes

ishmem_putmem

Yes

ishmemx_TYPENAME_putmem_on_queue

Yes

ishmemx_TYPENAME_putmem_work_group

Yes

ishmem_putSIZE

Yes

ishmemx_putSIZE_on_queue

Yes

ishmemx_putSIZE_work_group

Yes

ishmem_TYPENAME_p

Yes

ishmem_TYPENAME_iput

Yes

ishmemx_TYPENAME_iput_on_queue

Yes

ishmemx_TYPENAME_iput_work_group

Yes

ishmem_iputSIZE

Yes

ishmemx_iputSIZE_on_queue

Yes

ishmemx_iputSIZE_work_group

Yes

ishmemx_TYPENAME_ibput

Yes

ishmemx_TYPENAME_ibput_on_queue

Yes

ishmemx_TYPENAME_ibput_work_group

Yes

ishmemx_ibputSIZE

Yes

ishmemx_ibputSIZE_on_queue

Yes

ishmemx_ibputSIZE_work_group

Yes

ishmem_TYPENAME_get

Yes

ishmemx_TYPENAME_get_on_queue

Yes

ishmemx_TYPENAME_get_work_group

Yes

ishmem_getmem

Yes

ishmemx_TYPENAME_getmem_on_queue

Yes

ishmemx_TYPENAME_getmem_work_group

Yes

ishmem_getSIZE

Yes

ishmemx_getSIZE_on_queue

Yes

ishmemx_getSIZE_work_group

Yes

ishmem_TYPENAME_g

Yes

ishmem_TYPENAME_iget

Yes

ishmemx_TYPENAME_iget_on_queue

Yes

ishmemx_TYPENAME_iget_work_group

Yes

ishmem_igetSIZE

Yes

ishmemx_igetSIZE_on_queue

Yes

ishmemx_igetSIZE_work_group

Yes

ishmemx_TYPENAME_ibget

Yes

ishmemx_TYPENAME_ibget_on_queue

Yes

ishmemx_TYPENAME_ibget_work_group

Yes

ishmemx_ibgetSIZE

Yes

ishmemx_ibgetSIZE_on_queue

Yes

ishmemx_ibgetSIZE_work_group

Yes

ishmem_TYPENAME_put_nbi

Yes

ishmemx_TYPENAME_put_nbi_on_queue

Yes

ishmemx_TYPENAME_put_nbi_work_group

Yes

ishmem_TYPENAME_putmem_nbi

Yes

ishmemx_TYPENAME_putmem_nbi_on_queue

Yes

ishmemx_TYPENAME_putmem_nbi_work_group

Yes

ishmem_putSIZE_nbi

Yes

ishmemx_putSIZE_nbi_on_queue

Yes

ishmemx_putSIZE_nbi_work_group

Yes

ishmem_TYPENAME_get_nbi

Yes

ishmemx_TYPENAME_get_nbi_on_queue

Yes

ishmemx_TYPENAME_get_nbi_work_group

Yes

ishmem_TYPENAME_getmem_nbi

Yes

ishmemx_TYPENAME_getmem_nbi_on_queue

Yes

ishmemx_TYPENAME_getmem_nbi_work_group

Yes

ishmem_getSIZE_nbi

Yes

ishmemx_getSIZE_nbi_on_queue

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_on_queue

Yes

ishmemx_TYPENAME_put_signal_work_group

Yes

ishmem_TYPENAME_put_signal_nbi

Yes

ishmemx_TYPENAME_put_signal_nbi_on_queue

Yes

ishmemx_TYPENAME_put_signal_nbi_work_group

Yes

ishmem_putmem_signal

Yes

ishmemx_putmem_signal_on_queue

Yes

ishmemx_putmem_signal_work_group

Yes

ishmem_putmem_signal_nbi

Yes

ishmemx_putmem_signal_nbi_on_queue

Yes

ishmemx_putmem_signal_nbi_work_group

Yes

ishmem_putSIZE_signal

Yes

ishmemx_putSIZE_signal_on_queue

Yes

ishmemx_putSIZE_signal_work_group

Yes

ishmem_putSIZE_signal_nbi

Yes

ishmemx_putSIZE_signal_nbi_on_queue

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_on_queue

Yes

ishmemx_quiet_work_group

Yes

Collective Communication

Supported?

ishmem_barrier_all

Yes

ishmemx_barrier_all_on_queue

Yes

ishmemx_barrier_all_work_group

Yes

ishmem_sync_all

Yes

ishmemx_sync_all_on_queue

Yes

ishmemx_sync_all_work_group

Yes

ishmem_team_sync

Yes

ishmemx_team_sync_on_queue

Yes

ishmemx_team_sync_work_group

Yes

ishmem_TYPENAME_alltoall

Yes

ishmemx_TYPENAME_alltoall_on_queue

Yes

ishmemx_TYPENAME_alltoall_work_group

Yes

ishmem_alltoallmem

Yes

ishmemx_alltoallmem_on_queue

Yes

ishmemx_alltoallmem_work_group

Yes

ishmem_TYPENAME_alltoalls

No

ishmemx_TYPENAME_alltoalls_on_queue

No

ishmemx_TYPENAME_alltoalls_work_group

No

ishmem_alltoallsmem

No

ishmemx_alltoallsmem_on_queue

No

ishmemx_alltoallsmem_work_group

No

ishmem_TYPENAME_broadcast

Yes

ishmemx_TYPENAME_broadcast_on_queue

Yes

ishmemx_TYPENAME_broadcast_work_group

Yes

ishmem_broadcastmem

Yes

ishmemx_broadcastmem_on_queue

Yes

ishmemx_broadcastmem_work_group

Yes

ishmem_TYPENAME_collect

Yes

ishmemx_TYPENAME_collect_on_queue

Yes

ishmemx_TYPENAME_collect_work_group

Yes

ishmem_collectmem

Yes

ishmemx_collectmem_on_queue

Yes

ishmemx_collectmem_work_group

Yes

ishmem_TYPENAME_fcollect

Yes

ishmemx_TYPENAME_fcollect_on_queue

Yes

ishmemx_TYPENAME_fcollect_work_group

Yes

ishmem_fcollectmem

Yes

ishmemx_fcollectmem_on_queue

Yes

ishmemx_fcollectmem_work_group

Yes

ishmem_TYPENAME_OP_reduce

Yes

ishmemx_TYPENAME_OP_reduce_on_queue

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_test_all_vector

Yes

ishmemx_test_all_vector_work_group

Yes

ishmem_test_any_vector

Yes

ishmemx_test_any_vector_work_group

Yes

ishmem_test_some_vector

Yes

ishmemx_test_some_vector_work_group

Yes

ishmem_wait_until

Yes

ishmemx_wait_until_on_queue

Yes

ishmemx_wait_until_work_group

Yes

ishmem_wait_until_all

Yes

ishmemx_wait_until_all_on_queue

Yes

ishmemx_wait_until_all_work_group

Yes

ishmem_wait_until_any

Yes

ishmemx_wait_until_any_on_queue

Yes

ishmemx_wait_until_any_work_group

Yes

ishmem_wait_until_some

Yes

ishmemx_wait_until_some_on_queue

Yes

ishmemx_wait_until_some_work_group

Yes

ishmem_wait_until_all_vector

Yes

ishmemx_wait_until_all_vector_on_queue

Yes

ishmemx_wait_until_all_vector_work_group

Yes

ishmem_wait_until_any_vector

Yes

ishmemx_wait_until_any_vector_on_queue

Yes

ishmemx_wait_until_any_vector_work_group

Yes

ishmem_wait_until_some_vector

Yes

ishmemx_wait_until_some_vector_on_queue

Yes

ishmemx_wait_until_some_vector_work_group

Yes

ishmem_signal_wait_until

Yes

ishmemx_signal_wait_until_on_queue

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

Yes

ISHMEM_THREAD_FUNNELED

Yes

ISHMEM_THREAD_SERIALIZED

Yes

ISHMEM_THREAD_MULTIPLE

Yes

ISHMEM_MAJOR_VERSION

Yes

ISHMEM_MINOR_VERSION

Yes

ISHMEM_MAX_NAME_LEN

Yes

ISHMEM_VENDOR_STRING

Yes

ISHMEM_CMP_EQ

Yes

ISHMEM_CMP_NE

Yes

ISHMEM_CMP_LT

Yes

ISHMEM_CMP_LE

Yes

ISHMEM_CMP_GT

Yes

ISHMEM_CMP_GE

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.