问题描述
Tensorflow lite 中的 nnapi 委托使用共享内存作为图的输入和输出张量。但是共享内存池的名称是硬编码的("input_pool"
和 "otput_pool"
):
// Create shared memory pool for inputs and outputs.
nn_input_memory_.reset(
new NNMemory(nnapi_,"input_pool",total_input_byte_size));
nn_output_memory_.reset(
new NNMemory(nnapi_,"output_pool",total_output_byte_size));
现在如果执行多个带有 nnapi 委托的 tensorflow lite 实例会发生什么?根据我的理解,它们都将映射并使用相同的共享内存池。这不会导致竞争条件吗?
解决方法
为共享名称提供的名称仅用作标签。在创建两个不同的共享内存区域时使用相同的名称不会导致使用相同的内存。参见例如 the case where no name is provided 并且所有区域都使用名称“none”创建