花了一周多时间,总算是编译好了,但仍然还有带下划线的五个项目编译失败,之前有看到网上说是配置的问题,但是按其方法并没有解决,但是重要的dll和lib都编译完成了,就不想再去折腾了,好了不废话了,我将自己的编译艰辛路程记录下,希望能帮到大家,第一次写博客,各位请见谅。
一 编译环境:
1 vs2017community 注意: 这里用平台工具集是用的vs 2015 (v140)
2 cuda9.0和cudnn7.1 cuda这个是比较折腾的,cuda更新速度赶不上vs,后面详细介绍
3 下载swigwin最新版即可,这个比较简单,下载解压就行,到时在cmake中添加路径
4 cmake-gui版本最近的都行,当时我这边报错,以为是cmake版本问题,后面证明没关系,安装时添加到系统环境变量中
5 git 下载安装添加到环境变量中
6 tensorflow_gpu_1.8,在www.github.com/tensorflow中选择下载对应分支
二 关于以上环境安装的问题
1 cuda版本和vs版本问题
vs2017和vs2015没有影响,重要的是平台工具集一定要选择vs2015 (v140);目前cuda9.0 cuda9.2都不支持vs2017(v141)
2 cuda和cudnn
cuda安装一路默认就行了,cudnn下载下来不用安装,只需要将其bin,lib,include三个文件夹下面的内容拷贝到cuda对应文件夹下面
cuda安装完成后需要将其加入到环境变量,在命令行中输入set cuda大概能看到这些信息
另外可以输入nvcc -V查看cuda版本信息
三 使用cmake-gui生成sln工程
1 首先在tensorflow-r1.8/tensorflow/contrib/cmake文件夹下面新建一个文件夹build
2 打开cmake-gui,输入对应路径,如图 注意:在打开cmake之前最好先在命令行运行下set perferredToolArchitecture=x64
3 点击Add Entry添加我们之前下载的swigwin执行文件路径
4 configure选择生成器,这里选择vs 14 2015 win64 点击完成就出现如下图
在这里我们需要勾选 tensorflow_BUILD_SHARED_LIB和ENABLE_GPU,然后点击生成,在build目录下就将生成274个待编译的项目了。这里需要说明下,最好不要去掉默认的几个选项,去掉后可能不通过,其中GRPC_SUPPORT是最坑的了,这是google三方的文件,需要google上下载,但是去掉后会存在部分编译失败的情况,所以尽量网络通畅才不会那么费事儿
四 编译tensorflow
在用vs2017打开tensorflow.snl工程前,再在命令行输入set perferredToolArchitecture=x64确保是用64位编译器,另外网上普遍说的更改cmakelist第87到93行,实测完全可以忽略,不用更改。现在最重要的一点也是编译的关键就是需要能保证网络通畅,不仅需要下载gitbub上文件,还需要能访问google,我一直编译不通过全是因为网络问题,开始不懂,到处去找原因,后面能上google了,编译很顺利,啥也不用改。
打开tensorflow.snl后,先选择release x64编译吧,debug据说还有坑,直接选中all_build点击生成,漫长的等待,最终会在build/Release文件夹下面生成相应的库文件,如下图: