Constraints

Table 1 Restrictions

Category

Restriction

Low power consumption

Before the system enters the hibernation mode, ensure that services such as AI inference and media data processing are not delivered, or exit service processes. After the system is woken up successfully, continue to deliver services or restart service processes.

Processes

  • Do not use the fork function and functions that encapsulate fork (such as system and posix_spawnp) to create multiple acl API caller processes, as this may lead to errors or cause processes to stop responding at runtime.
  • For Atlas training product, in PM scenarios, a device supports a maximum of 64 user processes, and the host supports a maximum of 64 processes (number of devices x 64). In VM scenarios, a device supports a maximum of 32 user processes, and the host supports a maximum of 32 processes (number of devices x 32).
  • For Atlas inference product, in PM scenarios, a device supports a maximum of 64 user processes, and the host supports a maximum of 64 processes (number of devices x 64). In VM scenarios, a device supports a maximum of 32 user processes, and the host supports a maximum of 32 processes (number of devices x 32).
  • For Atlas 200I/500 A2 inference product, a device supports a maximum of 64 user processes, and the host supports a maximum of 64 processes multiplied by the number of devices.
  • For Atlas A2 training product/Atlas A2 inference product, a maximum of 63 user processes can be supported on a device, and a maximum of 63 processes can be supported on a host.
  • Atlas A3 training product/Atlas A3 inference product: A device supports a maximum of 63 user processes, and a host supports a maximum of 63 processes multiplied by the number of devices.
  • Atlas 350 Accelerator Card: A device supports a maximum of 64 user processes, and a host supports a maximum of 64 processes multiplied by the number of devices.

Allocation and deallocation APIs

  • Use the allocation and deallocation APIs in pairs (for example, the aclrtCreateStream and aclrtDestroyStream pair, the aclrtCreateEvent and aclrtDestroyEvent pair, and the aclCreateDataBuffer and aclDestroyDataBuffer pair). Ensure that any allocations that are no longer needed are destroyed in a timely manner, as failure to do so may impact the app's ability to function properly.
  • Once a deallocation API (such as aclrtDestroyStream, aclrtDestroyEvent, aclrtFree, or aclDestroyDataBuffer) is called, the allocation is destroyed and is no longer available. Consequently, it is a good practice to set the allocation to an invalid value (for example, NULL) in subsequent API calls.

Memory

  • When developing service applications on Atlas inference product, do not write data to the same memory address for multiple operations. Otherwise, hardware exceptions may occur.
  • Do not use fork or fork-encapsulated functions (such as system and posix_spawnp) for asynchronous memory manipulations (by using calls to APIs such as aclrtMemcpyAsync and aclrtMemsetAsync). Doing so may result in unexpected errors at runtime and may possibly cause the process to stop responding.
  • After the memory allocation interface (such as aclrtMalloc) is used to apply for memory, you are advised to call the aclrtMemset or aclrtMemsetAsync interface (such as aclrtMemset(devBufferPtr, devBufferSize, 0, devBufferSize)) to clear the memory before using the memory to ensure that no dirty data exists in the memory.
  • In the Ascend RC form, if an application involves memory allocation APIs such as aclrtMalloc, acldvppMalloc, and hi_mpi_dvpp_malloc and runs on the device, the application may be suspended and wait for memory resources when the memory is insufficient by default, you can enable some configurations (for example, enable_oom_killer) provided by the OS as required. In this way, applications automatically exit when the memory is insufficient.
    To activate enable_oom_killer, log in to the device, go to the /proc/sys/vm directory, and set enable_oom_killer as the root user. The following is a command example, where, 1 indicates activated, and 0 indicates deactivated.
    echo 1 > enable_oom_killer

Migrating the AI processor-> Application of the Old Version to the AI processor Application of the New Version

You need to convert the model and build the application again on the migrated AI processor version. Otherwise, the application may be abnormal.