diff --git a/opal/mca/accelerator/cuda/accelerator_cuda.c b/opal/mca/accelerator/cuda/accelerator_cuda.c index 49d181a0b00..884e6e79fbc 100644 --- a/opal/mca/accelerator/cuda/accelerator_cuda.c +++ b/opal/mca/accelerator/cuda/accelerator_cuda.c @@ -25,8 +25,13 @@ /* Accelerator API's */ static int accelerator_cuda_check_addr(const void *addr, int *dev_id, uint64_t *flags); static int accelerator_cuda_create_stream(int dev_id, opal_accelerator_stream_t **stream); +static int accelerator_cuda_destroy_stream(opal_accelerator_stream_t *stream); +static int accelerator_cuda_synchronize_stream(opal_accelerator_stream_t *stream); +static int accelerator_cuda_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event); static int accelerator_cuda_create_event(int dev_id, opal_accelerator_event_t **event); +static int accelerator_cuda_destroy_event(opal_accelerator_event_t *event); static int accelerator_cuda_record_event(int dev_id, opal_accelerator_event_t *event, opal_accelerator_stream_t *stream); static int accelerator_cuda_query_event(int dev_id, opal_accelerator_event_t *event); @@ -41,6 +46,17 @@ static int accelerator_cuda_mem_release(int dev_id, void *ptr); static int accelerator_cuda_get_address_range(int dev_id, const void *ptr, void **base, size_t *size); +static bool accelerator_cuda_is_ipc_enabled(void); +static int accelerator_cuda_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle); +static int accelerator_cuda_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr); +static int accelerator_cuda_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle); +static int accelerator_cuda_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event); +static int accelerator_cuda_close_ipc_handle(int dev_id, void *dev_ptr); + static int accelerator_cuda_host_register(int dev_id, void *ptr, size_t size); static int accelerator_cuda_host_unregister(int dev_id, void *ptr); @@ -55,8 +71,12 @@ opal_accelerator_base_module_t opal_accelerator_cuda_module = accelerator_cuda_check_addr, accelerator_cuda_create_stream, + accelerator_cuda_destroy_stream, + accelerator_cuda_synchronize_stream, + accelerator_cuda_stream_wait_event, accelerator_cuda_create_event, + accelerator_cuda_destroy_event, accelerator_cuda_record_event, accelerator_cuda_query_event, @@ -67,6 +87,13 @@ opal_accelerator_base_module_t opal_accelerator_cuda_module = accelerator_cuda_mem_release, accelerator_cuda_get_address_range, + accelerator_cuda_is_ipc_enabled, + accelerator_cuda_get_ipc_handle, + accelerator_cuda_open_ipc_handle, + accelerator_cuda_get_ipc_event_handle, + accelerator_cuda_open_ipc_event_handle, + accelerator_cuda_close_ipc_handle, + accelerator_cuda_host_register, accelerator_cuda_host_unregister, @@ -254,6 +281,23 @@ static void opal_accelerator_cuda_stream_destruct(opal_accelerator_cuda_stream_t } } +static int accelerator_cuda_destroy_stream(opal_accelerator_stream_t *stream) +{ + opal_accelerator_cuda_stream_destruct(stream); + return OPAL_SUCCESS; +} + +static int accelerator_cuda_synchronize_stream(opal_accelerator_stream_t *stream) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_cuda_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + OBJ_CLASS_INSTANCE( opal_accelerator_cuda_stream_t, opal_accelerator_stream_t, @@ -302,6 +346,12 @@ static void opal_accelerator_cuda_event_destruct(opal_accelerator_cuda_event_t * } } +static int accelerator_cuda_destroy_event(opal_accelerator_event_t *event) +{ + opal_accelerator_cuda_event_destruct(event); + return OPAL_SUCCESS; +} + OBJ_CLASS_INSTANCE( opal_accelerator_cuda_event_t, opal_accelerator_event_t, @@ -520,6 +570,40 @@ static int accelerator_cuda_get_address_range(int dev_id, const void *ptr, void return 0; } +static bool accelerator_null_is_ipc_enabled(void) +{ + return false; +} + +static int accelerator_cuda_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_cuda_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_cuda_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_cuda_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_cuda_close_ipc_handle(int dev_id, void *dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + static int accelerator_cuda_host_register(int dev_id, void *ptr, size_t size) { CUresult result; diff --git a/opal/mca/accelerator/null/accelerator_null_component.c b/opal/mca/accelerator/null/accelerator_null_component.c index 4a0d307497b..bd1597754c2 100644 --- a/opal/mca/accelerator/null/accelerator_null_component.c +++ b/opal/mca/accelerator/null/accelerator_null_component.c @@ -40,7 +40,12 @@ static void accelerator_null_finalize(opal_accelerator_base_module_t* module); static int accelerator_null_check_addr(const void *addr, int *dev_id, uint64_t *flags); static int accelerator_null_create_stream(int dev_id, opal_accelerator_stream_t **stream); +static int accelerator_null_destroy_stream(opal_accelerator_stream_t *stream); +static int accelerator_null_synchronize_stream(opal_accelerator_stream_t *stream); +static int accelerator_null_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event); static int accelerator_null_create_event(int dev_id, opal_accelerator_event_t **event); +static int accelerator_null_destroy_event(opal_accelerator_event_t *event); static int accelerator_null_record_event(int dev_id, opal_accelerator_event_t *event, opal_accelerator_stream_t *stream); static int accelerator_null_query_event(int dev_id, opal_accelerator_event_t *event); @@ -55,6 +60,17 @@ static int accelerator_null_mem_alloc(int dev_id, void **ptr, size_t size); static int accelerator_null_mem_release(int dev_id, void *ptr); static int accelerator_null_get_address_range(int dev_id, const void *ptr, void **base, size_t *size); +static bool accelerator_null_is_ipc_enabled(void); +static int accelerator_null_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle); +static int accelerator_null_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr); +static int accelerator_null_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle); +static int accelerator_null_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event); +static int accelerator_null_close_ipc_handle(int dev_id, void *dev_ptr); + static int accelerator_null_host_register(int dev_id, void *ptr, size_t size); static int accelerator_null_host_unregister(int dev_id, void *ptr); @@ -107,8 +123,12 @@ opal_accelerator_base_module_t opal_accelerator_null_module = accelerator_null_check_addr, accelerator_null_create_stream, + accelerator_null_destroy_stream, + accelerator_null_synchronize_stream, + accelerator_null_stream_wait_event, accelerator_null_create_event, + accelerator_null_destroy_event, accelerator_null_record_event, accelerator_null_query_event, @@ -119,6 +139,13 @@ opal_accelerator_base_module_t opal_accelerator_null_module = accelerator_null_mem_release, accelerator_null_get_address_range, + accelerator_null_is_ipc_enabled, + accelerator_null_get_ipc_handle, + accelerator_null_open_ipc_handle, + accelerator_null_get_ipc_event_handle, + accelerator_null_open_ipc_event_handle, + accelerator_null_close_ipc_handle, + accelerator_null_host_register, accelerator_null_host_unregister, @@ -167,12 +194,35 @@ static int accelerator_null_create_stream(int dev_id, opal_accelerator_stream_t return OPAL_SUCCESS; } +static int accelerator_null_destroy_stream(opal_accelerator_stream_t *stream) +{ + OBJ_RELEASE(stream); + return OPAL_SUCCESS; +} + +static int accelerator_null_synchronize_stream(opal_accelerator_stream_t *stream) +{ + return OPAL_SUCCESS; +} + +static int accelerator_null_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event) +{ + return OPAL_SUCCESS; +} + static int accelerator_null_create_event(int dev_id, opal_accelerator_event_t **event) { *event = OBJ_NEW(opal_accelerator_event_t); return OPAL_SUCCESS; } +static int accelerator_null_destroy_event(opal_accelerator_event_t *event) +{ + OBJ_RELEASE(event); + return OPAL_SUCCESS; +} + static int accelerator_null_record_event(int dev_id, opal_accelerator_event_t *event, opal_accelerator_stream_t *stream) { return OPAL_SUCCESS; @@ -222,6 +272,40 @@ static int accelerator_null_get_address_range(int dev_id, const void *ptr, void return OPAL_ERR_NOT_IMPLEMENTED; } +static bool accelerator_null_is_ipc_enabled(void) +{ + return false; +} + +static int accelerator_null_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_null_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_null_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_null_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int accelerator_null_close_ipc_handle(int dev_id, void *dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + static int accelerator_null_host_register(int dev_id, void *ptr, size_t size) { return OPAL_ERR_NOT_IMPLEMENTED; diff --git a/opal/mca/accelerator/rocm/accelerator_rocm_module.c b/opal/mca/accelerator/rocm/accelerator_rocm_module.c index d5640db2100..5dec6e7520b 100644 --- a/opal/mca/accelerator/rocm/accelerator_rocm_module.c +++ b/opal/mca/accelerator/rocm/accelerator_rocm_module.c @@ -17,8 +17,13 @@ /* Accelerator API's */ static int mca_accelerator_rocm_check_addr(const void *addr, int *dev_id, uint64_t *flags); static int mca_accelerator_rocm_create_stream(int dev_id, opal_accelerator_stream_t **stream); +static int mca_accelerator_rocm_destroy_stream(opal_accelerator_stream_t *stream); +static int mca_accelerator_rocm_synchronize_stream(opal_accelerator_stream_t *stream); +static int mca_accelerator_rocm_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event); static int mca_accelerator_rocm_create_event(int dev_id, opal_accelerator_event_t **event); +static int mca_accelerator_rocm_destroy_event(opal_accelerator_event_t *event); static int mca_accelerator_rocm_record_event(int dev_id, opal_accelerator_event_t *event, opal_accelerator_stream_t *stream); static int mca_accelerator_rocm_query_event(int dev_id, opal_accelerator_event_t *event); @@ -33,6 +38,17 @@ static int mca_accelerator_rocm_mem_release(int dev_id, void *ptr); static int mca_accelerator_rocm_get_address_range(int dev_id, const void *ptr, void **base, size_t *size); +static bool mca_accelerator_rocm_is_ipc_enabled(void); +static int mca_accelerator_rocm_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle); +static int mca_accelerator_rocm_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr); +static int mca_accelerator_rocm_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle); +static int mca_accelerator_rocm_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event); +static int mca_accelerator_rocm_close_ipc_handle(int dev_id, void *dev_ptr); + static int mca_accelerator_rocm_host_register(int dev_id, void *ptr, size_t size); static int mca_accelerator_rocm_host_unregister(int dev_id, void *ptr); @@ -47,8 +63,12 @@ opal_accelerator_base_module_t opal_accelerator_rocm_module = mca_accelerator_rocm_check_addr, mca_accelerator_rocm_create_stream, + mca_accelerator_rocm_destroy_stream, + mca_accelerator_rocm_synchronize_stream, + mca_accelerator_rocm_stream_wait_event, mca_accelerator_rocm_create_event, + mca_accelerator_rocm_destroy_event, mca_accelerator_rocm_record_event, mca_accelerator_rocm_query_event, @@ -59,6 +79,13 @@ opal_accelerator_base_module_t opal_accelerator_rocm_module = mca_accelerator_rocm_mem_release, mca_accelerator_rocm_get_address_range, + mca_accelerator_rocm_is_ipc_enabled, + mca_accelerator_rocm_get_ipc_handle, + mca_accelerator_rocm_open_ipc_handle, + mca_accelerator_rocm_get_ipc_event_handle, + mca_accelerator_rocm_open_ipc_event_handle, + mca_accelerator_rocm_close_ipc_handle, + mca_accelerator_rocm_host_register, mca_accelerator_rocm_host_unregister, @@ -152,6 +179,23 @@ static void mca_accelerator_rocm_stream_destruct(opal_accelerator_rocm_stream_t } } +static int mca_accelerator_rocm_destroy_stream(opal_accelerator_stream_t *stream) +{ + mca_accelerator_rocm_stream_destruct(stream); + return OPAL_SUCCESS; +} + +static int mca_accelerator_rocm_synchronize_stream(opal_accelerator_stream_t *stream) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_rocm_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + OBJ_CLASS_INSTANCE( opal_accelerator_rocm_stream_t, opal_accelerator_stream_t, @@ -199,6 +243,12 @@ static void mca_accelerator_rocm_event_destruct(opal_accelerator_rocm_event_t *e } } +static int mca_accelerator_rocm_destroy_event(opal_accelerator_event_t *event) +{ + mca_accelerator_rocm_event_destruct(event); + return OPAL_SUCCESS; +} + OBJ_CLASS_INSTANCE( opal_accelerator_rocm_event_t, opal_accelerator_event_t, @@ -438,6 +488,40 @@ static int mca_accelerator_rocm_get_address_range(int dev_id, const void *ptr, v return OPAL_SUCCESS; } +static bool mca_accelerator_rocm_is_ipc_enabled(void) +{ + return false; +} + +static int mca_accelerator_rocm_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_rocm_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_rocm_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_rocm_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_rocm_close_ipc_handle(int dev_id, void *dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + static int mca_accelerator_rocm_host_register(int dev_id, void *ptr, size_t size) { if (NULL == ptr && size > 0) { diff --git a/opal/mca/accelerator/ze/accelerator_ze_module.c b/opal/mca/accelerator/ze/accelerator_ze_module.c index 5696359104e..712ab19e2a3 100644 --- a/opal/mca/accelerator/ze/accelerator_ze_module.c +++ b/opal/mca/accelerator/ze/accelerator_ze_module.c @@ -22,8 +22,13 @@ /* Accelerator API's */ static int mca_accelerator_ze_check_addr(const void *addr, int *dev_id, uint64_t *flags); static int mca_accelerator_ze_create_stream(int dev_id, opal_accelerator_stream_t **stream); +static int mca_accelerator_ze_destroy_stream(opal_accelerator_stream_t *stream); +static int mca_accelerator_ze_synchronize_stream(opal_accelerator_stream_t *stream); +static int mca_accelerator_ze_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event); static int mca_accelerator_ze_create_event(int dev_id, opal_accelerator_event_t **event); +static int mca_accelerator_ze_destroy_event(opal_accelerator_event_t *event); static int mca_accelerator_ze_record_event(int dev_id, opal_accelerator_event_t *event, opal_accelerator_stream_t *stream); static int mca_accelerator_ze_query_event(int dev_id, opal_accelerator_event_t *event); @@ -38,6 +43,17 @@ static int mca_accelerator_ze_mem_release(int dev_id, void *ptr); static int mca_accelerator_ze_get_address_range(int dev_id, const void *ptr, void **base, size_t *size); +static bool mca_accelerator_ze_is_ipc_enabled(void); +static int mca_accelerator_ze_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle); +static int mca_accelerator_ze_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr); +static int mca_accelerator_ze_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle); +static int mca_accelerator_ze_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event); +static int mca_accelerator_ze_close_ipc_handle(int dev_id, void *dev_ptr); + static int mca_accelerator_ze_host_register(int dev_id, void *ptr, size_t size); static int mca_accelerator_ze_host_unregister(int dev_id, void *ptr); @@ -53,7 +69,12 @@ opal_accelerator_base_module_t opal_accelerator_ze_module = .check_addr = mca_accelerator_ze_check_addr, .create_stream = mca_accelerator_ze_create_stream, + .destroy_stream = mca_accelerator_ze_destroy_stream, + .synchronize_stream = mca_accelerator_ze_synchronize_stream, + .stream_wait_event = mca_accelerator_ze_stream_wait_event, + .create_event = mca_accelerator_ze_create_event, + .destroy_event = mca_accelerator_ze_destroy_event, .record_event = mca_accelerator_ze_record_event, .query_event = mca_accelerator_ze_query_event, @@ -65,6 +86,13 @@ opal_accelerator_base_module_t opal_accelerator_ze_module = .mem_release = mca_accelerator_ze_mem_release, .get_address_range = mca_accelerator_ze_get_address_range, + .is_ipc_enabled = mca_accelerator_ze_is_ipc_enabled, + .get_ipc_handle = mca_accelerator_ze_get_ipc_handle, + .open_ipc_handle = mca_accelerator_ze_open_ipc_handle, + .get_ipc_event_handle = mca_accelerator_ze_get_ipc_event_handle, + .open_ipc_event_handle = mca_accelerator_ze_open_ipc_event_handle, + .close_ipc_handle = mca_accelerator_ze_close_ipc_handle, + .host_register = mca_accelerator_ze_host_register, .host_unregister = mca_accelerator_ze_host_unregister, @@ -233,6 +261,23 @@ static void mca_accelerator_ze_stream_destruct(opal_accelerator_ze_stream_t *str } } +static int mca_accelerator_ze_destroy_stream(opal_accelerator_stream_t *stream) +{ + mca_accelerator_ze_stream_destruct(stream); + return OPAL_SUCCESS; +} + +static int mca_accelerator_ze_synchronize_stream(opal_accelerator_stream_t *stream) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_ze_stream_wait_event(opal_accelerator_stream_t *stream, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + OBJ_CLASS_INSTANCE( opal_accelerator_ze_stream_t, opal_accelerator_stream_t, @@ -293,6 +338,12 @@ static void mca_accelerator_ze_event_destruct(opal_accelerator_ze_event_t *event } } +static int mca_accelerator_ze_destroy_event(opal_accelerator_event_t *event) +{ + mca_accelerator_ze_event_destruct(event); + return OPAL_SUCCESS; +} + OBJ_CLASS_INSTANCE( opal_accelerator_ze_event_t, opal_accelerator_event_t, @@ -571,6 +622,40 @@ static int mca_accelerator_ze_get_address_range(int dev_id, const void *ptr, voi return OPAL_SUCCESS; } +static bool mca_accelerator_ze_is_ipc_enabled(void) +{ + return false; +} + +static int mca_accelerator_ze_get_ipc_handle(int dev_id, void *dev_ptr, + opal_accelerator_ipc_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_ze_open_ipc_handle(int dev_id, opal_accelerator_ipc_handle_t *handle, + void **dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_ze_get_ipc_event_handle(opal_accelerator_event_t *event, + opal_accelerator_ipc_event_handle_t *handle) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_ze_open_ipc_event_handle(opal_accelerator_ipc_event_handle_t *handle, + opal_accelerator_event_t *event) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + +static int mca_accelerator_ze_close_ipc_handle(int dev_id, void *dev_ptr) +{ + return OPAL_ERR_NOT_IMPLEMENTED; +} + /* * ZE doesn't have explicit host memory registration functions */