GithubHelp home page GithubHelp logo

wichtounet / dll Goto Github PK

View Code? Open in Web Editor NEW
664.0 59.0 160.0 17.41 MB

Fast Deep Learning Library (DLL) for C++ (ANNs, CNNs, RBMs, DBNs...)

License: MIT License

C++ 89.29% Makefile 10.07% Python 0.23% Shell 0.42%
c-plus-plus cpp cpp11 cpp14 performance machine-learning deep-learning artificial-neural-networks gpu rbm cpu convolutional-neural-networks

dll's Introduction

Deep Learning Library (DLL) 1.1

logo coverage jenkins license

DLL is a library that aims to provide a C++ implementation of Restricted Boltzmann Machine (RBM) and Deep Belief Network (DBN) and their convolution versions as well. It also has support for some more standard neural networks.

Features

  • Restricted Boltzmann Machine
    • Various units: Stochastic binary, Gaussian, Softmax and nRLU units
    • Contrastive Divergence and Persistence Contrastive Divergence
      • CD-1 learning by default
    • Momentum
    • Weight decay
    • Sparsity target
    • Train as Denoising autoencoder
  • Convolutional Restricted Boltzmann Machine
    • Standard version
    • Version with Probabilistic Max Pooling (Honglak Lee)
    • Binary and Gaussian visible units
    • Binary and ReLU hidden units for the standard version
    • Binary hidden units for the Probabilistic Max Pooling version
    • Training with CD-k or PCD-k (only for standard version)
    • Momentum, Weight Decay, Sparsity Target
    • Train as Denoising autoencoder
  • Deep Belief Network
    • Pretraining with RBMs
    • Fine tuning with Conjugate Gradient
    • Fine tuning with Stochastic Gradient Descent
    • Classification with SVM (libsvm)
  • Convolutional Deep Belief Network
    • Pretraining with CRBMs
    • Classification with SVM (libsvm)
  • Input data
    • Input data can be either in containers or in iterators
      • Even if iterators are supported for SVM classifier, libsvm will move all the data in memory structure.

Building

Note: When you clone the library, you need to clone the sub modules as well, using the --recursive option.

The folder include must be included with the -I option, as well as the etl/include folder.

This library is completely header-only, there is no need to build it.

However, this library makes extensive use of C++20 and C++23, therefore, a recent compiler is necessary to use it. Currently, this library is only tested with g++ 13.

If for some reasons, it should not work on one of the supported compilers, contact me and I'll fix it. It should work fine on recent versions of clang.

This has never been tested on Windows. While it should compile on Mingw, I don't expect Visual Studio to be able to compile it for now, although recent versions of VS sound promising. If you have problems compiling this library, I'd be glad to help, but cannot guarantee that this will work on other compilers.

If you want to use GPU, you should use CUDA 12 or superior and CUDNN 8 or superior. If you got issues with different versions of CUDA and CUDNN, please open an issue on Github.

License

This library is distributed under the terms of the MIT license, see LICENSE file for details.

dll's People

Contributors

acknowledge avatar charles-r-earp avatar wichtounet avatar yvesfasel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

dll's Issues

The version of cuBLAS & cuDNN

I want to use below options:
-DETL_CUBLAS_MODE
-DETL_CUDNN_MODE

So, I need to install cuBLAS & cuDNN.

What is the version of those packages?

Please fix the folder name.

In the most recent release, @ is included in the folder name.
: etl -> etl @ f1e4c22

Because of this, I can not download the folder in Ubuntu.

Please fix the folder name.

Update?

Will you keep update?
Dll is a good deep learning lib.

AutoEncoder Example doesn't be compiled.

Hi!

Thanks to you, I have made the build environment and have compiled some examples (mnist_cnn.cpp, mnist_mlp.cpp).

However, auto encoder examples (mnist_ae.cpp, mnist_deep_ae.cpp) doesn't be compiled with following errors:

clang++-3.9 -std=c++1y -I/home/kjlee/lib/dll/include -I/home/kjlee/lib/dll/Catch/include -I/home/kjlee/lib/dll/etl/include -I/home/kjlee/lib/dll/etl/lib/include -I/home/kjlee/lib/dll/mnist/include -I/home/kjlee/lib/dll/cifar-10/include -I/home/kjlee/lib/dll/nice-svm/include -lpthread mnist_ae.cpp
In file included from mnist_ae.cpp:10:
In file included from /home/kjlee/lib/dll/include/dll/datasets.hpp:143:
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:98:88: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_train(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:140:9: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_train<dll::batch_size<256>, dll::scale_pre<255> >' requested
here
make_mnist_ae_generator_train(0UL, 60000UL, std::forward(parameters)...),
^
mnist_ae.cpp:17:25: note: in instantiation of function template specialization 'dll::make_mnist_ae_dataset<dll::batch_size<256>, dll::scale_pre<255> >' requested here
auto dataset = dll::make_mnist_ae_dataset(dll::batch_size<256>{}, dll::scale_pre<255>{});
^
In file included from mnist_ae.cpp:10:
In file included from /home/kjlee/lib/dll/include/dll/datasets.hpp:143:
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:98:88: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_train(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:98:88: error: missing default argument on parameter 'parameters'
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:99:12: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_train<unsigned long &, dll::batch_size<256>,
dll::scale_pre<255> >' requested here
return make_mnist_ae_generator_train("mnist", start, limit, std::forward(parameters)...);
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:140:9: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_train<dll::batch_size<256>, dll::scale_pre<255> >' requested
here
make_mnist_ae_generator_train(0UL, 60000UL, std::forward(parameters)...),
^
mnist_ae.cpp:17:25: note: in instantiation of function template specialization 'dll::make_mnist_ae_dataset<dll::batch_size<256>, dll::scale_pre<255> >' requested here
auto dataset = dll::make_mnist_ae_dataset(dll::batch_size<256>{}, dll::scale_pre<255>{});
^
In file included from mnist_ae.cpp:10:
In file included from /home/kjlee/lib/dll/include/dll/datasets.hpp:143:
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:98:88: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_train(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:98:88: error: missing default argument on parameter 'parameters'
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:112:87: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_test(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:141:9: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_test<dll::batch_size<256>, dll::scale_pre<255> >' requested
here
make_mnist_ae_generator_test(0UL, 10000UL, std::forward(parameters)...));
^
mnist_ae.cpp:17:25: note: in instantiation of function template specialization 'dll::make_mnist_ae_dataset<dll::batch_size<256>, dll::scale_pre<255> >' requested here
auto dataset = dll::make_mnist_ae_dataset(dll::batch_size<256>{}, dll::scale_pre<255>{});
^
In file included from mnist_ae.cpp:10:
In file included from /home/kjlee/lib/dll/include/dll/datasets.hpp:143:
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:112:87: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_test(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:112:87: error: missing default argument on parameter 'parameters'
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:113:12: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_test<unsigned long &, dll::batch_size<256>,
dll::scale_pre<255> >' requested here
return make_mnist_ae_generator_test("mnist", start, limit, std::forward(parameters)...);
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:141:9: note: in instantiation of function template specialization 'dll::make_mnist_ae_generator_test<dll::batch_size<256>, dll::scale_pre<255> >' requested
here
make_mnist_ae_generator_test(0UL, 10000UL, std::forward(parameters)...));
^
mnist_ae.cpp:17:25: note: in instantiation of function template specialization 'dll::make_mnist_ae_dataset<dll::batch_size<256>, dll::scale_pre<255> >' requested here
auto dataset = dll::make_mnist_ae_dataset(dll::batch_size<256>{}, dll::scale_pre<255>{});
^
In file included from mnist_ae.cpp:10:
In file included from /home/kjlee/lib/dll/include/dll/datasets.hpp:143:
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:112:87: error: missing default argument on parameter 'parameters'
auto make_mnist_ae_generator_test(size_t start = 0, size_t limit = 0, Parameters&&... parameters){
^
/home/kjlee/lib/dll/include/dll/datasets/mnist_ae.hpp:112:87: error: missing default argument on parameter 'parameters'
10 errors generated.

Please help me.

ETL_CUBLAS_MODE & ETL_CUDNN_MODE

image

I want to use DLL with GPU.
So I install cuda-toolkit 7.5 & cudnn (corresponding version of cuda-toolkit 7.5).
I write down my Makefile as shown above (-DETL_CUBLAS_MODE -DETL_CUDNN_MODE).

However,
It make error when I execute make ae:

kjlee@ubuntu:/Study/DLL/1_test$ make ae
clang++-3.9 -std=c++14 -I/home/kjlee/lib/dll/include -I/home/kjlee/lib/dll/Catch/include -I/home/kjlee/lib/dll/etl/include -I/home/kjlee/lib/dll/etl/lib/include -I/home/kjlee/lib/dll/mnist/include -I/home/kjlee/lib/dll/cifar-10/include -I/home/kjlee/lib/dll/nice-svm/include -I/home/kjlee/lib/cuda-7.5/include -lpthread -L/home/kjlee/lib/cuda-7.5/lib -L/home/kjlee/lib/cuda-7.5/lib64 -lcublas -lcudart -DETL_PARALLEL -DETL_VECTORIZE_FULL mnist_ae.cpp
/usr/bin/ld: skipping incompatible /home/kjlee/lib/cuda-7.5/lib/libcudart.so when searching for -lcudart
kjlee@ubuntu:
/Study/DLL/1_test$ vi Makefile
kjlee@ubuntu:~/Study/DLL/1_test$ make ae
clang++-3.9 -std=c++14 -I/home/kjlee/lib/dll/include -I/home/kjlee/lib/dll/Catch/include -I/home/kjlee/lib/dll/etl/include -I/home/kjlee/lib/dll/etl/lib/include -I/home/kjlee/lib/dll/mnist/include -I/home/kjlee/lib/dll/cifar-10/include -I/home/kjlee/lib/dll/nice-svm/include -I/home/kjlee/lib/cuda-7.5/include -lpthread -L/home/kjlee/lib/cuda-7.5/lib -L/home/kjlee/lib/cuda-7.5/lib64 -lcublas -lcudart -DETL_PARALLEL -DETL_VECTORIZE_FULL -DETL_CUBLAS_MODE -DETL_CUDNN_MODE mnist_ae.cpp
/usr/bin/ld: skipping incompatible /home/kjlee/lib/cuda-7.5/lib/libcudart.so when searching for -lcudart
/tmp/mnist_ae-95cfa4.o: In function void etl::impl::cudnn::bias_add_2d<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 1ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 1ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&)': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_[_ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_]+0x5b): undefined reference to cudnnCreateTensorDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1[ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1]+0x9a): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_[_ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_]+0x241): undefined reference to cudnnSetTensor4dDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1[ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1]+0x286): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_[_ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_]+0x479): undefined reference to cudnnTransformTensor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1[ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1]+0x4be): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_[_ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1_]+0x704): undefined reference to cudnnDestroyTensorDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1[ZN3etl4impl5cudnn11bias_add_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERKNS3_IfLS4_0ELm1EEERS5_EEvOT_OT0_OT1]+0x749): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function etl::impl::cudnn::cudnn_wrapper<cudnnTensorStruct*>::~cudnn_wrapper()':
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13cudnn_wrapperIP17cudnnTensorStructED2Ev[_ZN3etl4impl5cudnn13cudnn_wrapperIP17cudnnTensorStructED2Ev]+0x29): undefined reference to cudnnDestroyTensorDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13cudnn_wrapperIP17cudnnTensorStructED2Ev[_ZN3etl4impl5cudnn13cudnn_wrapperIP17cudnnTensorStructED2Ev]+0x65): undefined reference to cudnnGetErrorString'
/tmp/mnist_ae-95cfa4.o: In function etl::impl::cudnn::cudnn_handle::cudnn_handle()': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn12cudnn_handleC2Ev[_ZN3etl4impl5cudnn12cudnn_handleC2Ev]+0x11): undefined reference to cudnnCreate'
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn12cudnn_handleC2Ev[_ZN3etl4impl5cudnn12cudnn_handleC2Ev]+0x43): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function etl::impl::cudnn::cudnn_handle::~cudnn_handle()':
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn12cudnn_handleD2Ev[_ZN3etl4impl5cudnn12cudnn_handleD2Ev]+0x10): undefined reference to cudnnDestroy' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn12cudnn_handleD2Ev[_ZN3etl4impl5cudnn12cudnn_handleD2Ev]+0x4c): undefined reference to cudnnGetErrorString'
/tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, (cpp::detail::enabler_t)0>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&)': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x1b): undefined reference to cudnnCreateTensorDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x4d): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x145): undefined reference to cudnnSetTensor4dDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x177): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor<etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&, (cpp::detail::enabler_t)0>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&)':
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x1b): undefined reference to cudnnCreateTensorDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x4d): undefined reference to cudnnGetErrorString'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x145): undefined reference to cudnnSetTensor4dDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x177): undefined reference to cudnnGetErrorString'
/tmp/mnist_ae-95cfa4.o: In function void etl::impl::cudnn::activation<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&, cudnnActivationMode_t)': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x53): undefined reference to cudnnCreateActivationDescriptor'
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x8f): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x1df): undefined reference to cudnnSetActivationDescriptor'
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x224): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x41f): undefined reference to cudnnActivationForward'
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x464): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x5a5): undefined reference to cudnnDestroyActivationDescriptor'
mnist_ae.cpp:(.text._ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t[_ZN3etl4impl5cudnn10activationIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERS5_EEvOT_OT0_21cudnnActivationMode_t]+0x5ea): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor_flat<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&)':
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x1b): undefined reference to cudnnCreateTensorDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x4d): undefined reference to cudnnGetErrorString'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x12d): undefined reference to cudnnSetTensor4dDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x15f): undefined reference to cudnnGetErrorString'
/tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor_flat<etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&)': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x1b): undefined reference to cudnnCreateTensorDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x4d): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x12d): undefined reference to cudnnSetTensor4dDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x15f): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function void etl::impl::cudnn::bias_batch_mean_2d<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 1ul>&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, etl::dyn_matrix_impl<float, (etl::order)0, 1ul>&)':
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18bias_batch_mean_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERNS3_IfLS4_0ELm1EEEEEvOT_OT0[ZN3etl4impl5cudnn18bias_batch_mean_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERNS3_IfLS4_0ELm1EEEEEvOT_OT0]+0xe2): undefined reference to cudnnConvolutionBackwardBias' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18bias_batch_mean_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERNS3_IfLS4_0ELm1EEEEEvOT_OT0_[_ZN3etl4impl5cudnn18bias_batch_mean_2dIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEERNS3_IfLS4_0ELm1EEEEEvOT_OT0_]+0x11e): undefined reference to cudnnGetErrorString'
/tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor_front<etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&, (cpp::detail::enabler_t)0>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul> const&)': mnist_ae.cpp:(.text._ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x1b): undefined reference to cudnnCreateTensorDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x4d): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x139): undefined reference to cudnnSetTensor4dDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn19create_tensor_frontIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x16b): undefined reference to cudnnGetErrorString' /tmp/mnist_ae-95cfa4.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor<etl::dyn_matrix_impl<float, (etl::order)0, 1ul>&, (cpp::detail::enabler_t)0>(etl::dyn_matrix_impl<float, (etl::order)0, 1ul>&)':
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x1b): undefined reference to cudnnCreateTensorDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x4d): undefined reference to cudnnGetErrorString'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT]+0x133): undefined reference to cudnnSetTensor4dDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn13create_tensorIRNS_15dyn_matrix_implIfLNS_5orderE0ELm1EEELN3cpp6detail9enabler_tE0EEEP17cudnnTensorStructOT_]+0x165): undefined reference to cudnnGetErrorString'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [ae] error 1

What is the problem ? How can I solve it ?
My GPU info are:
image

Build issue on g++ 7.3.0

Build issue? Any advice appreciated, thanks.

root@mail:~/dll/dll# make
-e \x1b[31;01m[release_debug]\x1b[0m Compile \x1b[35;01mprocessor/src/processor.cpp\x1b[0m
In file included from etl/include/etl/vectorization.hpp:59:0,
                 from etl/include/etl/etl.hpp:29,
                 from include/dll/rbm/dyn_rbm_impl.hpp:10,
                 from include/dll/rbm/dyn_rbm.hpp:10,
                 from include/dll/rbm/rbm.hpp:16,
                 from include/dll/processor/processor.hpp:20,
                 from processor/include/parse_utils.hpp:16,
                 from processor/src/processor.cpp:20:
etl/include/etl/avx512_vectorization.hpp:504:15: error: explicit specialization in non-namespace scope ‘struct etl::avx512_vec’
     template <>
               ^
etl/include/etl/avx512_vectorization.hpp:505:56: error: template-id ‘mul<true>’ in declaration of primary template
     ETL_INLINE_VEC_512 mul<true>(__m512 lhs, __m512 rhs) {
                                                        ^
etl/include/etl/avx512_vectorization.hpp:514:25: error: too many template-parameter-lists
     ETL_INLINE_VEC_512D mul(__m512d lhs, __m512d rhs) {
                         ^~~
etl/include/etl/avx512_vectorization.hpp:521:15: error: explicit specialization in non-namespace scope ‘struct etl::avx512_vec’
     template <>
               ^
etl/include/etl/avx512_vectorization.hpp:522:59: error: template-id ‘mul<true>’ in declaration of primary template
     ETL_INLINE_VEC_512D mul<true>(__m512d lhs, __m512d rhs) {
                                                           ^
etl/include/etl/avx512_vectorization.hpp:531:24: error: too many template-parameter-lists
     ETL_INLINE_VEC_512 div(__m512 lhs, __m512 rhs) {
                        ^~~
etl/include/etl/avx512_vectorization.hpp:538:15: error: explicit specialization in non-namespace scope ‘struct etl::avx512_vec’
     template <>
               ^
etl/include/etl/avx512_vectorization.hpp:539:24: error: ‘__always_inline__’ attribute ignored [-Werror=attributes]
     ETL_INLINE_VEC_512 div<true>(__m512 lhs, __m512 rhs) {
                        ^~~
etl/include/etl/avx512_vectorization.hpp:539:24: error: ‘__gnu_inline__’ attribute ignored [-Werror=attributes]
etl/include/etl/avx512_vectorization.hpp:539:24: error: ‘__artificial__’ attribute ignored [-Werror=attributes]
etl/include/etl/avx512_vectorization.hpp:539:24: error: expected ‘;’ at end of member declaration
etl/include/etl/avx512_vectorization.hpp:539:27: error: expected unqualified-id before ‘<’ token
     ETL_INLINE_VEC_512 div<true>(__m512 lhs, __m512 rhs) {
                           ^
etl/include/etl/avx512_vectorization.hpp:548:25: error: too many template-parameter-lists
     ETL_INLINE_VEC_512D div(__m512d lhs, __m512d rhs) {
                         ^~~
etl/include/etl/avx512_vectorization.hpp:555:15: error: explicit specialization in non-namespace scope ‘struct etl::avx512_vec’
     template <>
               ^
etl/include/etl/avx512_vectorization.hpp:556:25: error: ‘__always_inline__’ attribute ignored [-Werror=attributes]
     ETL_INLINE_VEC_512D div<true>(__m512d lhs, __m512d rhs) {
                         ^~~
etl/include/etl/avx512_vectorization.hpp:556:25: error: ‘__gnu_inline__’ attribute ignored [-Werror=attributes]
etl/include/etl/avx512_vectorization.hpp:556:25: error: ‘__artificial__’ attribute ignored [-Werror=attributes]
etl/include/etl/avx512_vectorization.hpp:556:25: error: expected ‘;’ at end of member declaration
etl/include/etl/avx512_vectorization.hpp:556:25: error: redeclaration of ‘__m512d etl::avx512_vec::div’
etl/include/etl/avx512_vectorization.hpp:539:24: note: previous declaration ‘__m512 etl::avx512_vec::div’
     ETL_INLINE_VEC_512 div<true>(__m512 lhs, __m512 rhs) {
                        ^~~
etl/include/etl/avx512_vectorization.hpp:556:28: error: expected unqualified-id before ‘<’ token
     ETL_INLINE_VEC_512D div<true>(__m512d lhs, __m512d rhs) {
                            ^
etl/include/etl/avx512_vectorization.hpp: In static member function ‘static __m512 etl::avx512_vec::mul(__m512, __m512)’:
etl/include/etl/avx512_vectorization.hpp:505:53: error: unused parameter ‘rhs’  -Werror=unused-parameter]
     ETL_INLINE_VEC_512 mul<true>(__m512 lhs, __m512 rhs) {
                                                     ^~~
etl/include/etl/avx512_vectorization.hpp: In static member function ‘static __m512d etl::avx512_vec::mul(__m512d, __m512d)’:
etl/include/etl/avx512_vectorization.hpp:522:56: error: unused parameter ‘rhs’  -Werror=unused-parameter]
     ETL_INLINE_VEC_512D mul<true>(__m512d lhs, __m512d rhs) {
                                                        ^~~
etl/include/etl/avx512_vectorization.hpp: At global scope:
etl/include/etl/avx512_vectorization.hpp:634:1: error: ‘ETL_OUT_VEC_512’ does not name a type; did you mean ‘ETL_OUT_VEC_512D’?
 ETL_OUT_VEC_512 avx512_vec::mul<true>(__m512 lhs, __m512 rhs) {
 ^~~~~~~~~~~~~~~
 ETL_OUT_VEC_512D
etl/include/etl/avx512_vectorization.hpp:643:18: error: template-id ‘mul<true>’ for ‘__m512d etl::avx512_vec::mul(__m512d, __m512d)’ does not match any template declaration
 ETL_OUT_VEC_512D avx512_vec::mul<true>(__m512d lhs, __m512d rhs) {
                  ^~~~~~~~~~
etl/include/etl/avx512_vectorization.hpp:522:25: note: candidates are: static __m512d etl::avx512_vec::mul(__m512d, __m512d)
     ETL_INLINE_VEC_512D mul<true>(__m512d lhs, __m512d rhs) {
                         ^~~~~~~~~
etl/include/etl/avx512_vectorization.hpp:505:24: note:                 static __m512 etl::avx512_vec::mul(__m512, __m512)
     ETL_INLINE_VEC_512 mul<true>(__m512 lhs, __m512 rhs) {
                        ^~~~~~~~~
etl/include/etl/avx512_vectorization.hpp:497:24: note:                 template<bool Complex> static __m512 etl::avx512_vec::mul(__m512, __m512)
     ETL_INLINE_VEC_512 mul(__m512 lhs, __m512 rhs) {
                        ^~~
etl/include/etl/avx512_vectorization.hpp:652:1: error: ‘ETL_OUT_VEC_512’ does not name a type; did you mean ‘ETL_OUT_VEC_512D’?
 ETL_OUT_VEC_512 avx512_vec::div<true>(__m512 lhs, __m512 rhs) {
 ^~~~~~~~~~~~~~~
 ETL_OUT_VEC_512D
etl/include/etl/avx512_vectorization.hpp:661:33: error: expected initializer before ‘<’ token
 ETL_OUT_VEC_512D avx512_vec::div<true>(__m512d lhs, __m512d rhs) {
                                 ^
cc1plus: all warnings being treated as errors
Makefile:172: recipe for target 'release_debug/processor/src/processor.cpp.o' failed
make: *** [release_debug/processor/src/processor.cpp.o] Error 1
root@mail:~/dll/dll# g++ --version
g++ (Ubuntu 7.3.0-27ubuntu1~18.04) 7.3.0
Copyright (C) 2017 Free Software Foundation, Inc.
This is free software; see the source for copying conditions.  There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

Link error compiling example

Hi,

I am using the following make file to compile example/src/mnist_ae.cpp.

DLL_HOME = /home/tcn/Downloads/dll/
2 CUDA_HOME = /usr/local/cuda
3
4 CLANG = g++
5 CXXFLAGS += -std=c++14
6 LDFLAGS += -lpthread
7
8 ##########################################################
9 #DLL
10 ##########################################################
11 CPPFLAGS += -I${DLL_HOME}/include
12 CPPFLAGS += -I${DLL_HOME}/Catch/include
13 CPPFLAGS += -I${DLL_HOME}/etl/include
14 CPPFLAGS += -I${DLL_HOME}/etl/lib/include
15 CPPFLAGS += -I${DLL_HOME}/mnist/include
16 CPPFLAGS += -I${DLL_HOME}/cifar-10/include
17 CPPFLAGS += -I${DLL_HOME}/nice-svm/include
18
19 DLLFLAGS += -DETL_PARALLEL
20 DLLFLAGS += -DETL_VECTORIZE_FULL
21 ##DLLFLAGS += -DETL_BLAS_MODE
22 DLLFLAGS += -DETL_CUBLAS_MODE
23 DLLFLAGS += -DETL_CUDNN_MODE
24 #DLLFLAGS += -DETL_EGBLAS_MODE
25
26 ##########################################################
27 #CUDA
28 ##########################################################
29 CPPFLAGS += -I${CUDA_HOME}/include
30 LDFLAGS += -L${CUDA_HOME}/lib64 -lcublas -lcudart
31
32 ##########################################################
33 #MAKE
34 ##########################################################
35 all:
36
37 main:
38 ${CLANG} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DLLFLAGS} mnist_ae.cpp

However, it has the following the link error:mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x45): undefined reference to cudnnGetErrorString' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0xec): undefined reference to cudnnSetTensor4dDescriptor'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRKNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x119): undefined reference to cudnnGetErrorString' /tmp/ccwc5ErW.o: In function cudnnTensorStruct* etl::impl::cudnn::create_tensor_flat<etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&>(etl::dyn_matrix_impl<float, (etl::order)0, 2ul>&)':
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0x1c): undefined reference to cudnnCreateTensorDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x45): undefined reference to cudnnGetErrorString'
mnist_ae.cpp:(.text.ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT[ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT]+0xec): undefined reference to cudnnSetTensor4dDescriptor' mnist_ae.cpp:(.text._ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_[_ZN3etl4impl5cudnn18create_tensor_flatIRNS_15dyn_matrix_implIfLNS_5orderE0ELm2EEEEEP17cudnnTensorStructOT_]+0x119): undefined reference to cudnnGetErrorString'

Seems that it cannot link to cuda. However, my cuda is located at /usr/local/cuda. And my machine has a tensorflow, and it can link to cuda and run.

Can you help me rule out the problem?

Thanks.

Difficulty in making compile environment.

I'm sorry to have to ask too many questions.

I'm a hardware engineer who researches about A.I. chip.

I really want to use your DLL framework for my research, but I have some trouble in making compile environment.

My environments is:

OS: Ubuntu 14.04
g++: 4.9
clang++: 3.4 (Installing clang++3.7 in Ubuntu 14.04 is hard..I try to various way but it doesn't work)
CUDA: cuda-7.5
cuDNN: v5 for cuda-7.5
2 GPU

My Makefile is:

DLL_HOME = /home/kjlee/lib/dll
CUDA_HOME = /usr/local/cuda-8.0

CLANG = clang++
CXXFLAGS += -std=c++14
LDFLAGS += -lpthread

##########################################################

DLL

##########################################################
CPPFLAGS += -I${DLL_HOME}/include
CPPFLAGS += -I${DLL_HOME}/Catch/include
CPPFLAGS += -I${DLL_HOME}/etl/include
CPPFLAGS += -I${DLL_HOME}/etl/lib/include
CPPFLAGS += -I${DLL_HOME}/mnist/include
CPPFLAGS += -I${DLL_HOME}/cifar-10/include
CPPFLAGS += -I${DLL_HOME}/nice-svm/include

DLLFLAGS += -DETL_PARALLEL
DLLFLAGS += -DETL_VECTORIZE_FULL
##DLLFLAGS += -DETL_BLAS_MODE
DLLFLAGS += -DETL_CUBLAS_MODE
DLLFLAGS += -DETL_CUDNN_MODE
##DLLFLAGS += -DETL_EGBLAS_MODE

##########################################################

CUDA

##########################################################
CPPFLAGS += -I${CUDA_HOME}/include
LDFLAGS += -L${CUDA_HOME}/lib64 -lcublas -lcudart

##########################################################

MAKE

##########################################################
all:

main:
${CLANG} ${CXXFLAGS} ${CPPFLAGS} ${LDFLAGS} ${DLLFLAGS} mnist_ae.cpp

I want to know your environment.
If you use Ubuntu 14.04, please let me know how to install clang++3.7.

Thanks.

Compilation error when use -DETL_BLAS_MODE

Hello.
When I use -DETL_BLAS_MODE flag to compile, I get these error. I have already installed liblapack.

clang++-4.0 -DETL_PARALLEL -DETL_VECTORIZE_FUL -DETL_BLAS_MODE -std=c++1z -lpthread -llapack -lblas  main.cpp
In file included from main.cpp:8:
In file included from dll/neural/conv_layer.hpp:11:
In file included from dll/neural/dyn_conv_layer.hpp:10:
In file included from dll/neural/dyn_conv_layer_impl.hpp:11:
In file included from dll/neural_layer.hpp:15:
In file included from dll/etl/etl.hpp:108:
In file included from dll/etl/expr/gemm_expr.hpp:15:
dll/etl/impl/blas/gemm.hpp:952:32: error: use of undeclared identifier 'mkl_get_max_threads'
            auto mkl_threads = mkl_get_max_threads();
                               ^
dll/etl/impl/blas/gemm.hpp:954:13: error: use of undeclared identifier 'mkl_set_num_threads'
            mkl_set_num_threads(1);
            ^
dll/etl/impl/blas/gemm.hpp:1250:32: error: use of undeclared identifier 'mkl_get_max_threads'
            auto mkl_threads = mkl_get_max_threads();
                               ^
dll/etl/impl/blas/gemm.hpp:1252:13: error: use of undeclared identifier 'mkl_set_num_threads'
            mkl_set_num_threads(1);
            ^
4 errors generated.

any solutions?

errors while compiling

I compile the dll on Mac with clang-900.0.39.2, but I get the following errors:

dll/etl/include/etl/impl/std/fft.hpp:638:22: error: use of undeclared identifier 'M_PIl'; did you mean 'P_PID'?
dll/etl/include/etl/op/unary/exp.hpp:62:19: error: no member named 'exp' in 'etl::no_vec'
dll/etl/include/etl/op/unary/log.hpp:62:19: error: no member named 'log' in 'etl::no_vec'
dll/etl/include/etl/expr/unary_expr.hpp:169:34: error: no matching member function for call to 'load'

any solutions?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.