You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@singa.apache.org by wa...@apache.org on 2015/06/27 09:14:13 UTC

[1/2] incubator-singa git commit: SINGA-25 - Setup glog output path

Repository: incubator-singa
Updated Branches:
  refs/heads/master 14ce5d9ae -> f234c4972


SINGA-25 - Setup glog output path

Set the output files of glog to workspace/glog.


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/90c26945
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/90c26945
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/90c26945

Branch: refs/heads/master
Commit: 90c2694539d5fc3119f59d4dfc28db1954b04307
Parents: 14ce5d9
Author: wang wei <wa...@comp.nus.edu.sg>
Authored: Fri Jun 26 22:46:58 2015 +0800
Committer: wang wei <wa...@comp.nus.edu.sg>
Committed: Fri Jun 26 22:46:58 2015 +0800

----------------------------------------------------------------------
 include/utils/common.h | 16 +++++++++----
 src/main.cc            | 11 +++++----
 src/trainer/server.cc  |  6 +++--
 src/trainer/worker.cc  |  6 +++--
 src/utils/common.cc    | 57 +++++++++++++++++++++++++++++++--------------
 5 files changed, 66 insertions(+), 30 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/90c26945/include/utils/common.h
----------------------------------------------------------------------
diff --git a/include/utils/common.h b/include/utils/common.h
index d3c23a8..619e06a 100644
--- a/include/utils/common.h
+++ b/include/utils/common.h
@@ -2,6 +2,7 @@
 #define SINGA_UTILS_COMMON_H_
 
 #include <google/protobuf/message.h>
+#include <stdlib.h>
 #include <map>
 #include <sstream>
 #include <string>
@@ -9,9 +10,9 @@
 
 namespace singa {
 
-std::string IntVecToString(const std::vector<int>& vec) ;
-std::string VStringPrintf(std::string fmt, va_list l) ;
-std::string StringPrintf(std::string fmt, ...) ;
+std::string IntVecToString(const std::vector<int>& vec);
+std::string VStringPrintf(std::string fmt, va_list l);
+std::string StringPrintf(std::string fmt, ...);
 void ReadProtoFromTextFile(const char* filename,
                            google::protobuf::Message* proto);
 void WriteProtoToTextFile(const google::protobuf::Message& proto,
@@ -21,6 +22,8 @@ void ReadProtoFromBinaryFile(const char* filename,
 void WriteProtoToBinaryFile(const google::protobuf::Message& proto,
                             const char* filename);
 
+const std::string CurrentDateTime();
+void  CreateFolder(const std::string name);
 /*
 inline void Sleep(int millisec=1){
   std::this_thread::sleep_for(std::chrono::milliseconds(millisec));
@@ -29,10 +32,13 @@ inline void Sleep(int millisec=1){
 
 int gcd(int a, int b);
 int LeastCommonMultiple(int a, int b);
-inline float rand_real(){
-  return  static_cast<float>(rand())/(RAND_MAX+1.0f);
+/*
+inline float rand_real() {
+  return  static_cast<float>(rand_r())/(RAND_MAX+1.0f);
 }
+*/
 const std::string GetHostIP();
+void SetupLog(const std::string& workspace, const std::string& model);
 
 class Metric {
  public:

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/90c26945/src/main.cc
----------------------------------------------------------------------
diff --git a/src/main.cc b/src/main.cc
index 851d528..2a52c07 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -1,6 +1,7 @@
 #include <gflags/gflags.h>
 #include <glog/logging.h>
 #include "trainer/trainer.h"
+#include "utils/common.h"
 #ifndef GFLAGS_GFLAGS_H_
   namespace gflags = google;
 #endif  // GFLAGS_GFLAGS_H_
@@ -29,11 +30,11 @@ DEFINE_string(model, "examples/mnist/conv.conf", "Model config file");
  * If users want to use their own implemented classes, they should register
  * them here. Refer to the Worker::RegisterDefaultClasses()
  */
-void RegisterClasses(const singa::ModelProto& proto){
+void RegisterClasses(const singa::ModelProto& proto) {
 }
 
+
 int main(int argc, char **argv) {
-  // TODO set log dir
   google::InitGoogleLogging(argv[0]);
   gflags::ParseCommandLineFlags(&argc, &argv, true);
 
@@ -41,8 +42,10 @@ int main(int argc, char **argv) {
   singa::ReadProtoFromTextFile(FLAGS_cluster.c_str(), &cluster);
   singa::ModelProto model;
   singa::ReadProtoFromTextFile(FLAGS_model.c_str(), &model);
-  LOG(INFO)<<"The cluster config is\n"<<cluster.DebugString();
-  LOG(INFO)<<"The model config is\n"<<model.DebugString();
+  singa::SetupLog(cluster.workspace(), model.name());
+
+  LOG(INFO) << "The cluster config is\n" << cluster.DebugString();
+  LOG(INFO) << "The model config is\n" << model.DebugString();
 
   RegisterClasses(model);
   singa::Trainer trainer;

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/90c26945/src/trainer/server.cc
----------------------------------------------------------------------
diff --git a/src/trainer/server.cc b/src/trainer/server.cc
index 21ff21a..42d6a79 100644
--- a/src/trainer/server.cc
+++ b/src/trainer/server.cc
@@ -25,7 +25,8 @@ void Server::Setup(const UpdaterProto& proto,
 }
 
 void Server::Run(){
-  LOG(ERROR)<<"Server (group_id= "<<group_id_<<", id="<<server_id_<<") starts";
+  LOG(ERROR)<<"Server (group_id = "<<group_id_
+    <<", id = "<<server_id_<<") starts";
   dealer_=std::make_shared<Dealer>(2*thread_id_);
   dealer_->Connect(kInprocRouterEndpoint);
   auto cluster=Cluster::Get();
@@ -113,7 +114,8 @@ void Server::Run(){
     if (response!=nullptr)
       dealer_->Send(&response);
   }
-  LOG(INFO)<<"Server (group_id= "<<group_id_<<", id="<<server_id_<<") stops";
+  LOG(ERROR)<<"Server (group_id = "<<group_id_
+    <<", id = "<<server_id_<<") stops";
 }
 
 Msg* Server::HandlePut(Msg **msg){

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/90c26945/src/trainer/worker.cc
----------------------------------------------------------------------
diff --git a/src/trainer/worker.cc b/src/trainer/worker.cc
index 5d301dc..a92ba2c 100644
--- a/src/trainer/worker.cc
+++ b/src/trainer/worker.cc
@@ -47,7 +47,8 @@ void Worker::ConnectStub(shared_ptr<Dealer> dealer, EntityType type){
 }
 
 void Worker::Run(){
-  LOG(ERROR)<<"Worker (group_id= "<<group_id_<<", id="<<worker_id_<<") starts";
+  LOG(ERROR)<<"Worker (group_id = "<<group_id_
+    <<", id = "<<worker_id_<<") starts";
   dealer_=make_shared<Dealer>(2*thread_id_);
   ConnectStub(dealer_, kWorkerParam);
   for(auto layer: train_net_->layers())
@@ -90,7 +91,8 @@ void Worker::Run(){
   }
 
   Stop();
-  LOG(INFO)<<"Worker (group_id= "<<group_id_<<", id="<<worker_id_<<") stops";
+  LOG(ERROR)<<"Worker (group_id = "<<group_id_
+    <<", id = "<<worker_id_<<") stops";
 }
 
 void Worker::Stop(){

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/90c26945/src/utils/common.cc
----------------------------------------------------------------------
diff --git a/src/utils/common.cc b/src/utils/common.cc
index a3242aa..1f3f1b6 100644
--- a/src/utils/common.cc
+++ b/src/utils/common.cc
@@ -8,14 +8,15 @@
 #include <stdarg.h>
 #include <stdio.h>
 #include <unistd.h>
+#include <sys/stat.h>
 #include <sys/types.h>
 #include <sys/socket.h>
 #include <sys/ioctl.h>
 #include <netinet/in.h>
 #include <net/if.h>
 #include <arpa/inet.h>
-
-
+#include <time.h>
+#include <string>
 
 namespace singa {
 
@@ -28,18 +29,18 @@ using google::protobuf::io::ZeroCopyInputStream;
 using google::protobuf::Message;
 
 const int kBufLen = 1024;
-std::string IntVecToString(const vector<int>& vec) {
-  string disp="(";
-  for(int x: vec)
-    disp+=std::to_string(x)+", ";
-  return disp+")";
+string IntVecToString(const vector<int>& vec) {
+  string disp = "(";
+  for (int x : vec)
+    disp += std::to_string(x) + ", ";
+  return disp + ")";
 }
 /**
  *  * Formatted string.
  *   */
 string VStringPrintf(string fmt, va_list l) {
   char buffer[32768];
-  vsnprintf(buffer, 32768, fmt.c_str(), l);
+  vsnprintf(buffer, sizeof(buffer), fmt.c_str(), l);
   return string(buffer);
 }
 
@@ -48,7 +49,7 @@ string VStringPrintf(string fmt, va_list l) {
  *   */
 string StringPrintf(string fmt, ...) {
   va_list l;
-  va_start(l, fmt); //fmt.AsString().c_str());
+  va_start(l, fmt);  // fmt.AsString().c_str());
   string result = VStringPrintf(fmt, l);
   va_end(l);
   return result;
@@ -64,6 +65,14 @@ void Debug() {
     sleep(5);
 }
 
+void  CreateFolder(const std::string name) {
+  struct stat buffer;
+  if (stat(name.c_str(), &buffer) != 0) {
+    mkdir(name.c_str(), S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH);
+    CHECK_EQ(stat(name.c_str(), &buffer), 0);
+  }
+}
+
 // the proto related functions are from Caffe.
 void ReadProtoFromTextFile(const char* filename, Message* proto) {
   int fd = open(filename, O_RDONLY);
@@ -100,24 +109,22 @@ void WriteProtoToBinaryFile(const Message& proto, const char* filename) {
   CHECK_NE(fd, -1) << "File cannot open: " << filename;
   CHECK(proto.SerializeToFileDescriptor(fd));
 }
-int gcd(int a, int b)
-{
-  for (;;)
-  {
+
+int gcd(int a, int b) {
+  for (;;) {
     if (a == 0) return b;
     b %= a;
     if (b == 0) return a;
     a %= b;
   }
 }
-int LeastCommonMultiple(int a, int b)
-{
+int LeastCommonMultiple(int a, int b) {
   int temp = gcd(a, b);
 
   return temp ? (a / temp * b) : 0;
 }
 
-const std::string GetHostIP(){
+const string GetHostIP() {
   int fd;
   struct ifreq ifr;
 
@@ -135,7 +142,23 @@ const std::string GetHostIP(){
 
   string ip(inet_ntoa(((struct sockaddr_in *)&ifr.ifr_addr)->sin_addr));
   /* display result */
-  LOG(INFO)<<"Host IP=("<<ip;
+  LOG(INFO) << "Host IP=(" << ip;
   return ip;
 }
+
+void SetupLog(const std::string& workspace, const std::string& model) {
+  std::string folder = workspace+"/log/";
+  // TODO check if NFS, then create folder using script otherwise may have
+  // problems due to multiple processes create the same folder.
+  CreateFolder(folder);
+  std::string warn = folder + model + "-warn-";
+  std::string info = folder + model + "-info-";
+  std::string error = folder + model + "-error-";
+  std::string fatal = folder + model + "-fatal-";
+  google::SetLogDestination(google::WARNING, warn.c_str());
+  google::SetLogDestination(google::INFO, info.c_str());
+  google::SetLogDestination(google::ERROR, error.c_str());
+  google::SetLogDestination(google::FATAL, fatal.c_str());
+}
+
 }  // namespace singa


[2/2] incubator-singa git commit: SINGA-25 - Setup glog output path

Posted by wa...@apache.org.
SINGA-25 - Setup glog output path

Make the log_dir an optional configuration in cluster.conf.
If this field is not set, then log is output to /tmp/ using glog's default file name.
If this field is set, then log is output to log_dir folder with the file name as <model name>-<log level>-<date time>


Project: http://git-wip-us.apache.org/repos/asf/incubator-singa/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-singa/commit/f234c497
Tree: http://git-wip-us.apache.org/repos/asf/incubator-singa/tree/f234c497
Diff: http://git-wip-us.apache.org/repos/asf/incubator-singa/diff/f234c497

Branch: refs/heads/master
Commit: f234c4972e5e027eb43643626d9e48602f460874
Parents: 90c2694
Author: wang wei <wa...@comp.nus.edu.sg>
Authored: Fri Jun 26 23:26:36 2015 +0800
Committer: wang wei <wa...@comp.nus.edu.sg>
Committed: Fri Jun 26 23:26:36 2015 +0800

----------------------------------------------------------------------
 src/main.cc             |  3 ++-
 src/proto/cluster.proto |  2 +-
 src/utils/common.cc     | 13 ++++++-------
 3 files changed, 9 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/f234c497/src/main.cc
----------------------------------------------------------------------
diff --git a/src/main.cc b/src/main.cc
index 2a52c07..4c2bb03 100644
--- a/src/main.cc
+++ b/src/main.cc
@@ -42,7 +42,8 @@ int main(int argc, char **argv) {
   singa::ReadProtoFromTextFile(FLAGS_cluster.c_str(), &cluster);
   singa::ModelProto model;
   singa::ReadProtoFromTextFile(FLAGS_model.c_str(), &model);
-  singa::SetupLog(cluster.workspace(), model.name());
+  if(cluster.has_log_dir())
+    singa::SetupLog(cluster.log_dir(), model.name());
 
   LOG(INFO) << "The cluster config is\n" << cluster.DebugString();
   LOG(INFO) << "The model config is\n" << model.DebugString();

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/f234c497/src/proto/cluster.proto
----------------------------------------------------------------------
diff --git a/src/proto/cluster.proto b/src/proto/cluster.proto
index 8fbdbbe..1480cc1 100644
--- a/src/proto/cluster.proto
+++ b/src/proto/cluster.proto
@@ -21,7 +21,7 @@ message ClusterProto {
   // local workspace, train/val/test shards, checkpoint files
   required string workspace = 14;
   // relative path to workspace. if not set, use the default dir of glog
-  optional string log_dir = 15 [default="/tmp"];
+  optional string log_dir = 15;
   // ip/hostname : port [, ip/hostname : port]
   optional string zookeeper_host = 16 [default = "localhost:2181"];
   // message size limit, default 1MB

http://git-wip-us.apache.org/repos/asf/incubator-singa/blob/f234c497/src/utils/common.cc
----------------------------------------------------------------------
diff --git a/src/utils/common.cc b/src/utils/common.cc
index 1f3f1b6..67b4486 100644
--- a/src/utils/common.cc
+++ b/src/utils/common.cc
@@ -146,15 +146,14 @@ const string GetHostIP() {
   return ip;
 }
 
-void SetupLog(const std::string& workspace, const std::string& model) {
-  std::string folder = workspace+"/log/";
+void SetupLog(const std::string& log_dir, const std::string& model) {
   // TODO check if NFS, then create folder using script otherwise may have
   // problems due to multiple processes create the same folder.
-  CreateFolder(folder);
-  std::string warn = folder + model + "-warn-";
-  std::string info = folder + model + "-info-";
-  std::string error = folder + model + "-error-";
-  std::string fatal = folder + model + "-fatal-";
+  CreateFolder(log_dir);
+  std::string warn = log_dir + "/" + model + "-warn-";
+  std::string info = log_dir + "/" +  model + "-info-";
+  std::string error = log_dir + "/" +  model + "-error-";
+  std::string fatal = log_dir + "/" + model + "-fatal-";
   google::SetLogDestination(google::WARNING, warn.c_str());
   google::SetLogDestination(google::INFO, info.c_str());
   google::SetLogDestination(google::ERROR, error.c_str());