华为采用机器翻译与人工审校相结合的方式将此文档翻译成不同语言,希望能帮助您更容易理解此文档的内容。 请注意:即使是最好的机器翻译,其准确度也不及专业翻译人员的水平。 华为对于翻译的准确性不承担任何责任,并建议您参考英文文档(已提供链接)。
使用约束
使用约束
- 不支持使用fork函数创建多个进程,且在进程中调用AscendCL接口的场景,否则进程运行时会报错或者卡死 。
- 不支持在aclrtMemcpyAsync、aclrtMemsetAsync接口等异步操作内存过程中使用fork以及封装了fork的函数,如system、posix_spawnp等,否则会导致进程运行时会报错,甚至卡死等不可预期的错误。
- 对于创建类接口(例如:aclrtCreateStream、aclrtCreateEvent、aclCreateDataBuffer等),用户调用该类接口创建对应的资源后,资源使用完成后,建议及时调用对应的销毁类接口(例如:aclrtDestroyStream、aclrtDestroyEvent、aclDestroyDataBuffer等),否则,程序可能会异常。
- 对于销毁类接口(例如:aclrtDestroyStream、aclrtDestroyEvent、aclrtFree、aclDestroyDataBuffer等),用户调用该类接口后,不能继续使用已释放或销毁的资源,建议用户调用销毁类接口后,将相关资源设置为无效值(例如,置为NULL)。
- 一个Device上最多只能支持64个用户进程。
- 使用AscendCL提供的内存申请接口(例如aclrtMalloc、acldvppMalloc等)申请内存后,为确保内存中不会有脏数据,建议在使用内存前先调用aclrtMemset或aclrtMemsetAsync接口先清空内存,例如aclrtMemset(devBufferPtr, devBufferSize, 0, devBufferSize)。