job_desc.h 2.7 KB
Newer Older
W
willzhang4a58 已提交
1 2
#ifndef ONEFLOW_CORE_JOB_JOB_DESC_H_
#define ONEFLOW_CORE_JOB_JOB_DESC_H_
W
willzhang4a58 已提交
3

W
willzhang4a58 已提交
4
#include "oneflow/core/common/protobuf.h"
W
willzhang4a58 已提交
5 6
#include "oneflow/core/job/job_conf.pb.h"
#include "oneflow/core/job/job_desc.pb.h"
W
willzhang4a58 已提交
7
#include "oneflow/core/persistence/file_system.h"
W
willzhang4a58 已提交
8 9 10 11 12 13 14 15

namespace oneflow {

class JobDesc final {
 public:
  OF_DISALLOW_COPY_AND_MOVE(JobDesc);
  ~JobDesc() = default;

W
willzhang4a58 已提交
16
  OF_SINGLETON(JobDesc);
W
willzhang4a58 已提交
17

W
willzhang4a58 已提交
18
  void ToProto(JobDescProto*) const;
W
willzhang4a58 已提交
19

W
willzhang4a58 已提交
20
  // Common
W
willzhang4a58 已提交
21
  const JobConf& job_conf() const { return job_conf_; }
W
willzhang4a58 已提交
22
  const DLNetConf& dlnet_conf() const { return dlnet_conf_; }
W
willzhang4a58 已提交
23
  const Resource& resource() const { return resource_; }
W
willzhang4a58 已提交
24
  const Placement& placement() const { return placement_; }
W
willzhang4a58 已提交
25 26 27
  const std::string& md_load_snapshot_path() {
    return job_conf_.model_load_snapshot_path();
  }
W
willzhang4a58 已提交
28 29 30 31 32
  DataType default_data_type() const { return job_conf_.default_data_type(); }
  bool use_async_cpu_stream() const { return job_conf_.use_async_cpu_stream(); }
  size_t SizeOfOneDataId() const {
    return job_conf_.max_data_id_length() * sizeof(char);
  }
W
willzhang4a58 已提交
33
  int64_t TotalMachineNum() const { return resource_.machine().size(); }
W
Will Zhang 已提交
34 35 36 37 38
  int32_t CommNetIOWorkerNum() const {
    return job_conf_.comm_net_io_worker_num();
  }
  bool is_train() const { return job_conf_.has_train_conf(); }
  bool is_predict() const { return job_conf_.has_predict_conf(); }
W
willzhang4a58 已提交
39

W
willzhang4a58 已提交
40
  // Train conf
W
willzhang4a58 已提交
41
  const std::string& md_save_snapshots_path() {
W
willzhang4a58 已提交
42
    CHECK(is_train());
W
willzhang4a58 已提交
43
    return job_conf_.train_conf().model_save_snapshots_path();
W
willzhang4a58 已提交
44
  }
W
willzhang4a58 已提交
45 46 47 48
  int32_t num_of_batches_in_snapshot() const {
    CHECK(is_train());
    return job_conf_.train_conf().num_of_batches_in_snapshot();
  }
W
willzhang4a58 已提交
49
  int32_t num_of_pieces_in_batch() const {
W
willzhang4a58 已提交
50
    CHECK(is_train());
W
willzhang4a58 已提交
51
    return job_conf_.train_conf().num_of_pieces_in_batch();
W
willzhang4a58 已提交
52
  }
W
willzhang4a58 已提交
53 54 55
  int32_t staleness() const {
    CHECK(is_train());
    return job_conf_.train_conf().staleness();
W
willzhang4a58 已提交
56 57
  }
  int64_t total_batch_num() const {
W
willzhang4a58 已提交
58
    CHECK(is_train());
W
willzhang4a58 已提交
59
    return job_conf_.train_conf().total_batch_num();
W
willzhang4a58 已提交
60
  }
W
willzhang4a58 已提交
61
  const FillConf* default_fill_conf() const {
W
willzhang4a58 已提交
62
    CHECK(is_train());
W
willzhang4a58 已提交
63
    return OF_PB_POINTER_GET(job_conf_.train_conf(), default_fill_conf);
W
willzhang4a58 已提交
64
  }
W
willzhang4a58 已提交
65
  int32_t piece_num_of_record_loss() const {
W
willzhang4a58 已提交
66
    CHECK(is_train());
W
willzhang4a58 已提交
67
    return job_conf_.train_conf().piece_num_of_record_loss();
W
willzhang4a58 已提交
68
  }
W
Will Zhang 已提交
69 70 71
  int32_t SinglePieceSize() const { return job_conf_.single_piece_size(); }
  int32_t ParallelPieceSize() const {
    return job_conf_.data_part_num() * SinglePieceSize();
W
willzhang4a58 已提交
72
  }
W
Will Zhang 已提交
73 74
  int32_t BatchSize() const {
    return num_of_pieces_in_batch() * ParallelPieceSize();
W
willzhang4a58 已提交
75
  }
W
willzhang4a58 已提交
76

W
willzhang4a58 已提交
77
 private:
W
willzhang4a58 已提交
78 79
  JobDesc(const JobConf&);
  JobDesc(const JobDescProto&);
W
willzhang4a58 已提交
80

W
willzhang4a58 已提交
81
  JobConf job_conf_;
W
willzhang4a58 已提交
82
  DLNetConf dlnet_conf_;
W
willzhang4a58 已提交
83
  Resource resource_;
W
willzhang4a58 已提交
84
  Placement placement_;
W
willzhang4a58 已提交
85 86
};

W
willzhang4a58 已提交
87
}  // namespace oneflow
W
willzhang4a58 已提交
88

W
willzhang4a58 已提交
89
#endif  // ONEFLOW_CORE_JOB_JOB_DESC_H_