deeplearningais / curfil

CUDA Random Forest implementation for Image Labeling tasks
Other
180 stars 63 forks source link

Compile with Visual Studio 2015 on Windows 10 #17

Open ifenglin opened 7 years ago

ifenglin commented 7 years ago

Hello, I understand this project has probably only been tested on Linux, but all the dependent libraries are also available on Windows and therefore I created a fork for this task. My environment is Visual Studio 2015 Win64 on Windows 10. I apply it to CMake commands and create VC projects. The main modification in code is to change path strings into type boost::filesystem::path::string_type for the sake that Boost uses self-defined string_type (equivalent to wide chars), instead of string, for path variables. My modified version can be successfully compiled, and I can generate curfil.lib. However, I cannot resolve the numerous linking errors while building curfil_train and curfil_predict. In general, there are only two types LNK2001 and LNK2019:

Severity    Code    Description Project File    Line    Suppression State
Error   LNK2001 unresolved external symbol "public: virtual void __cdecl cuv::default_allocator::alloc(void * *,unsigned __int64,unsigned __int64,struct cuv::host_memory_space)" (?alloc@default_allocator@cuv@@UEAAXPEAPEAX_K1Uhost_memory_space@2@@Z)    curfil_train    C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)    1   
Severity    Code    Description Project File    Line    Suppression State
Error   LNK2019 unresolved external symbol "void __cdecl cuv::detail::entry_set<int>(int *,unsigned __int64,int,struct cuv::host_memory_space)" (??$entry_set@H@detail@cuv@@YAXPEAH_KHUhost_memory_space@1@@Z) referenced in function "public: void __cdecl cuv::reference<int,struct cuv::host_memory_space>::operator=<unsigned int>(unsigned int const &)" (??$?4I@?$reference@HUhost_memory_space@cuv@@@cuv@@QEAAXAEBI@Z)   curfil_train    C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)    1   

I don't think it is an OS-related issue, rather an incorrect setup for the linker. Here is the list of input for the linker:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Debug\curfil.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudart_static.lib
C:\Program Files\ndarray\lib\static\ndarray.lib
C:\vigra\lib\vigraimpex.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbbmalloc.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb_debug.lib
C:\Boost\lib\vc14\x64\libboost_system-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_filesystem-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_iostreams-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_program_options-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_date_time-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_regex-vc140-mt-gd-1_64.lib
pthreadVC2.lib 

I have been stuck for more than a week. I'd heartily appreciate it f anyone has an idea about this or has more knowledge about linking to share.

Cheers, ifeng

xinsuinizhuan commented 4 years ago

Hello, I understand this project has probably only been tested on Linux, but all the dependent libraries are also available on Windows and therefore I created a fork for this task. My environment is Visual Studio 2015 Win64 on Windows 10. I apply it to CMake commands and create VC projects. The main modification in code is to change path strings into type boost::filesystem::path::string_type for the sake that Boost uses self-defined string_type (equivalent to wide chars), instead of string, for path variables. My modified version can be successfully compiled, and I can generate curfil.lib. However, I cannot resolve the numerous linking errors while building curfil_train and curfil_predict. In general, there are only two types LNK2001 and LNK2019:

Severity  Code    Description Project File    Line    Suppression State
Error LNK2001 unresolved external symbol "public: virtual void __cdecl cuv::default_allocator::alloc(void * *,unsigned __int64,unsigned __int64,struct cuv::host_memory_space)" (?alloc@default_allocator@cuv@@UEAAXPEAPEAX_K1Uhost_memory_space@2@@Z)    curfil_train    C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)    1   
Severity  Code    Description Project File    Line    Suppression State
Error LNK2019 unresolved external symbol "void __cdecl cuv::detail::entry_set<int>(int *,unsigned __int64,int,struct cuv::host_memory_space)" (??$entry_set@H@detail@cuv@@YAXPEAH_KHUhost_memory_space@1@@Z) referenced in function "public: void __cdecl cuv::reference<int,struct cuv::host_memory_space>::operator=<unsigned int>(unsigned int const &)" (??$?4I@?$reference@HUhost_memory_space@cuv@@@cuv@@QEAAXAEBI@Z)   curfil_train    C:\Users\i-fen\Documents\curfil-win64\build\src\curfil\curfil.lib(image.obj)    1   

I don't think it is an OS-related issue, rather an incorrect setup for the linker. Here is the list of input for the linker:

kernel32.lib
user32.lib
gdi32.lib
winspool.lib
shell32.lib
ole32.lib
oleaut32.lib
uuid.lib
comdlg32.lib
advapi32.lib
Debug\curfil.lib
C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v8.0\lib\x64\cudart_static.lib
C:\Program Files\ndarray\lib\static\ndarray.lib
C:\vigra\lib\vigraimpex.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbbmalloc.lib
C:\Program Files\Intel\TBB\lib\intel64\vc14\tbb_debug.lib
C:\Boost\lib\vc14\x64\libboost_system-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_filesystem-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_iostreams-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_program_options-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_date_time-vc140-mt-gd-1_64.lib
C:\Boost\lib\vc14\x64\libboost_regex-vc140-mt-gd-1_64.lib
pthreadVC2.lib 

I have been stuck for more than a week. I'd heartily appreciate it f anyone has an idea about this or has more knowledge about linking to share.

Cheers, ifeng

Did you have soleved this issue? I also to run it, on windows.

ifenglin commented 4 years ago

I did not resolve this issue and my project was closed.

xinsuinizhuan commented 4 years ago

I did not resolve this issue and my project was closed.

are you windows cuda ?

xinsuinizhuan commented 4 years ago

I did not resolve this issue and my project was closed.

Did you have compile this, success, in windows:

ndarray (included as git submodule)
GCC 4.4 or higher
Boost 1.46 or higher
NVIDIA CUDA™ 5.0 or higher
Thrust - included in CUDA since 4.0
Vigra Impex
Intel TBB
MDBQ (optional, required for hyperopt parameter search)
A CUDA capable GPU with compute capability 2.0 or higher
xinsuinizhuan commented 4 years ago

I did not resolve this issue and my project was closed.

I also want to solved it ? Could you send me your all projection, let me have a try, include all External libraries? My email address is: lllstandout@163.com

xinsuinizhuan commented 4 years ago

I did not resolve this issue and my project was closed.

could you send me your compiled projection, let me foucus on the soleved main problem? I compile it, but so many compile errors.My email address is: lllstandout@163.com

ifenglin commented 4 years ago

I am sorry that this project is in history now and I don't have anything left to provide. As far as I remember, I did not solve this issue and I turned to another framework called Ranger and eventually did not use Cuda. My project was about empowering random forest with genetic algorithms. You can see my repository for more information.