如何插入张量流中使用的cuda运行时API?

时间:2019-03-25 22:55:32

标签: python c++ tensorflow cuda ld

我已经在具有CUDA 10和合适的GPU的x86-64 Ubuntu计算机上安装了tensorflow(不是从源代码)。我的目标是拦截(使用LD_PRELOAD)任何张量流应用程序的CUDA运行时API。不幸的是,对于我的用例,我无法为不是x86-64的目标计算机从源构建tensorflow。

我能够截获我用C ++编写的测试程序对cudaLaunchKernel进行的调用,该程序动态加载cuda运行时API,并且在第一次检查时,我认为python应该类似地动态加载相同的cuda。所以-我很困惑,因为LD_PRELOAD不适用于启用了cuda的正常安装的tensorflow应用程序。

我希望tensorflow中的cudaLaunchKernel调用应该被LD_PRELOAD的中介库拦截。这是正确的吗?

1 个答案:

答案 0 :(得分:1)

看来Tensorflow编写了stream_executor以避免必须使用CUDA的运行时API,而是使用开放源代码将CUDA的Driver API(cuLaunchKernel)本身包装起来。 在此引用 Pull Request到Tensorflow以允许插入CUDA的运行时API,但该拒绝。同样,在TF源代码中(请参见here),我们看到正在使用cu * / driver API代替运行时API。