提交 f2feb333 编写于 作者: Y Yu Yang

Follow comments

上级 ae3dca77
...@@ -451,8 +451,8 @@ class OperatorWithKernel : public OperatorBase { ...@@ -451,8 +451,8 @@ class OperatorWithKernel : public OperatorBase {
size_t operator()(const OpKernelKey& key) const { size_t operator()(const OpKernelKey& key) const {
int place = key.place_.which(); int place = key.place_.which();
int data_type = static_cast<int>(key.data_type_); int data_type = static_cast<int>(key.data_type_);
// NOTE: Number of places limit to 16. int pre_hash = data_type << NUM_PLACE_TYPE_LIMIT_IN_BIT |
int pre_hash = data_type << 4 | (place & 0x0F); (place & ((1 << NUM_PLACE_TYPE_LIMIT_IN_BIT) - 1));
return hash_(pre_hash); return hash_(pre_hash);
} }
}; };
......
...@@ -15,6 +15,7 @@ limitations under the License. */ ...@@ -15,6 +15,7 @@ limitations under the License. */
#pragma once #pragma once
#include <iostream> #include <iostream>
#include "paddle/platform/variant.h" #include "paddle/platform/variant.h"
namespace paddle { namespace paddle {
...@@ -46,8 +47,18 @@ struct IsGPUPlace : public boost::static_visitor<bool> { ...@@ -46,8 +47,18 @@ struct IsGPUPlace : public boost::static_visitor<bool> {
bool operator()(const GPUPlace &gpu) const { return true; } bool operator()(const GPUPlace &gpu) const { return true; }
}; };
// Define the max number of Place in bit length. i.e., the max number of places
// should be less equal than 2^(NUM_PLACE_TYPE_LIMIT_IN_BIT)
#define NUM_PLACE_TYPE_LIMIT_IN_BIT 4
typedef boost::variant<GPUPlace, CPUPlace> Place; typedef boost::variant<GPUPlace, CPUPlace> Place;
// static check number of place types is less equal than
// 2^(NUM_PLACE_TYPE_LIMIT_IN_BIT)
BOOST_MPL_ASSERT((boost::mpl::less_equal<
Place::types::size,
boost::mpl::long_<1 << NUM_PLACE_TYPE_LIMIT_IN_BIT>>));
void set_place(const Place &); void set_place(const Place &);
const Place &get_place(); const Place &get_place();
......
...@@ -29,4 +29,6 @@ ...@@ -29,4 +29,6 @@
#endif #endif
#endif #endif
#include <boost/mpl/comparison.hpp>
#include <boost/mpl/less_equal.hpp>
#include <boost/variant.hpp> #include <boost/variant.hpp>
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册