无法发布有问题的代码,但我会尽力描述自己的情况。
我有一个使用Tensorflow的Autograph定义的自定义tensorflow操作。它包含许多由签名自动转换的张量流控制流操作。我大量运行了此操作,并意识到它在GPU上的运行速度非常慢,因为它没有通过map_fn进行并行化,但是在CPU上它的运行速度非常快并且正在并行化。我确认CPU正在并行化,而GPU不是通过粘贴tf.Print以及该操作的开始和结束,如果一次仅运行一个操作,则“开始”和“结束”将按顺序显示,否则他们不会。
总而言之,有什么想法可以解释为什么我的操作会在CPU上自动并行化,而在GPU上却没有考虑到它具有很多控制流操作这一事实呢?我也已经尝试过手动设置map_fn的“ parallel_iterations”参数。
谢谢。