如何加快在GP上运行的自定义TensorFlow op?

时间:2018-07-01 22:46:18

标签: tensorflow

我已经根据TF的tutorial创建了一些TF自定义操作,我想加快这些操作。

我已经看到TF的各种操作(例如Con2D,MatMul,Pooling等)的实现使用DeviceMemory对象封装张量数据以传递到目标设备(GPU),然后调用不同的包装器,最终使用这些包装器启动内核“ Stream::ThenLaunch”。

另一种实现类型(OpenAI's block sparse conv2d),在将CUdeviceptr分配给不同的内核参数后,选择使用cuLaunchKernel启动内核。

在我的实现中,当我注册TF Ops时,输入/输出张量大概在设备上,因为我没有将它们设置为位于主机上(这是正确的吗?)。

如果在主机上设置了输入/输出张量,然后将其复制到GPU内核使用的设备(cudaMalloc / cudaMemCpy),然后将结果复制到主机,那么在速度方面是否会有区别?

如果我使用TF的方法,将DeviceMemory类用作参数并使用Stream :: ThenLaunch方法启动内核,或者使用OpenAI的CUdeviceptr和cuLaunchKernel方法,我的内核运行得更快吗?

谢谢

0 个答案:

没有答案