提交 728e7e88 编写于 作者: M minqiyang

Use xxHash as scope's hash algorithm

test=develop
上级 81651fca
...@@ -82,7 +82,7 @@ cc_test(variable_test SRCS variable_test.cc) ...@@ -82,7 +82,7 @@ cc_test(variable_test SRCS variable_test.cc)
cc_library(threadpool SRCS threadpool.cc DEPS enforce) cc_library(threadpool SRCS threadpool.cc DEPS enforce)
cc_test(threadpool_test SRCS threadpool_test.cc DEPS threadpool) cc_test(threadpool_test SRCS threadpool_test.cc DEPS threadpool)
cc_library(scope SRCS scope.cc DEPS glog threadpool) cc_library(scope SRCS scope.cc DEPS glog threadpool xxhash)
cc_test(scope_test SRCS scope_test.cc DEPS scope) cc_test(scope_test SRCS scope_test.cc DEPS scope)
cc_library(data_device_transform SRCS data_device_transform.cc DEPS tensor) cc_library(data_device_transform SRCS data_device_transform.cc DEPS tensor)
......
...@@ -201,7 +201,7 @@ void Scope::RenameInternal(const std::string& origin_name, ...@@ -201,7 +201,7 @@ void Scope::RenameInternal(const std::string& origin_name,
auto new_it = vars_.find(new_name); auto new_it = vars_.find(new_name);
PADDLE_ENFORCE(new_it == vars_.end(), PADDLE_ENFORCE(new_it == vars_.end(),
"The variable with name %s is already in the scope", new_name); "The variable with name %s is already in the scope", new_name);
vars_[new_name].reset(origin_it.value().release()); vars_[new_name].reset(origin_it->second.release());
vars_.erase(origin_it); vars_.erase(origin_it);
} }
......
...@@ -14,15 +14,18 @@ limitations under the License. */ ...@@ -14,15 +14,18 @@ limitations under the License. */
#pragma once #pragma once
extern "C" {
#include <xxhash.h>
}
#include <functional> #include <functional>
#include <list> #include <list>
#include <memory> #include <memory>
#include <string> #include <string>
#include <unordered_map>
#include <utility> #include <utility>
#include <vector> #include <vector>
#include <tsl/robin_map.h> // NOLINT
#include "paddle/fluid/framework/rw_lock.h" #include "paddle/fluid/framework/rw_lock.h"
#include "paddle/fluid/framework/variable.h" #include "paddle/fluid/framework/variable.h"
#include "paddle/fluid/platform/macros.h" #include "paddle/fluid/platform/macros.h"
...@@ -35,6 +38,14 @@ bool IsFastEagerDeletionModeEnabled(); ...@@ -35,6 +38,14 @@ bool IsFastEagerDeletionModeEnabled();
class Scope; class Scope;
namespace inner {
struct KeyHasher {
std::size_t operator()(const std::string& key) const {
return XXH32(key.c_str(), key.size(), 1);
}
};
} // namespace inner
/** /**
* @brief Scope that manage all variables. * @brief Scope that manage all variables.
* *
...@@ -99,11 +110,14 @@ class Scope { ...@@ -99,11 +110,14 @@ class Scope {
std::string Rename(const std::string& origin_name) const; std::string Rename(const std::string& origin_name) const;
protected: protected:
mutable tsl::robin_map< mutable std::unordered_map<std::string, std::unique_ptr<Variable>,
std::string, std::unique_ptr<Variable>, std::hash<std::string>, inner::KeyHasher>
std::equal_to<std::string>,
std::allocator<std::pair<std::string, std::unique_ptr<Variable>>>, true>
vars_; vars_;
// mutable tsl::robin_map<
// std::string, std::unique_ptr<Variable>, std::hash<std::string>,
// std::equal_to<std::string>,
// std::allocator<std::pair<std::string, std::unique_ptr<Variable>>>, true>
// vars_;
private: private:
// Call Scope::NewScope for a sub-scope. // Call Scope::NewScope for a sub-scope.
......
...@@ -93,7 +93,7 @@ def cuda_profiler(output_file, output_mode=None, config=None): ...@@ -93,7 +93,7 @@ def cuda_profiler(output_file, output_mode=None, config=None):
with open(config_file, 'wb') as fp: with open(config_file, 'wb') as fp:
fp.writelines([six.b("%s\n" % item) for item in config]) fp.writelines([six.b("%s\n" % item) for item in config])
#Comment this for nvprof #Comment this for nvprof
#core.nvprof_init(output_file, output_mode, config_file) core.nvprof_init(output_file, output_mode, config_file)
# Enables profiler collection by the active CUDA profiling tool. # Enables profiler collection by the active CUDA profiling tool.
core.nvprof_start() core.nvprof_start()
yield yield
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册