aclrtIpcMemImportByKey

Applicability

Product

Supported

Atlas A3 training products/Atlas A3 inference products

Atlas A2 training products/Atlas A2 inference products

Atlas 200I/500 A2 inference products

Atlas inference products

Atlas training products

Description

Imports key information in the current process and returns the device memory address pointer that can be used by this process.

This API must work with other APIs to implement memory sharing. For details, see the description of aclrtIpcMemGetExportKey.

Prototype

aclError aclrtIpcMemImportByKey(void **devPtr, const char *key, uint64_t flags)

Parameters

Parameter

Input/Output

Description

devPtr

Output

Pointer to the device memory address.

key

Input

Key of the shared memory.

First call aclrtIpcMemGetExportKey to obtain the shared memory key and then pass it as an input.

flags

Input

Whether to enable data exchange between two devices.

The value can be either of the following macros:

  • ACL_RT_IPC_MEM_IMPORT_FLAG_DEFAULT: Default value, which means disabling data exchange between two devices.

    If the parameter is set to this value, call the aclrtDeviceEnablePeerAccess API separately to enable data exchange between two devices.

  • ACL_RT_IPC_MEM_IMPORT_FLAG_ENABLE_PEER_ACCESS: Enables data exchange between two devices.

    If you set the parameter to this value, you do not need to call the aclrtDeviceEnablePeerAccess API.

The macros are defined as follows:

#define ACL_RT_IPC_MEM_IMPORT_FLAG_DEFAULT            0x0UL
#define ACL_RT_IPC_MEM_IMPORT_FLAG_ENABLE_PEER_ACCESS 0x1UL

Returns

0 on success; else, failure. For details, see aclError.