apache / mxnet

Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more
https://mxnet.apache.org
Apache License 2.0
20.76k stars 6.8k forks source link

Cannot find -lcuda? what's wrong? #2838

Closed alecwangcq closed 8 years ago

alecwangcq commented 8 years ago

Below is my config.mk

#-------------------------------------------------------------------------------
#  Template configuration for compiling mxnet
#
#  If you want to change the configuration, please use the following
#  steps. Assume you are on the root directory of mxnet. First copy the this
#  file so that any local changes will be ignored by git
#
#  $ cp make/config.mk .
#
#  Next modify the according entries, and then compile by
#
#  $ make
#
#  or build in parallel with 8 threads
#
#  $ make -j8
#-------------------------------------------------------------------------------

#---------------------
# choice of compiler
#--------------------

export CC = gcc
export CXX = g++
export NVCC = nvcc

# whether compile with debug
DEBUG = 0

# the additional link flags you want to add
ADD_LDFLAGS =

# the additional compile flags you want to add
ADD_CFLAGS =

#---------------------------------------------
# matrix computation libraries for CPU/GPU
#---------------------------------------------

# whether use CUDA during compile
USE_CUDA = 1

# add the path to CUDA library to link and compile flag
# if you have already add them to environment variable, leave it as NONE
# USE_CUDA_PATH = /usr/local/cuda
USE_CUDA_PATH = /opt/cuda

# whether use CuDNN R3 library
USE_CUDNN = 0

# whether use cuda runtime compiling for writing kernels in native language (i.e. Python)
USE_NVRTC = 0

# whether use opencv during compilation
# you can disable it, however, you will not able to use
# imbin iterator
USE_OPENCV = 1

# use openmp for parallelization
USE_OPENMP = 1

# whether use opencv during compilation
# you can disable it, however, you will not able to use
# imbin iterator
USE_OPENCV = 1

# use openmp for parallelization
USE_OPENMP = 1

# choose the version of blas you want to use
# can be: mkl, blas, atlas, openblas
# in default use atlas for linux while apple for osx
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Darwin)
USE_BLAS = apple
else
USE_BLAS = openblas
endif

# add path to intel library, you may need it for MKL, if you did not add the path
# to environment variable
USE_INTEL_PATH = NONE

# If use MKL, choose static link automatically to allow python wrapper
ifeq ($(USE_BLAS), mkl)
USE_STATIC_MKL = 1
else
USE_STATIC_MKL = NONE
endif

#----------------------------
# distributed computing
#----------------------------

# whether or not to enable multi-machine supporting
USE_DIST_KVSTORE = 0

# whether or not allow to read and write HDFS directly. If yes, then hadoop is
# required
USE_HDFS = 0

# path to libjvm.so. required if USE_HDFS=1
LIBJVM=$(JAVA_HOME)/jre/lib/amd64/server

# whether or not allow to read and write AWS S3 directly. If yes, then
# libcurl4-openssl-dev is required, it can be installed on Ubuntu by
# sudo apt-get install -y libcurl4-openssl-dev
USE_S3 = 0

#----------------------------
# additional operators
#----------------------------

# path to folders containing projects specific operators that you don't want to put in src/operators
EXTRA_OPERATORS =

#----------------------------
# plugins
#----------------------------

# whether to use torch integration. This requires installing torch.
# You also need to add TORCH_PATH/install/lib to your LD_LIBRARY_PATH
# TORCH_PATH = $(HOME)/torch
# MXNET_PLUGINS += plugin/torch/torch.mk

# whether to use sframe integration. This requires build frame
# git@github.com:dato-code/SFrame.git
# SFRAME_PATH = $(HOME)/SFrame
# MXNET_PLUGINS += plugin/sframe/plugin.mk

Below is the error information:

/home/username/pyenv/bin:/home/username/.linuxbrew/bin:/home/username/.linuxbrew/bin:/usr/local/sbin:/usr/local/bin:/usr/bin:/opt/cuda/bin:/usr/lib/jvm/default/bin:/usr/bin/site_perl:/usr/bin/vendor_perl:/usr/bin/core_perl:/opt/cuda
(root) [\u@\h \W]$ make -j
g++ -DMSHADOW_FORCE_STREAM -Wall -O3 -I/home/username/library/mxnet/mshadow/ -I/home/username/library/mxnet/dmlc-core/include -fPIC -Iinclude -msse3 -funroll-loops -Wno-unused-parameter -Wno-unknown-pragmas -I/opt/cuda/include -DMSHADOW_USE_CBLAS=1 -DMSHADOW_USE_MKL=0 -DMSHADOW_RABIT_PS=0 -DMSHADOW_DIST_PS=0 -DMSDHADOW_USE_PASCAL=0 -DMXNET_USE_OPENCV=1 `pkg-config --cflags opencv` -fopenmp  -DMXNET_USE_NVRTC=0 -shared -o lib/libmxnet.so build/src/resource.o build/src/io/io.o build/src/io/image_aug_default.o build/src/io/iter_csv.o build/src/io/iter_image_recordio.o build/src/io/iter_mnist.o build/src/common/mxrtc.o build/src/ndarray/ndarray_function.o build/src/ndarray/ndarray.o build/src/operator/smooth_l1_unary.o build/src/operator/pooling.o build/src/operator/cast.o build/src/operator/crop.o build/src/operator/deconvolution.o build/src/operator/swapaxis.o build/src/operator/batch_norm.o build/src/operator/softmax_output.o build/src/operator/operator_util.o build/src/operator/elementwise_binary_op.o build/src/operator/make_loss.o build/src/operator/operator.o build/src/operator/lrn.o build/src/operator/elementwise_binary_scalar_op.o build/src/operator/reshape.o build/src/operator/broadcast_reduce_op.o build/src/operator/native_op.o build/src/operator/block_grad.o build/src/operator/leaky_relu.o build/src/operator/embedding.o build/src/operator/identity_attach_KL_sparse_reg.o build/src/operator/elementwise_binary_broadcast_op.o build/src/operator/elementwise_sum.o build/src/operator/loss_binary_op.o build/src/operator/activation.o build/src/operator/roi_pooling.o build/src/operator/cudnn_batch_norm.o build/src/operator/cross_device_copy.o build/src/operator/elementwise_unary_op.o build/src/operator/fully_connected.o build/src/operator/convolution.o build/src/operator/l2_normalization.o build/src/operator/upsampling.o build/src/operator/ndarray_op.o build/src/operator/concat.o build/src/operator/custom.o build/src/operator/regression_output.o build/src/operator/slice_channel.o build/src/operator/dropout.o build/src/operator/softmax_activation.o build/src/operator/matrix_op.o build/src/optimizer/sgd.o build/src/optimizer/optimizer.o build/src/engine/naive_engine.o build/src/engine/threaded_engine_pooled.o build/src/engine/engine.o build/src/engine/threaded_engine.o build/src/engine/threaded_engine_perdevice.o build/src/symbol/graph_memory_allocator.o build/src/symbol/graph_executor.o build/src/symbol/static_graph.o build/src/symbol/symbol.o build/src/storage/storage.o build/src/c_api/c_predict_api.o build/src/c_api/c_api.o build/src/c_api/c_api_error.o build/src/kvstore/kvstore.o /home/username/library/mxnet/dmlc-core/libdmlc.a build/src/ndarray/ndarray_function_gpu.o build/src/operator/lrn_gpu.o build/src/operator/elementwise_binary_scalar_op_gpu.o build/src/operator/fully_connected_gpu.o build/src/operator/reshape_gpu.o build/src/operator/softmax_activation_gpu.o build/src/operator/pooling_gpu.o build/src/operator/regression_output_gpu.o build/src/operator/block_grad_gpu.o build/src/operator/leaky_relu_gpu.o build/src/operator/embedding_gpu.o build/src/operator/identity_attach_KL_sparse_reg_gpu.o build/src/operator/activation_gpu.o build/src/operator/roi_pooling_gpu.o build/src/operator/cudnn_batch_norm_gpu.o build/src/operator/loss_binary_op_gpu.o build/src/operator/elementwise_unary_op_gpu.o build/src/operator/broadcast_reduce_op_gpu.o build/src/operator/convolution_gpu.o build/src/operator/l2_normalization_gpu.o build/src/operator/batch_norm_gpu.o build/src/operator/upsampling_gpu.o build/src/operator/concat_gpu.o build/src/operator/dropout_gpu.o build/src/operator/matrix_op_gpu.o build/src/operator/softmax_output_gpu.o build/src/operator/slice_channel_gpu.o build/src/operator/smooth_l1_unary_gpu.o build/src/operator/elementwise_binary_broadcast_op_gpu.o build/src/operator/elementwise_sum_gpu.o build/src/operator/cast_gpu.o build/src/operator/crop_gpu.o build/src/operator/deconvolution_gpu.o build/src/operator/swapaxis_gpu.o build/src/operator/elementwise_binary_op_gpu.o build/src/operator/native_op_gpu.o build/src/operator/make_loss_gpu.o build/src/optimizer/sgd_gpu.o -pthread -lm -lcudart -lcublas -lcurand -L/opt/cuda/lib64 -L/opt/cuda/lib -lopenblas -lrt `pkg-config --libs opencv`  -lcuda
g++ -DMSHADOW_FORCE_STREAM -Wall -O3 -I/home/username/library/mxnet/mshadow/ -I/home/username/library/mxnet/dmlc-core/include -fPIC -Iinclude -msse3 -funroll-loops -Wno-unused-parameter -Wno-unknown-pragmas -I/opt/cuda/include -DMSHADOW_USE_CBLAS=1 -DMSHADOW_USE_MKL=0 -DMSHADOW_RABIT_PS=0 -DMSHADOW_DIST_PS=0 -DMSDHADOW_USE_PASCAL=0 -DMXNET_USE_OPENCV=1 `pkg-config --cflags opencv` -fopenmp  -DMXNET_USE_NVRTC=0 -std=c++0x  -o bin/im2rec tools/im2rec.cc build/src/resource.o build/src/io/io.o build/src/io/image_aug_default.o build/src/io/iter_csv.o build/src/io/iter_image_recordio.o build/src/io/iter_mnist.o build/src/common/mxrtc.o build/src/ndarray/ndarray_function.o build/src/ndarray/ndarray.o build/src/operator/smooth_l1_unary.o build/src/operator/pooling.o build/src/operator/cast.o build/src/operator/crop.o build/src/operator/deconvolution.o build/src/operator/swapaxis.o build/src/operator/batch_norm.o build/src/operator/softmax_output.o build/src/operator/operator_util.o build/src/operator/elementwise_binary_op.o build/src/operator/make_loss.o build/src/operator/operator.o build/src/operator/lrn.o build/src/operator/elementwise_binary_scalar_op.o build/src/operator/reshape.o build/src/operator/broadcast_reduce_op.o build/src/operator/native_op.o build/src/operator/block_grad.o build/src/operator/leaky_relu.o build/src/operator/embedding.o build/src/operator/identity_attach_KL_sparse_reg.o build/src/operator/elementwise_binary_broadcast_op.o build/src/operator/elementwise_sum.o build/src/operator/loss_binary_op.o build/src/operator/activation.o build/src/operator/roi_pooling.o build/src/operator/cudnn_batch_norm.o build/src/operator/cross_device_copy.o build/src/operator/elementwise_unary_op.o build/src/operator/fully_connected.o build/src/operator/convolution.o build/src/operator/l2_normalization.o build/src/operator/upsampling.o build/src/operator/ndarray_op.o build/src/operator/concat.o build/src/operator/custom.o build/src/operator/regression_output.o build/src/operator/slice_channel.o build/src/operator/dropout.o build/src/operator/softmax_activation.o build/src/operator/matrix_op.o build/src/optimizer/sgd.o build/src/optimizer/optimizer.o build/src/engine/naive_engine.o build/src/engine/threaded_engine_pooled.o build/src/engine/engine.o build/src/engine/threaded_engine.o build/src/engine/threaded_engine_perdevice.o build/src/symbol/graph_memory_allocator.o build/src/symbol/graph_executor.o build/src/symbol/static_graph.o build/src/symbol/symbol.o build/src/storage/storage.o build/src/c_api/c_predict_api.o build/src/c_api/c_api.o build/src/c_api/c_api_error.o build/src/kvstore/kvstore.o /home/username/library/mxnet/dmlc-core/libdmlc.a build/src/ndarray/ndarray_function_gpu.o build/src/operator/lrn_gpu.o build/src/operator/elementwise_binary_scalar_op_gpu.o build/src/operator/fully_connected_gpu.o build/src/operator/reshape_gpu.o build/src/operator/softmax_activation_gpu.o build/src/operator/pooling_gpu.o build/src/operator/regression_output_gpu.o build/src/operator/block_grad_gpu.o build/src/operator/leaky_relu_gpu.o build/src/operator/embedding_gpu.o build/src/operator/identity_attach_KL_sparse_reg_gpu.o build/src/operator/activation_gpu.o build/src/operator/roi_pooling_gpu.o build/src/operator/cudnn_batch_norm_gpu.o build/src/operator/loss_binary_op_gpu.o build/src/operator/elementwise_unary_op_gpu.o build/src/operator/broadcast_reduce_op_gpu.o build/src/operator/convolution_gpu.o build/src/operator/l2_normalization_gpu.o build/src/operator/batch_norm_gpu.o build/src/operator/upsampling_gpu.o build/src/operator/concat_gpu.o build/src/operator/dropout_gpu.o build/src/operator/matrix_op_gpu.o build/src/operator/softmax_output_gpu.o build/src/operator/slice_channel_gpu.o build/src/operator/smooth_l1_unary_gpu.o build/src/operator/elementwise_binary_broadcast_op_gpu.o build/src/operator/elementwise_sum_gpu.o build/src/operator/cast_gpu.o build/src/operator/crop_gpu.o build/src/operator/deconvolution_gpu.o build/src/operator/swapaxis_gpu.o build/src/operator/elementwise_binary_op_gpu.o build/src/operator/native_op_gpu.o build/src/operator/make_loss_gpu.o build/src/optimizer/sgd_gpu.o -pthread -lm -lcudart -lcublas -lcurand -L/opt/cuda/lib64 -L/opt/cuda/lib -lopenblas -lrt `pkg-config --libs opencv`  -lcuda
/home/username/.linuxbrew/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
make: *** [Makefile:191: lib/libmxnet.so] Error 1
make: *** Waiting for unfinished jobs....
/home/username/.linuxbrew/bin/ld: cannot find -lcuda
collect2: error: ld returned 1 exit status
make: *** [Makefile:204: bin/im2rec] Error 1

And I did install cuda(/opt/cuda):

(no-root) [\u@\h \W]$ cd /opt/cuda 
(no-root) [\u@\h \W]$ ls
bin  doc  extras  include  jre  lib  lib64  libnsight  libnvvp  nvvm  samples  share  src  tools  version.txt

I used python virtual environment. I triedexport PATH="$PATH:/opt/cuda" and export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:/opt/cuda/lib64" But neither worked.

piiswrong commented 8 years ago

your cuda is installed in /opt/cuda instead of /usr/local/cuda. So you need to modify CUDA_PATH in config.mk

alecwangcq commented 8 years ago

@piiswrong Yeah, I have already done that. I didn't paste that part of config.mk in this issue.(Now I have updated the pasted code of config.mk..)

taoari commented 8 years ago

libcuda.so is under /usr/local/cuda/lib64/stubs/libcuda.so, just make a soft link to /usr/local/cuda/lib64/libcuda.so. I am not sure if this is a CUDA v7.0 problem.

starimpact commented 8 years ago

you should make sure whether the libcuda.so is under your opt/cuda/lib64/stubs folder.

tim120526 commented 5 years ago

libcuda.so is under /usr/local/cuda/lib64/stubs/libcuda.so, just make a soft link to /usr/local/cuda/lib64/libcuda.so. I am not sure if this is a CUDA v7.0 problem.

thank you!

mguzmann commented 4 years ago

I have this same problem but I do not have root access. Is there any work around for this?

zrsm commented 4 years ago

libcuda.so is under /usr/local/cuda/lib64/stubs/libcuda.so, just make a soft link to /usr/local/cuda/lib64/libcuda.so. I am not sure if this is a CUDA v7.0 problem.

You mean, a "symlink" I've never actually heard the term soft-link, but I am just saying this could cause confusion.