Compile and install Caffe with CUDA and cuDNN support on windows from source

Building the solution

Building the solution

Now it is time to compile Caffe from source.

Loading the solution in Visual Studio 2013

Start your Visual Studio 2013 (you may need to do this as Administrator if you faced permission problems for accessing file in the C: drive). Now from File -> Open -> Project/Solutoin load the Caffe.sln file located in C:\projects\caffe\windows folder. After the solution has been loaded, the Solution Explorer window should look like the following image:

caffe-visual-studio-2013-solution-explorer

Solution Explorer window when Caffe is loaded.

Editing compile options

To tell Visual Studio what to build for us (e.g. CPU, GPU, cuDNN, Matlab and Python support) you only need to edit the CommonSettings.props (highlighted in the above image) file. I personally do not care about the Matlab and Python wrappers, but if you would like to have them, follow the guide of the authors:

Python

To build Caffe Python wrapper set PythonSupport to true in .\windows\CommonSettings.props. Download Miniconda 2.7 64-bit Windows installer from Miniconda website. Install for all users and add Python to PATH (through installer).

Run the following commands from elevated command prompt:

Remark

After you have built solution with Python support, in order to use it you have to either:

  • set PythonPath environment variable to point to <caffe_root>\Build\x64\Release\pycaffe, or
  • copy folder <caffe_root>\Build\x64\Release\pycaffe\caffe under <python_root>\lib\site-packages.

Matlab

To build Caffe Matlab wrapper set MatlabSupport to true and MatlabDir to the root of your Matlab installation in.\windows\CommonSettings.props.

Remark

After you have built solution with Matlab support, in order to use it you have to:

  • add the generated matcaffe folder to Matlab search path, and
  • add <caffe_root>\Build\x64\Release to your system path.

Back to our own journey, to compile Caffe with CUDA and cuDNN you need to make the following changes in the CommonSettings.props file:

  • Set the <CpuOnlyBuild> to false
  • Set the <UseCuDnn> to true
  • Set the correct GPU Architecture by editing the <CudaArchitecture> tag. In my case, I am using a GTX 770 graphics card and I am good with these options: compute_30,sm_30  You can add pairs of compute _xx and sm_xx architectures separated by ‘;‘ characters.  If you are not sure what shader model and compute capabilities your graphics card has, you can learn more at nVIDIA’s specification page for your graphics card.
  • Give the following path for the <CuDnnPath> option: C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v7.5 because as you can see further more in this file, it always appends \cuda\ to this directory.

To make it short, your first few lines of CommonSettings.props file should look like this:

Now, make sure that your build mode is set to Debug and the target architecture is set to x64. Then just press F6 or from Build menu select the Build Solution option. After about 20 minutes (on a Core i5/4670) you should be done!

At the end of build process, the resulted executable and library files will be generated in C:\projects\caffe\Build\x64\Debug  folder. Now you can start using Caffe! I also recommend to add this directory to your Path environment variable.

I am planning to run a simple image pattern recognition using Caffe. If I succeeded, I will add a tutorial here in my website! If you faced any problems, let me know in the comment section or in the dedicated forum topic.

Saeid Yazdani

An Electronics Engineer with passion in Embedded Systems, Wireless Sensor Networks, Assembly, Desktop and Mobile Development, Web Development and generally anything that has to do with hardware and software of any kind!

15 Comments:

  1. Vignesh Kumar

    Thanks a lot, this helped me to install caffe (I was not able to do it from other repositories which claim to be the windows port). I do not have nvidia graphics card so I went CPU only.

  2. I’d like to thank you for this quick but expressive guide, it was really helpful. I’d like just to ask something, does this port support the newest version of CUDA (8.0) for Pascal architectures and CuDNN 5.0 or 5.1? Thanks again!

    • I believe not, at least for the Windows platform…CUDA 8 is quite new and it will take a while (maybe well over a year) for Caffe to catch up. But I believe there has been some activities on Linux side of things according to BLVC on GitHub

  3. Caffe can be compiled with either Make or CMake. Make is officially supported while CMake is supported by the community.

    • I did not have any success on Windows to build using CMAKE, I always got lots of errors in CMAKE. If you know the correct procedure please let us know!

  4. Hello Saeid,
    Thank you very much for the nice explanation.
    I have successfully installed CUDA Toolkit and VS 2013. After that copied the ‘cuda’ folder in cuDNN to C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0

    I couldn’t understand what to do after. Can you please help to complete the installation as i want to run this code https://github.com/rbgirshick/rcnn/tree/d0a24bec888e123885f8a229cc4f4a71cbeee80d

  5. Hello Saeid
    I have followed all the steps. And I am getting the following error while building the caffe.sln file.:

    Error 25 error : NuGet Error:Unknown command: 'overlay' G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets 329 5 upgrade_solver_proto_text

    I am getting the following output from the build:

    1>------ Build started: Project: libcaffe, Configuration: Debug x64 ------
    1>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    2>------ Build started: Project: caffe, Configuration: Debug x64 ------
    3>------ Build started: Project: convert_cifar_data, Configuration: Debug x64 ------
    4>------ Build started: Project: classification, Configuration: Debug x64 ------
    5>------ Build started: Project: convert_mnist_data, Configuration: Debug x64 ------
    4>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    3>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    6>------ Build started: Project: convert_mnist_siamese_data, Configuration: Debug x64 ------
    7>------ Build started: Project: upgrade_net_proto_binary, Configuration: Debug x64 ------
    5>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    8>------ Build started: Project: upgrade_net_proto_text, Configuration: Debug x64 ------
    2>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    9>------ Build started: Project: compute_image_mean, Configuration: Debug x64 ------
    7>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    6>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    10>------ Build started: Project: convert_imageset, Configuration: Debug x64 ------
    8>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    11>------ Build started: Project: extract_features, Configuration: Debug x64 ------
    12>------ Build started: Project: test_all, Configuration: Debug x64 ------
    9>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    13>------ Build started: Project: pycaffe, Configuration: Debug x64 ------
    10>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    11>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    14>------ Build started: Project: matcaffe, Configuration: Debug x64 ------
    15>------ Build started: Project: upgrade_solver_proto_text, Configuration: Debug x64 ------
    12>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    13>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    14>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    15>G:\Research\NugetPackages\glog.0.3.3.0\build\native\glog.targets(329,5): error : NuGet Error:Unknown command: 'overlay'
    ========== Build: 0 succeeded, 15 failed, 0 up-to-date, 0 skipped ==========

    Please help me out, as I have been trying to build caffe since last week.
    Thanks.

    – Lopa

    • I think this is a NuGet error, perhaps you have the wrong version! I think you better download standalone .exe of NuGet and try again…I cant remember but I think version 3 or 2 should work. Then pass the location of new downloaded NuGet.exe into the build file.

      • Hi. Saeid.
        Your explanation is very helpful. but I get error in Project\Caffe\windows> Nuget restore Caffe.sln …. . It says Failed to load msbuild Toolset.
        I download Nuget V3.5.0
        What should I do.
        Thanks you.

  6. Joao Salvado

    Hey saeid, first of all thank you for this tutorial ,
    I compiled caffe but when I try to use it in matlab it gives an error , invalid mex file

Leave a Reply

Your email address will not be published. Required fields are marked *