summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.travis.yml1
-rw-r--r--Makefile4
-rw-r--r--docs/installation.md12
-rw-r--r--include/caffe/common.hpp4
-rw-r--r--src/caffe/common.cpp57
5 files changed, 53 insertions, 25 deletions
diff --git a/.travis.yml b/.travis.yml
index 4a65090b..db115173 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -19,6 +19,7 @@ before_install:
install:
- wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz -O /tmp/glog-0.3.3.tar.gz && tar -C /tmp -xzvf /tmp/glog-0.3.3.tar.gz && rm /tmp/glog-0.3.3.tar.gz
- cd /tmp/glog-0.3.3 && ./configure && make && sudo make install && cd -
+ - wget https://github.com/schuhschuh/gflags/archive/master.zip -O /tmp/gflags-master.zip && pushd /tmp/ && unzip gflags-master.zip && cd gflags-master && mkdir build && cd build && export CXXFLAGS="-fPIC" && cmake .. && make VERBOSE=1 && sudo make install && popd
- curl http://developer.download.nvidia.com/compute/cuda/repos/ubuntu1204/x86_64/cuda-repo-ubuntu1204_6.0-37_amd64.deb -o /tmp/cuda_install.deb && sudo dpkg -i /tmp/cuda_install.deb && rm /tmp/cuda_install.deb
- sudo apt-get -y update && sudo apt-get -y install cuda
- curl https://gitorious.org/mdb/mdb/archive/7f038d0f15bec57b4c07aa3f31cd5564c88a1897.tar.gz -o /tmp/mdb.tar.gz && tar -C /tmp -xzvf /tmp/mdb.tar.gz && rm /tmp/mdb.tar.gz
diff --git a/Makefile b/Makefile
index 058d3d9c..7f778d36 100644
--- a/Makefile
+++ b/Makefile
@@ -155,8 +155,8 @@ ifneq ($(CPU_ONLY), 1)
LIBRARY_DIRS += $(CUDA_LIB_DIR)
LIBRARIES := cudart cublas curand
endif
-LIBRARIES += pthread \
- glog protobuf leveldb snappy \
+LIBRARIES += \
+ glog gflags pthread protobuf leveldb snappy \
lmdb \
boost_system \
hdf5_hl hdf5 \
diff --git a/docs/installation.md b/docs/installation.md
index c32f2d0a..a74071f8 100644
--- a/docs/installation.md
+++ b/docs/installation.md
@@ -71,12 +71,22 @@ And on **CentOS or RHEL**, you can install via yum using:
sudo yum install protobuf-devel leveldb-devel snappy-devel opencv-devel boost-devel hdf5-devel
-The only exception being the google logging library, which does not exist in the Ubuntu 12.04 or CentOS/RHEL repositories. To install it, do:
+The only exceptions being the google flags library and the google logging library, which does not exist in the Ubuntu 12.04 or CentOS/RHEL repositories. To install them, do:
+ # glog
wget https://google-glog.googlecode.com/files/glog-0.3.3.tar.gz
tar zxvf glog-0.3.3.tar.gz
./configure
make && make install
+ # gflags
+ wget https://github.com/schuhschuh/gflags/archive/master.zip
+ unzip master.zip
+ cd gflags-master
+ mkdir build && cd build
+ cmake ..
+ make && make install
+
+Note that glog does not compile with the most recent gflags version (2.1), so before that is solved you will need to build with gflags first. Also note that if you have newer versions of Ubuntu, like 13.04 or 14.04, gflags may be available under apt-get.
#### OS X
diff --git a/include/caffe/common.hpp b/include/caffe/common.hpp
index 2c79f2bc..ff8649ad 100644
--- a/include/caffe/common.hpp
+++ b/include/caffe/common.hpp
@@ -80,6 +80,10 @@ using std::set;
using std::string;
using std::vector;
+// A global initialization function that you should call in your main function.
+// Currently it initializes google flags and google logging.
+void GlobalInit(int* pargc, char*** pargv);
+
// A singleton class to hold common caffe stuff, such as the handler that
// caffe is going to use for cublas, curand, etc.
class Caffe {
diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp
index e8765eeb..5894a961 100644
--- a/src/caffe/common.cpp
+++ b/src/caffe/common.cpp
@@ -1,11 +1,14 @@
// Copyright 2014 BVLC and contributors.
+#include <gflags/gflags.h>
+#include <glog/logging.h>
#include <cstdio>
#include <ctime>
#include "caffe/common.hpp"
#include "caffe/util/rng.hpp"
+
namespace caffe {
shared_ptr<Caffe> Caffe::singleton_;
@@ -19,6 +22,14 @@ int64_t cluster_seedgen(void) {
return seed;
}
+
+void GlobalInit(int* pargc, char*** pargv) {
+ // Google flags.
+ ::gflags::ParseCommandLineFlags(pargc, pargv, true);
+ // Google logging.
+ ::google::InitGoogleLogging(*(pargv)[0]);
+}
+
#ifdef CPU_ONLY // CPU-only Caffe.
Caffe::Caffe()
@@ -138,28 +149,30 @@ void Caffe::DeviceQuery() {
return;
}
CUDA_CHECK(cudaGetDeviceProperties(&prop, device));
- printf("Device id: %d\n", device);
- printf("Major revision number: %d\n", prop.major);
- printf("Minor revision number: %d\n", prop.minor);
- printf("Name: %s\n", prop.name);
- printf("Total global memory: %lu\n", prop.totalGlobalMem);
- printf("Total shared memory per block: %lu\n", prop.sharedMemPerBlock);
- printf("Total registers per block: %d\n", prop.regsPerBlock);
- printf("Warp size: %d\n", prop.warpSize);
- printf("Maximum memory pitch: %lu\n", prop.memPitch);
- printf("Maximum threads per block: %d\n", prop.maxThreadsPerBlock);
- printf("Maximum dimension of block: %d, %d, %d\n",
- prop.maxThreadsDim[0], prop.maxThreadsDim[1], prop.maxThreadsDim[2]);
- printf("Maximum dimension of grid: %d, %d, %d\n",
- prop.maxGridSize[0], prop.maxGridSize[1], prop.maxGridSize[2]);
- printf("Clock rate: %d\n", prop.clockRate);
- printf("Total constant memory: %lu\n", prop.totalConstMem);
- printf("Texture alignment: %lu\n", prop.textureAlignment);
- printf("Concurrent copy and execution: %s\n",
- (prop.deviceOverlap ? "Yes" : "No"));
- printf("Number of multiprocessors: %d\n", prop.multiProcessorCount);
- printf("Kernel execution timeout: %s\n",
- (prop.kernelExecTimeoutEnabled ? "Yes" : "No"));
+ LOG(INFO) << "Device id: " << device;
+ LOG(INFO) << "Major revision number: " << prop.major;
+ LOG(INFO) << "Minor revision number: " << prop.minor;
+ LOG(INFO) << "Name: " << prop.name;
+ LOG(INFO) << "Total global memory: " << prop.totalGlobalMem;
+ LOG(INFO) << "Total shared memory per block: " << prop.sharedMemPerBlock;
+ LOG(INFO) << "Total registers per block: " << prop.regsPerBlock;
+ LOG(INFO) << "Warp size: " << prop.warpSize;
+ LOG(INFO) << "Maximum memory pitch: " << prop.memPitch;
+ LOG(INFO) << "Maximum threads per block: " << prop.maxThreadsPerBlock;
+ LOG(INFO) << "Maximum dimension of block: "
+ << prop.maxThreadsDim[0] << ", " << prop.maxThreadsDim[1] << ", "
+ << prop.maxThreadsDim[2];
+ LOG(INFO) << "Maximum dimension of grid: "
+ << prop.maxGridSize[0] << ", " << prop.maxGridSize[1] << ", "
+ << prop.maxGridSize[2];
+ LOG(INFO) << "Clock rate: " << prop.clockRate;
+ LOG(INFO) << "Total constant memory: " << prop.totalConstMem;
+ LOG(INFO) << "Texture alignment: " << prop.textureAlignment;
+ LOG(INFO) << "Concurrent copy and execution: "
+ << (prop.deviceOverlap ? "Yes" : "No");
+ LOG(INFO) << "Number of multiprocessors: " << prop.multiProcessorCount;
+ LOG(INFO) << "Kernel execution timeout: "
+ << (prop.kernelExecTimeoutEnabled ? "Yes" : "No");
return;
}