我有一个针对TensorFlow的自定义操作,该操作得益于并行进行某些计算。 但是,一个用户在使用此并行计算时报告了crash(在我的计算机上,一切正常)。
void Compute(OpKernelContext* context) override { // output tensor Tensor* outputTensor = nullptr; OP_REQUIRES_OK(context, context->allocate_output(0, TensorShape({maxI, maxJ}), &outputTensor)); auto outputMapped = outputTensor->tensor(); // do some computations for index (i, j) and write result to index (i, j) of output tensor // do this for each (i, j) combination outputMapped(i, j) = result; // computing the result for each index (i, j) in parallel would speed up the computation // Question: is it allowed to write to outputMapped(i, j) from different threads without synchronization? }
这是相关代码:
我浏览了TF docs,但只提到TF本身可以并行调用Compute(...)。但是我找不到有关张量的线程安全性的任何信息。有人对此有更多信息吗?