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

Preparing the sources

Preparing the sources

After making sure that you have met the prerequisites, you can now begin downloading the Caffe source files. For this tutorial, I will use the following directory C:\projects

Cloning Caffe repository and merging it with fixes

Caffe was originally written for GNU/Linux systems, but recently a team from Microsoft has tried  to maintain a Windows version. The Windows tree of Caffe can be watched as a branch of original Caffe repository on GitHub.

Open a command prompt (it maybe necessary to open the command prompt as Administrator, if you are facing problems e.g. creating directories in C: drive). To download the Caffe sources, enter the following command:

Now goto the projects\caffe folder and pull and merge the fixes (Please note that you most likely need to check the README file of Caffe’s Windows tree (the build icon in the README) to check for the latest successful builds to see if you need to merge with any recent unoffical changes. The following merge with head #4481  does work as of 19 Jul 2016):

Now go to the windows directory inside the caffe folder and copy the example properties file (this is a Visual Studio solution properties file) by removing the .example from the file extension:

Downloading the required packages

It is now time to download all the necessary packages for compiling Caffe. Luckily they were kind enough (surprisingly!) to include a nuget configuration file that will download all the necessary packages:

This will download the dependency tree and to the C:\project\NugetPackages folder.

The only point is, the provided nuget configuration file only downloads the DEBUG build of dependency packages, hence the resulting Visual Studio 2013 solution can only build the DEBUG version sucessfully. If you need the Release version without the overhead of debug symbols, you will have to make changes in the nuget configuration file and tell it to download the Release version of the required packages as well!

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!

16 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

  7. Hi..Thanks you Saeid,
    Your explanation is very helpful.

    But I still have the error when build caffe.sln.
    The message is as follow ( for 13 descriptions):
    Error 2 error : NuGet Error:Unknown command: ‘overlay’ C:\Project\NugetPackages\OpenCV.2.4.10\build\native\OpenCV.targets 768 5 caffe

    What I should do Saeid?
    Thanks you in advance,

    Best regard,

    Ismail

Leave a Reply

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