From 15bc0f767fa0b8f12302f81e86654bd11daf8bea Mon Sep 17 00:00:00 2001 From: Yangqing Jia Date: Wed, 23 Jul 2014 22:47:25 -0700 Subject: [PATCH] add gflags dependency to caffe. --- Makefile | 4 ++-- include/caffe/common.hpp | 4 ++++ src/caffe/common.cpp | 57 +++++++++++++++++++++++++++++------------------- 3 files changed, 41 insertions(+), 24 deletions(-) diff --git a/Makefile b/Makefile index 109894d..6f0da36 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/include/caffe/common.hpp b/include/caffe/common.hpp index 2c79f2b..ff8649a 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 e8765ee..5894a96 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -1,11 +1,14 @@ // Copyright 2014 BVLC and contributors. +#include +#include #include #include #include "caffe/common.hpp" #include "caffe/util/rng.hpp" + namespace caffe { shared_ptr 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; } -- 2.7.4