在Microsoft Windows上从源码构建SINGA的过程有四个部分:安装依赖关系、构建SINGA源码、(可选择)安装python模块和(可选择)运行单元测试。
你可以创建一个文件夹来构建依赖关系。
使用到的依赖项有:
编译器和IDE:
CMake
SWIG
Protocol Buffers
Openblas
cmake -G "Visual Studio 15 2017 Win64"
Google glog
下载SINGA源代码
编译protobuf文件:
mkdir python_out protoc.exe *.proto --python_out python_out
为C++和Python生成swig接口:在src/api目录中:
swig -python -c++ singa.i
生成SINGA的Visual Studio解决方案:在SINGA源码根目录中:
mkdir build
cd build
调用 cmake 并添加系统路径,类似于下面的例子:
cmake -G "Visual Studio 15 2017 Win64" ^ -DGLOG_INCLUDE_DIR="D:/WinSinga/dependencies/glog-0.3.5/src/windows" ^ -DGLOG_LIBRARIES="D:/WinSinga/dependencies/glog-0.3.5/x64/Release" ^ -DCBLAS_INCLUDE_DIR="D:/WinSinga/dependencies/openblas-0.2.20/lapack-netlib/CBLAS/include" ^ -DCBLAS_LIBRARIES="D:/WinSinga/dependencies/openblas-0.2.20/lib/RELEASE" ^ -DProtobuf_INCLUDE_DIR="D:/WinSinga/dependencies/protobuf-2.6.1/src" ^ -DProtobuf_LIBRARIES="D:/WinSinga/dependencies/protobuf-2.6.1/vsprojects/x64/Release" ^ -DProtobuf_PROTOC_EXECUTABLE="D:/WinSinga/dependencies/protoc-2.6.1-win32/protoc.exe" ^ ..
在Visual Studio中打开生成的解决方案。
将构建设置改为Release和x64。
将src/api中的singa_wrap.cxx文件添加到singa_objects项目中。
在 singa_objects 项目中,打开 Additional Include Directories。
添加Python的include路径。
添加numpy的include路径。
添加protobuf的include路径。
在 singa_objects 项目的预处理程序定义中, 添加 USE_GLOG。
构建singa_objects项目。
在singa项目中:
构建singa项目
将build/python/setup.py中的_singa_wrap.so
改为_singa_wrap.pyd
。
将src/proto/python_out
中的文件复制到build/python/singa/proto
中。
(可选)创建并激活一个虚拟环境:
mkdir SingaEnv virtualenv SingaEnv SingaEnv\Scripts\activate
进入build/python文件夹,运行:
python setup.py install
将 _singa_wrap.pyd、libglog.dll 和 libopenblas.dll 添加到路径中,或者将它们复制到 python site-packages 中的 singa package 文件夹中。
通过运行如下命令,来验证SINGA是否安装成功:
python -c "from singa import tensor"
构建过程的视频教程可以在这里找到:
在测试文件夹中,生成Visual Studio解决方案:
cmake -G "Visual Studio 15 2017 Win64"
在Visual Studio中打开生成的解决方案。
更改build settings为Release和x64。
构建glog项目。
在test_singa项目中:
构建test_singa项目。
将libglog.dll和libopenblas.dll添加到路径中,或者将它们复制到test/release文件夹中,使其可用。
单元测试可以通过如下方式执行:
test_singa.exe
单元测试的视频教程可以在这里找到:
在本节中,我们将扩展前面的步骤来启用GPU。
除了上面第1节的依赖关系外,我们还需要以下内容:
CUDA
从 https://developer.nvidia.com/cuda-downloads 下载一个合适的版本,如9.1。确保已经安装了Visual Studio集成模块。
cuDNN
从 https://developer.nvidia.com/cudnn 下载一个合适的版本,如7.1。
cnmem:
cmake -G "Visual Studio 15 2017 Win64"
cmake -G "Visual Studio 15 2017 Win64" ^ -DGLOG_INCLUDE_DIR="D:/WinSinga/dependencies/glog-0.3.5/src/windows" ^ -DGLOG_LIBRARIES="D:/WinSinga/dependencies/glog-0.3.5/x64/Release" ^ -DCBLAS_INCLUDE_DIR="D:/WinSinga/dependencies/openblas-0.2.20/lapack-netlib/CBLAS/include" ^ -DCBLAS_LIBRARIES="D:/WinSinga/dependencies/openblas-0.2.20/lib/RELEASE" ^ -DProtobuf_INCLUDE_DIR="D:/WinSinga/dependencies/protobuf-2.6.1/src" ^ -DProtobuf_LIBRARIES="D:\WinSinga/dependencies/protobuf-2.6.1/vsprojects/x64/Release" ^ -DProtobuf_PROTOC_EXECUTABLE="D:/WinSinga/dependencies/protoc-2.6.1-win32/protoc.exe" ^ -DCUDNN_INCLUDE_DIR=D:\WinSinga\dependencies\cudnn-9.1-windows10-x64-v7.1\cuda\include ^ -DCUDNN_LIBRARIES=D:\WinSinga\dependencies\cudnn-9.1-windows10-x64-v7.1\cuda\lib\x64 ^ -DSWIG_DIR=D:\WinSinga\dependencies\swigwin-3.0.12 ^ -DSWIG_EXECUTABLE=D:\WinSinga\dependencies\swigwin-3.0.12\swig.exe ^ -DUSE_CUDA=YES ^ -DCUDNN_VERSION=7 ^ ..
为C++和Python生成swig接口。在src/api目录中:
swig -python -c++ singa.i
在Visual Studio中打开生成的解决方案
将build settings改为Release和x64
创建一个新的Visual Studio项目,类型为 “CUDA 9.1 Runtime”。给它起个名字,比如singa-kernel。
该项目自带一个名为kernel.cu的初始文件,从项目中删除这个文件。
添加这个文件:src/core/tensor/math_kernel.cu。
在项目设置中。
建立singa-kernel项目
在singa项目中:
构建singa项目。
将 build/python/setup.py 中的 _singa_wrap.so 改为 _singa_wrap.pyd。
将 src/proto/python_out 中的文件复制到 build/python/singa/proto 中。
(可选) 创建并激活虚拟环境:
mkdir SingaEnv virtualenv SingaEnv SingaEnv\Scripts\activate
进入build/python文件夹,运行:
python setup.py install
将 _singa_wrap.pyd, libglog.dll, libopenblas.dll, cnmem.dll, CUDA Runtime (例如 cudart64_91.dll) 和 cuDNN (例如 cudnn64_7.dll) 添加到路径中,或者将它们复制到 python site-packages 中的 singa package 文件夹中。
通过运行如下命令来验证SINGA是否已经安装:
python -c "from singa import device; dev = device.create_cuda_gpu()"
这个部分的视频教程可以在这里找到:
在测试文件夹中,生成Visual Studio解决方案:
cmake -G "Visual Studio 15 2017 Win64"
在Visual Studio中打开生成的解决方案,或者将项目添加到步骤5.2中创建的singa解决方案中。
将build settings改为Release和x64。
构建 glog 项目。
在test_singa项目中:
构建.
将libglog.dll、libopenblas.dll、cnmem.dll、cudart64_91.dll和cudnn64_7.dll添加到路径中,或将它们复制到test/release文件夹中,使其可用。
单元测试可以通过如下方式执行:
从命令行:
test_singa.exe
从 Visual Studio:
运行单元测试的视频教程可以在这里找到: