我已经使用GPU CUDA内核在Tensorflow中实现了一个相当复杂的新Op.这个Op需要大量动态内存分配变量,这些变量不是张量的,并且在op完成后被释放,更具体地说它涉及使用散列表.
现在我正在使用cudaMalloc(),cudaFree()但我注意到Tensorflow有自己的类型Eigen::GPUDevice,它具有在GPU上分配和释放内存的能力.
我的问题:
Eigen::GPUDevice用于管理GPU内存是最佳做法;Eigen::GPUDevice而不是CUDA API,我"自动"启用多GPU支持,因为不同的GPUDevices可以传递给Op;CPUDevice类型也管理内存而不是使用C++语法(即auto var = new int[100]; delete[] var)