Restrictions
- Before the system enters the hibernation mode, ensure that the running processes such as the AI inference and media data processing exit first. After the system is wakened up successfully, continue to process the services.
- Do not use the fork function to create multiple pyACL API caller processes, as this may lead to errors or cause processes to stop responding at runtime.
- 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 acl.rt.memcpy_async and acl.rt.memset_async). Doing so will result in unexpected errors at runtime and may possibly cause the process to stop responding.
- For allocation APIs (such as acl.rt.create_stream, acl.rt.create_event, and acl.create_data_buffer), the corresponding destruction APIs (such as acl.rt.destroy_stream, acl.rt.destroy_event, and acl.destroy_data_buffer) must be called to destroy the allocations in a timely manner. Otherwise, the app may not function properly.
- For destruction APIs (such as acl.rt.destroy_stream, acl.rt.destroy_event, acl.rt.free, and acl.destroy_data_buffer), the released or destroyed resources are no longer available after these APIs are called. You are advised to set the released or destroyed resources to invalid values (for example, None) after calling these APIs.
- Atlas 200/300/500 Inference Product: For physical machines, a device supports a maximum of 64 user processes, and a host supports a maximum of 64 processes multiplied by the number of devices. For virtual machines, a device supports a maximum of 32 user processes, and a host supports a maximum of 32 processes multiplied by the number of devices.
- Atlas Training Series Product: For physical machines, a device supports a maximum of 64 user processes, and a host supports a maximum of 64 processes multiplied by the number of devices. For virtual machines, a device supports a maximum of 32 user processes, and a host supports a maximum of 32 processes multiplied by the number of devices.
- After memory is allocated by a call to the pyACL memory allocation API (such as acl.rt.malloc or acl.media.dvpp_malloc) and before you use the allocated memory, you are advised to call acl.rt.memset or acl.rt.memset_async to initialize the memory, for example, acl.rt.memset(dev_buffer_ptr, dev_buffer_size, 0, dev_buffer_size).