提交 c0d9e41f 编写于 作者: W willzhang4a58

OF_ONCE_GUARD

上级 439a9c67
......@@ -23,7 +23,13 @@ class CommNetwork {
virtual void SendActorMsg(int64_t dst_machine_id, const ActorMsg& msg) = 0;
virtual void SetCallbackForReceivedActorMsg(
std::function<void(const ActorMsg&)> callback) = 0;
virtual void Barrier(const std::string& barrier_name) = 0;
//
void Barrier(const std::string& barrier_name) {}
bool TryLock(const std::string& name) {
return true; // TODO
}
void UnLock(const std::string& name) {}
protected:
CommNetwork() = default;
......@@ -35,10 +41,17 @@ class CommNetwork {
static CommNetwork* comm_network_ptr_;
};
#define OF_MACRO_TRICK1(x) #x
#define OF_MACRO_TRICK2(x) OF_MACRO_TRICK1(x)
#define OF_BARRIER() \
CommNetwork::Singleton()->Barrier(__FILE__ ":" OF_MACRO_TRICK2(__LINE__))
#define FILE_LINE_STR __FILE__ ":" OF_PP_STRINGIZE(__LINE__)
#define OF_BARRIER() CommNetwork::Singleton()->Barrier(FILE_LINE_STR)
#define OF_ONCE_GUARD(...) \
do { \
bool locked = CommNetwork::Singleton()->TryLock(FILE_LINE_STR); \
if (locked) { __VA_ARGS__; } \
CommNetwork::Singleton()->Barrier(FILE_LINE_STR); \
if (locked) { CommNetwork::Singleton()->UnLock(FILE_LINE_STR); } \
} while (0)
} // namespace oneflow
......
......@@ -33,9 +33,6 @@ class RdmaCommNetwork final : public CommNetwork {
std::function<void(const ActorMsg&)> callback) override {
// TODO
}
void Barrier(const std::string& barrier_name) override {
// TODO
}
private:
RdmaCommNetwork() = default;
......
......@@ -13,12 +13,7 @@ OF_DEFINE_ENUM_TO_OSTREAM_FUNC(Status);
void FileSystem::CreateDirIfNotExist(const std::string& dirname) {
if (IsDirectory(dirname) == Status::OK) { return; }
Status st = CreateDir(dirname);
if (st == Status::ALREADY_EXISTS) {
FS_CHECK_OK(IsDirectory(dirname));
} else {
FS_CHECK_OK(st);
}
FS_CHECK_OK(CreateDir(dirname));
}
std::string FileSystem::TranslateName(const std::string& name) const {
......
#ifndef ONEFLOW_CORE_PERSISTENCE_SNAPSHOT_H_
#define ONEFLOW_CORE_PERSISTENCE_SNAPSHOT_H_
#include "oneflow/core/comm_network/comm_network.h"
#include "oneflow/core/persistence/normal_persistent_in_stream.h"
#include "oneflow/core/persistence/persistent_out_stream.h"
......
......@@ -7,7 +7,7 @@ namespace oneflow {
void SnapshotMgr::Init() {
LOG(INFO) << "SnapshotMgr Init";
model_save_snapshots_path_ = JobDesc::Singleton()->md_save_snapshots_path();
GlobalFS()->CreateDirIfNotExist(model_save_snapshots_path_);
OF_ONCE_GUARD(GlobalFS()->CreateDirIfNotExist(model_save_snapshots_path_));
std::vector<std::string> result;
FS_CHECK_OK(GlobalFS()->GetChildren(model_save_snapshots_path_, &result));
CHECK_EQ(result.size(), 0);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册