Search code examples
compilationcudanvccluajittorch

Unable to find Torch header files using nvcc


I'm trying to call some CUDA code from luaJIT (Torch) but I'm running into compiling issues. nvcc seems unable to find my Torch header files. I have CUDA 6.5 and gcc 4.4.7.

nvcc -o im2col -I/deep/u/ibello/torch/include im2col.cu    
In file included from /deep/u/ibello/torch/include/THC/THC.h:4,
                     from utils.h:6,
                     from im2col.cu:1:
    /deep/u/ibello/torch/include/THC/THCGeneral.h:4:23: error: THGeneral.h: No such file or directory
    /deep/u/ibello/torch/include/THC/THCGeneral.h:5:25: error: THAllocator.h: No such file or directory
    In file included from /deep/u/ibello/torch/include/THC/THC.h:7,
                     from utils.h:6,
                     from im2col.cu:1:
    /deep/u/ibello/torch/include/THC/THCStorage.h:4:23: error: THStorage.h: No such file or directory
    In file included from /deep/u/ibello/torch/include/THC/THC.h:9,
                     from utils.h:6,
                     from im2col.cu:1:

im2col.cu includes the following

#include "utils.h"
#include "common.h"
#include <lua.h>
#include <lauxlib.h>
#include <lualib.h>

where "utils.h" is

#ifndef CUNN_UTILS_H
#define CUNN_UTILS_H

extern "C" { #include <lua.h> }
#include <luaT.h>
#include <THC/THC.h>

THCState* getCutorchState(lua_State* L);

#endif

This is relatively weird since the mentioned files are indeed in the include location I gave to the compiler..

ls /deep/u/ibello/torch/include/THC
THCAllocator.h  THCDeviceTensor.cuh       THCDeviceTensorUtils-inl.cuh  THC.h                    THCReduce.cuh     THCTensorConv.h  THCTensorMath.h
THCApply.cuh    THCDeviceTensor-inl.cuh   THCDeviceUtils.cuh            THCReduceAll.cuh         THCStorageCopy.h  THCTensorCopy.h  THCTensorRandom.h
THCBlas.h       THCDeviceTensorUtils.cuh  THCGeneral.h                  THCReduceApplyUtils.cuh  THCStorage.h      THCTensor.h      THCTensorSort.h

Any ideas about what I'm doing wrong?

Thx in advance!


Solution

  • It seems that this compile command:

    nvcc -o im2col -I/deep/u/ibello/torch/include im2col.cu 
    

    did not give the necessary search paths for the compiler to find the header files like THGeneral.h that were located in /deep/u/ibello/torch/include/TH

    The solution was to specify a compile command like this:

    nvcc -o im2col -I/deep/u/ibello/torch/include -I/deep/u/ibello/torch/include/TH im2col.cu