【发布时间】:2016-03-09 11:16:09
【问题描述】:
具体来说,如果我有一个从 OpKernel 继承的 Op,并且在其中我有一些声明为 static 的私有成员。我可以安全地假设这个内核的所有实例都将访问同一个静态成员吗?所有内核是否都放置在同一地址空间/进程中的同一台机器/工作者(可能是不同的 CPU)上?显然,这不适用于在分布式设置中映射到不同机器的内核。例如
class MyOpKernel : public OpKernel {
public:
explicit MyOpKernel(OpKernelConstruction* ctx) : OpKernel(ctx) {
if (!BigRODataObject)
BigRODataObject = some_init_func();
}
void Compute( ... ) { // uses BigRODataObject }
private:
static BRODOType* BigRODataObject = null;
};
最后,在实现 OpKernel 时,有没有比static 更好的方法来在同类型的 OpKernel 之间共享内存中的一块只读数据?数据太大,无法在内存中容纳多个副本。
【问题讨论】:
标签: tensorflow