1. 首页
  2. IT资讯

BVLC Cafe 使用

环境: Ubuntu 12.04, CUDA 6.0, 1. 预先安装软件 pip install -r /u01/caffe/python/requirements.txt sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev libboost-all-dev libhdf5-serial-dev # gflags wget https://github.com/schuhschuh/gflags/archive/master.zip unzip master.zip cd gflags-master mkdir build && cd build CXXFLAGS=”-fPIC” cmake .. -DGFLAGS_NAMESPACE=google make && make install # glog wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz tar zxvf glog-0.3.3.tar.gz cd glog-0.3.3 ./configure make && make install # lmdb git clone git://gitorious.org/mdb/mdb.git cd mdb/libraries/liblmdb make && make install 2. 配置安装文件 cp Makefile.config.exampleMakefile.config vi Makefile.config, 去掉注释(由于虚拟机不支技显卡) CPU_ONLY := 1 3. 编译,报错如下: jerry@hq:/u01/caffe$ make g++ .build_release/tools/convert_imageset.o .build_release/lib/libcaffe.a -o .build_release/tools/convert_imageset.bin -fPIC -DCPU_ONLY -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -Wall -Wno-sign-compare -L/usr/lib -L/usr/local/lib -L/usr/lib -lglog -lgflags -lpthread -lprotobuf -lleveldb -lsnappy -llmdb -lboost_system -lhdf5_hl -lhdf5 -lopencv_core -lopencv_highgui -lopencv_imgproc -lcblas -latlas .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::Update()’: blob.cpp:(.text._ZN5caffe4BlobIfE6UpdateEv[_ZN5caffe4BlobIfE6UpdateEv]+0x43): undefined reference to `void caffe::caffe_gpu_axpy(int, float, float const*, float*)’ .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::asum_data() const’: blob.cpp:(.text._ZNK5caffe4BlobIfE9asum_dataEv[_ZNK5caffe4BlobIfE9asum_dataEv]+0x3f): undefined reference to `void caffe::caffe_gpu_asum(int, float const*, float*)’ .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::asum_diff() const’: blob.cpp:(.text._ZNK5caffe4BlobIfE9asum_diffEv[_ZNK5caffe4BlobIfE9asum_diffEv]+0x3f): undefined reference to `void caffe::caffe_gpu_asum(int, float const*, float*)’ .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::Update()’: blob.cpp:(.text._ZN5caffe4BlobIdE6UpdateEv[_ZN5caffe4BlobIdE6UpdateEv]+0x43): undefined reference to `void caffe::caffe_gpu_axpy(int, double, double const*, double*)’ .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::asum_data() const’: blob.cpp:(.text._ZNK5caffe4BlobIdE9asum_dataEv[_ZNK5caffe4BlobIdE9asum_dataEv]+0x3f): undefined reference to `void caffe::caffe_gpu_asum(int, double const*, double*)’ .build_release/lib/libcaffe.a(blob.o): In function `caffe::Blob::asum_diff() const’: blob.cpp:(.text._ZNK5caffe4BlobIdE9asum_diffEv[_ZNK5caffe4BlobIdE9asum_diffEv]+0x3f): undefined reference to `void caffe::caffe_gpu_asum(int, double const*, double*)’ .build_release/lib/libcaffe.a(common.o): In function `caffe::GlobalInit(int*, char***)’: common.cpp:(.text+0x12a): undefined reference to `gflags::ParseCommandLineFlags(int*, char***, bool)’ .build_release/lib/libcaffe.a(common.o): In function `caffe::Caffe::Caffe()’: common.cpp:(.text+0x179): undefined reference to `cublasCreate_v2′ common.cpp:(.text+0x1cb): undefined reference to `curandCreateGenerator’ common.cpp:(.text+0x22d): undefined reference to `curandSetPseudoRandomGeneratorSeed’ .build_release/lib/libcaffe.a(common.o): In function `caffe::Caffe::~Caffe()’: common.cpp:(.text+0x434): undefined reference to `cublasDestroy_v2′ common.cpp:(.text+0x456): undefined reference to `curandDestroyGenerator’ .build_release/lib/libcaffe.a(common.o): In function `caffe::Caffe::DeviceQuery()’: common.cpp:(.text+0x5f8): undefined reference to `cudaGetDevice’ common.cpp:(.text+0x616): undefined reference to `cudaGetDeviceProperties’ common.cpp:(.text+0xd22): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(common.o): In function `caffe::Caffe::SetDevice(int)’: common.cpp:(.text+0x1222): undefined reference to `cudaGetDevice’ common.cpp:(.text+0x1247): undefined reference to `cudaSetDevice’ common.cpp:(.text+0x127b): undefined reference to `cublasDestroy_v2′ common.cpp:(.text+0x12a9): undefined reference to `curandDestroyGenerator’ common.cpp:(.text+0x12ce): undefined reference to `cublasCreate_v2′ common.cpp:(.text+0x12fc): undefined reference to `curandCreateGenerator’ common.cpp:(.text+0x1330): undefined reference to `curandSetPseudoRandomGeneratorSeed’ common.cpp:(.text+0x1729): undefined reference to `cudaGetErrorString’ common.cpp:(.text+0x1882): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(common.o): In function `caffe::Caffe::set_random_seed(unsigned int)’: common.cpp:(.text+0x1aff): undefined reference to `curandDestroyGenerator’ common.cpp:(.text+0x1b2d): undefined reference to `curandCreateGenerator’ common.cpp:(.text+0x1b5c): undefined reference to `curandSetPseudoRandomGeneratorSeed’ .build_release/lib/libcaffe.a(math_functions.o): In function `void caffe::caffe_copy(int, double const*, double*)’: math_functions.cpp:(.text._ZN5caffe10caffe_copyIdEEviPKT_PS1_[_ZN5caffe10caffe_copyIdEEviPKT_PS1_]+0x6c): undefined reference to `cudaMemcpy’ math_functions.cpp:(.text._ZN5caffe10caffe_copyIdEEviPKT_PS1_[_ZN5caffe10caffe_copyIdEEviPKT_PS1_]+0x160): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(math_functions.o): In function `void caffe::caffe_copy(int, int const*, int*)’: math_functions.cpp:(.text._ZN5caffe10caffe_copyIiEEviPKT_PS1_[_ZN5caffe10caffe_copyIiEEviPKT_PS1_]+0x6c): undefined reference to `cudaMemcpy’ math_functions.cpp:(.text._ZN5caffe10caffe_copyIiEEviPKT_PS1_[_ZN5caffe10caffe_copyIiEEviPKT_PS1_]+0x160): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(math_functions.o): In function `void caffe::caffe_copy(int, unsigned int const*, unsigned int*)’: math_functions.cpp:(.text._ZN5caffe10caffe_copyIjEEviPKT_PS1_[_ZN5caffe10caffe_copyIjEEviPKT_PS1_]+0x6c): undefined reference to `cudaMemcpy’ math_functions.cpp:(.text._ZN5caffe10caffe_copyIjEEviPKT_PS1_[_ZN5caffe10caffe_copyIjEEviPKT_PS1_]+0x160): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(math_functions.o): In function `void caffe::caffe_copy(int, float const*, float*)’: math_functions.cpp:(.text._ZN5caffe10caffe_copyIfEEviPKT_PS1_[_ZN5caffe10caffe_copyIfEEviPKT_PS1_]+0x6c): undefined reference to `cudaMemcpy’ math_functions.cpp:(.text._ZN5caffe10caffe_copyIfEEviPKT_PS1_[_ZN5caffe10caffe_copyIfEEviPKT_PS1_]+0x160): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(syncedmem.o): In function `caffe::SyncedMemory::cpu_data()’: syncedmem.cpp:(.text+0x26): undefined reference to `caffe::caffe_gpu_memcpy(unsigned long, void const*, void*)’ .build_release/lib/libcaffe.a(syncedmem.o): In function `caffe::SyncedMemory::mutable_cpu_data()’: syncedmem.cpp:(.text+0x136): undefined reference to `caffe::caffe_gpu_memcpy(unsigned long, void const*, void*)’ .build_release/lib/libcaffe.a(syncedmem.o): In function `caffe::SyncedMemory::~SyncedMemory()’: syncedmem.cpp:(.text+0x1c1): undefined reference to `cudaFree’ syncedmem.cpp:(.text+0x20f): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(syncedmem.o): In function `caffe::SyncedMemory::mutable_gpu_data()’: syncedmem.cpp:(.text+0x29a): undefined reference to `caffe::caffe_gpu_memcpy(unsigned long, void const*, void*)’ syncedmem.cpp:(.text+0x2b9): undefined reference to `cudaMalloc’ syncedmem.cpp:(.text+0x2e5): undefined reference to `cudaMemset’ syncedmem.cpp:(.text+0x321): undefined reference to `cudaGetErrorString’ syncedmem.cpp:(.text+0x379): undefined reference to `cudaMalloc’ syncedmem.cpp:(.text+0x3c2): undefined reference to `cudaGetErrorString’ syncedmem.cpp:(.text+0x435): undefined reference to `cudaGetErrorString’ .build_release/lib/libcaffe.a(syncedmem.o): In function `caffe::SyncedMemory::gpu_data()’: syncedmem.cpp:(.text+0x4ca): undefined reference to `caffe::caffe_gpu_memcpy(unsigned long, void const*, void*)’ syncedmem.cpp:(.text+0x4e9): undefined reference to `cudaMalloc’ syncedmem.cpp:(.text+0x515): undefined reference to `cudaMemset’ syncedmem.cpp:(.text+0x549): undefined reference to `cudaMalloc’ syncedmem.cpp:(.text+0x592): undefined reference to `cudaGetErrorString’ syncedmem.cpp:(.text+0x608): undefined reference to `cudaGetErrorString’ syncedmem.cpp:(.text+0x678): undefined reference to `cudaGetErrorString’ collect2: error: ld returned 1 exit status make: *** [.build_release/tools/convert_imageset.bin] Error 1

很多引用是gpu的定义,但编译时使用cpu-only选项也是通不过的。

4. 修改Makefile.config, 注释CPU_ONLY := 1, 同时修改CUSTOM_CXX := g++-4.6 sudo apt-get install gcc-4.6 g++-4.6 gcc-4.6-multilib g++-4.6-multilib 修改这两个文件 vi src/caffe/common.cpp vi tools/caffe.cpp 使用google替代gflags make clean make make pycaffe g++-4.6 -shared -o python/caffe/_caffe.so python/caffe/_caffe.cpp .build_release/lib/libcaffe.a -fPIC -DNDEBUG -O2 -I/usr/include/python2.7 -I/usr/lib/python2.7/dist-packages/numpy/core/include -I/usr/local/include -I.build_release/src -I./src -I./include -I/usr/local/cuda/include -Wall -Wno-sign-compare -L/usr/lib -L/usr/local/lib -L/usr/lib -L/usr/local/cuda/lib64 -L/usr/local/cuda/lib -lcudart -lcublas -lcurand -lglog -lgflags -lpthread -lprotobuf -lleveldb -lsnappy -llmdb -lboost_system -lhdf5_hl -lhdf5 -lopencv_core -lopencv_highgui -lopencv_imgproc -lcblas -latlas -lboost_python -lpython2.7 touch python/caffe/proto/__init__.py protoc –proto_path=src –python_out=python src/caffe/proto/caffe_pretty_print.proto protoc –proto_path=src –python_out=python src/caffe/proto/caffe.proto 执行 sudo cp /u01/caffe/python/caffe/ /usr/local/lib/python2.7/dist-packages/ -Rf

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/16582684/viewspace-1256380/,如需转载,请注明出处,否则将追究法律责任。

主题测试文章,只做测试使用。发布者:布吉卡,转转请注明出处:http://www.cxybcw.com/193353.html

联系我们

13687733322

在线咨询:点击这里给我发消息

邮件:1877088071@qq.com

工作时间:周一至周五,9:30-18:30,节假日休息

QR code