谷歌官方的 TensorFlow 1.15 是不支持 NVIDIA 30 系列显卡的,如果在 30 系列显卡上运行,程序会卡在那里,无法正常运行。

为此,NVIDIA 在原始 TensorFlow 的基础上开发出来支持 30 系列显卡的 nvidia-tensorflow,NVIDIA 只提供了对 Linux 的支持,并不能在 Windows 上编译运行。

Linux 下安装:

pip install --user nvidia-pyindex
pip install --user nvidia-tensorflow[horovod]

但我还需要在 Windows 下运行,于是在 NVIDIA 的基础上改了一版 tensorflow,按照 README 写的编译安装即可。

在此记录些修改过程遇到的一些问题。

一、出现引入 winsock2.h 的同时又引入了 winsock.h,导致各种宏定义冲突。

原因是有些编译参数(如宏定义)没有被送到编译器。

没有送到编译的原因是 msvc_wrapper_fo_nvcc.py 把多个参数合起来,一次性的作为 --compiler-options 传递给 nvcc,但 nvcc 并不会把这些合起来的参数拆分了传给 cl,导致 cl 认为是一个参数,而不是多个参数,而忽略掉了。

二、找不到依赖的 CUDNN 头文件

这个问题在我的两台电脑上表现不一样,一台有这个问题,另外一台并没有这个问题。GitHub 上有类似的提问

原因没找到。解决方案是把项目内所有文件内的”gpus/cudnn”替换为”gpus/cuda/include”。


  1. https://github.com/NVIDIA/tensorflow
  2. https://gitee.com/icedream2linxi/tensorflow
  3. Build from Souce Failed Dependencies cudnn_stub.cc

发表回复

您的电子邮箱地址不会被公开。