forked from mindspore-Ecosystem/mindspore
!31488 code clean
Merge pull request !31488 from chenweifeng/code-clean
This commit is contained in:
commit
2efd7ae542
|
@ -36,7 +36,7 @@ FIFOReplayBuffer::FIFOReplayBuffer(size_t capacity, const std::vector<size_t> &s
|
|||
|
||||
void *ptr = device::cpu::CPUMemoryPool::GetInstance().AllocTensorMem(alloc_size);
|
||||
AddressPtr item = std::make_shared<Address>(ptr, alloc_size);
|
||||
buffer_.emplace_back(item);
|
||||
(void)buffer_.emplace_back(item);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -57,7 +57,7 @@ bool FIFOReplayBuffer::Push(const std::vector<AddressPtr> &inputs) {
|
|||
size_ = size_ >= capacity_ ? capacity_ : size_ + 1;
|
||||
|
||||
for (size_t i = 0; i < inputs.size(); i++) {
|
||||
void *offset = reinterpret_cast<char *>(buffer_[i]->addr) + head_ * schema_[i];
|
||||
void *offset = reinterpret_cast<uint8_t *>(buffer_[i]->addr) + head_ * schema_[i];
|
||||
auto ret = memcpy_s(offset, buffer_[i]->size, inputs[i]->addr, inputs[i]->size);
|
||||
if (ret != EOK) {
|
||||
MS_LOG(EXCEPTION) << "memcpy_s() failed. Error code: " << ret;
|
||||
|
@ -74,7 +74,7 @@ std::vector<AddressPtr> FIFOReplayBuffer::GetItem(size_t idx) {
|
|||
|
||||
std::vector<AddressPtr> ret;
|
||||
for (size_t i = 0; i < schema_.size(); i++) {
|
||||
void *offset = reinterpret_cast<char *>(buffer_[i]->addr) + schema_[i] * idx;
|
||||
void *offset = reinterpret_cast<uint8_t *>(buffer_[i]->addr) + schema_[i] * idx;
|
||||
ret.push_back(std::make_shared<Address>(offset, schema_[i]));
|
||||
}
|
||||
|
||||
|
@ -85,12 +85,12 @@ std::vector<std::vector<AddressPtr>> FIFOReplayBuffer::GetItems(const std::vecto
|
|||
std::vector<std::vector<AddressPtr>> ret;
|
||||
for (const auto &idx : indices) {
|
||||
auto item = GetItem(idx);
|
||||
ret.emplace_back(item);
|
||||
(void)ret.emplace_back(item);
|
||||
}
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
const std::vector<AddressPtr> &FIFOReplayBuffer::GetAll() { return buffer_; }
|
||||
const std::vector<AddressPtr> &FIFOReplayBuffer::GetAll() const { return buffer_; }
|
||||
} // namespace kernel
|
||||
} // namespace mindspore
|
||||
|
|
|
@ -42,13 +42,13 @@ class FIFOReplayBuffer {
|
|||
std::vector<std::vector<AddressPtr>> GetItems(const std::vector<size_t> &indices);
|
||||
|
||||
// Get all transitions.
|
||||
const std::vector<AddressPtr> &GetAll();
|
||||
const std::vector<AddressPtr> &GetAll() const;
|
||||
|
||||
// Return the latest transition index. It returns -1 if the replay buffer is empty.
|
||||
size_t head() { return head_; }
|
||||
size_t head() const { return head_; }
|
||||
|
||||
// Return the valid transitions number.
|
||||
size_t size() { return size_; }
|
||||
size_t size() const { return size_; }
|
||||
|
||||
protected:
|
||||
size_t capacity_;
|
||||
|
|
|
@ -33,7 +33,7 @@ PriorityItem PriorityTree::ReduceOp(const PriorityItem &lhs, const PriorityItem
|
|||
return PriorityItem(lhs.sum_priority + rhs.sum_priority, std::min(lhs.min_priority, rhs.min_priority));
|
||||
}
|
||||
|
||||
size_t PriorityTree::GetPrefixSumIdx(float prefix_sum) {
|
||||
size_t PriorityTree::GetPrefixSumIdx(float prefix_sum) const {
|
||||
size_t idx = 1;
|
||||
while (idx < capacity_) {
|
||||
const auto &left_priority = buffer_[kNumSubnodes * idx].sum_priority;
|
||||
|
@ -48,7 +48,7 @@ size_t PriorityTree::GetPrefixSumIdx(float prefix_sum) {
|
|||
return idx - capacity_;
|
||||
}
|
||||
|
||||
PriorityReplayBuffer::PriorityReplayBuffer(int seed, float alpha, float beta, size_t capacity,
|
||||
PriorityReplayBuffer::PriorityReplayBuffer(uint32_t seed, float alpha, float beta, size_t capacity,
|
||||
const std::vector<size_t> &schema)
|
||||
: alpha_(alpha), beta_(beta), capacity_(capacity), max_priority_(1.0), schema_(schema) {
|
||||
random_engine_.seed(seed);
|
||||
|
@ -57,7 +57,7 @@ PriorityReplayBuffer::PriorityReplayBuffer(int seed, float alpha, float beta, si
|
|||
}
|
||||
|
||||
bool PriorityReplayBuffer::Push(const std::vector<AddressPtr> &items) {
|
||||
fifo_replay_buffer_->Push(items);
|
||||
(void)fifo_replay_buffer_->Push(items);
|
||||
auto idx = fifo_replay_buffer_->head();
|
||||
|
||||
// Set max priority for the newest item.
|
||||
|
@ -71,7 +71,7 @@ bool PriorityReplayBuffer::UpdatePriorities(const std::vector<size_t> &indices,
|
|||
}
|
||||
|
||||
for (size_t i = 0; i < indices.size(); i++) {
|
||||
float priority = pow(priorities[i], alpha_);
|
||||
float priority = static_cast<float>(pow(priorities[i], alpha_));
|
||||
if (priority <= 0.0f) {
|
||||
MS_LOG(WARNING) << "The priority is " << priority << ". It may lead to converge issue.";
|
||||
priority = kMinPriority;
|
||||
|
@ -91,7 +91,7 @@ std::tuple<std::vector<size_t>, std::vector<float>, std::vector<std::vector<Addr
|
|||
const PriorityItem &root = priority_tree_->Root();
|
||||
float sum_priority = root.sum_priority;
|
||||
float min_priority = root.min_priority;
|
||||
float size = fifo_replay_buffer_->size();
|
||||
size_t size = fifo_replay_buffer_->size();
|
||||
float max_weight = Weight(min_priority, sum_priority, size);
|
||||
float segment_len = root.sum_priority / batch_size;
|
||||
|
||||
|
@ -102,27 +102,27 @@ std::tuple<std::vector<size_t>, std::vector<float>, std::vector<std::vector<Addr
|
|||
float mass = (dist_(random_engine_) + i) * segment_len;
|
||||
size_t idx = priority_tree_->GetPrefixSumIdx(mass);
|
||||
|
||||
indices.emplace_back(idx);
|
||||
(void)indices.emplace_back(idx);
|
||||
float priority = priority_tree_->GetByIndex(idx).sum_priority;
|
||||
|
||||
if (max_weight <= 0.0f) {
|
||||
MS_LOG(WARNING) << "The max priority is " << max_weight << ". It may leads to converge issue.";
|
||||
max_weight = kMinPriority;
|
||||
}
|
||||
weights.emplace_back(Weight(priority, sum_priority, size) / max_weight);
|
||||
items.emplace_back(fifo_replay_buffer_->GetItem(idx));
|
||||
(void)weights.emplace_back(Weight(priority, sum_priority, size) / max_weight);
|
||||
(void)items.emplace_back(fifo_replay_buffer_->GetItem(idx));
|
||||
}
|
||||
|
||||
return std::forward_as_tuple(indices, weights, items);
|
||||
}
|
||||
|
||||
float PriorityReplayBuffer::Weight(float priority, float sum_priority, size_t size) {
|
||||
inline float PriorityReplayBuffer::Weight(float priority, float sum_priority, size_t size) const {
|
||||
if (sum_priority <= 0.0f) {
|
||||
MS_LOG(WARNING) << "The sum priority is " << sum_priority << ". It may leads to converge issue.";
|
||||
sum_priority = kMinPriority;
|
||||
}
|
||||
float sample_prob = priority / sum_priority;
|
||||
float weight = pow(sample_prob * size, -beta_);
|
||||
float weight = static_cast<float>(pow(sample_prob * size, -beta_));
|
||||
return weight;
|
||||
}
|
||||
} // namespace kernel
|
||||
|
|
|
@ -47,7 +47,7 @@ class PriorityTree : public SegmentTree<PriorityItem> {
|
|||
PriorityItem ReduceOp(const PriorityItem &lhs, const PriorityItem &rhs) override;
|
||||
|
||||
// Find the minimal index greater than prefix_sum.
|
||||
size_t GetPrefixSumIdx(float prefix_sum);
|
||||
size_t GetPrefixSumIdx(float prefix_sum) const;
|
||||
};
|
||||
|
||||
// PriorityReplayBuffer is experience container used in Deep Q-Networks.
|
||||
|
@ -57,7 +57,7 @@ class PriorityTree : public SegmentTree<PriorityItem> {
|
|||
class PriorityReplayBuffer {
|
||||
public:
|
||||
// Construct a fixed-length priority replay buffer.
|
||||
PriorityReplayBuffer(int seed, float alpha, float beta, size_t capacity, const std::vector<size_t> &schema);
|
||||
PriorityReplayBuffer(uint32_t seed, float alpha, float beta, size_t capacity, const std::vector<size_t> &schema);
|
||||
|
||||
// Push an experience transition to the buffer which will be given the highest priority.
|
||||
bool Push(const std::vector<AddressPtr> &items);
|
||||
|
@ -69,7 +69,7 @@ class PriorityReplayBuffer {
|
|||
bool UpdatePriorities(const std::vector<size_t> &indices, const std::vector<float> &priorities);
|
||||
|
||||
private:
|
||||
inline float Weight(float priority, float sum_priority, size_t size);
|
||||
float Weight(float priority, float sum_priority, size_t size) const;
|
||||
|
||||
float alpha_;
|
||||
float beta_;
|
||||
|
|
|
@ -42,7 +42,7 @@ void PriorityReplayBufferCreateCpuKernel::InitKernel(const CNodePtr &kernel_node
|
|||
MS_EXCEPTION_IF_CHECK_FAIL(dtypes.size() == shapes.size(), "The dtype and shapes should be same.");
|
||||
std::vector<size_t> schema;
|
||||
for (size_t i = 0; i < shapes.size(); i++) {
|
||||
size_t num_element = std::accumulate(shapes[i].begin(), shapes[i].end(), 1, std::multiplies<size_t>());
|
||||
size_t num_element = std::accumulate(shapes[i].begin(), shapes[i].end(), 1ULL, std::multiplies<size_t>());
|
||||
size_t type_size = GetTypeByte(dtypes[i]);
|
||||
schema.push_back(num_element * type_size);
|
||||
}
|
||||
|
@ -50,9 +50,9 @@ void PriorityReplayBufferCreateCpuKernel::InitKernel(const CNodePtr &kernel_node
|
|||
unsigned int seed = 0;
|
||||
std::random_device rd;
|
||||
if (seed1 != 0) {
|
||||
seed = IntToUint(seed1);
|
||||
seed = static_cast<unsigned int>(seed1);
|
||||
} else if (seed0 != 0) {
|
||||
seed = IntToUint(seed0);
|
||||
seed = static_cast<unsigned int>(seed0);
|
||||
} else {
|
||||
seed = rd();
|
||||
}
|
||||
|
@ -77,7 +77,7 @@ void PriorityReplayBufferPushCpuKernel::InitKernel(const CNodePtr &kernel_node)
|
|||
|
||||
bool PriorityReplayBufferPushCpuKernel::Launch(const std::vector<AddressPtr> &inputs, const std::vector<AddressPtr> &,
|
||||
const std::vector<AddressPtr> &outputs) {
|
||||
prioriory_replay_buffer_->Push(inputs);
|
||||
(void)prioriory_replay_buffer_->Push(inputs);
|
||||
|
||||
// Return a placeholder in case of dead code eliminate optimization.
|
||||
auto handle = GetDeviceAddress<int64_t>(outputs, 0);
|
||||
|
@ -87,14 +87,14 @@ bool PriorityReplayBufferPushCpuKernel::Launch(const std::vector<AddressPtr> &in
|
|||
|
||||
void PriorityReplayBufferSampleCpuKernel::InitKernel(const CNodePtr &kernel_node) {
|
||||
handle_ = common::AnfAlgo::GetNodeAttr<int64_t>(kernel_node, "handle");
|
||||
batch_size_ = common::AnfAlgo::GetNodeAttr<int64_t>(kernel_node, "batch_size");
|
||||
batch_size_ = LongToSize(common::AnfAlgo::GetNodeAttr<int64_t>(kernel_node, "batch_size"));
|
||||
const auto &dtypes = common::AnfAlgo::GetNodeAttr<std::vector<TypePtr>>(kernel_node, "dtypes");
|
||||
const auto &shapes = common::AnfAlgo::GetNodeAttr<std::vector<std::vector<int64_t>>>(kernel_node, "shapes");
|
||||
prioriory_replay_buffer_ = PriorityReplayBufferFactory::GetInstance().GetByHandle(handle_);
|
||||
MS_EXCEPTION_IF_NULL(prioriory_replay_buffer_);
|
||||
|
||||
for (size_t i = 0; i < shapes.size(); i++) {
|
||||
size_t num_element = std::accumulate(shapes[i].begin(), shapes[i].end(), 1, std::multiplies<size_t>());
|
||||
size_t num_element = std::accumulate(shapes[i].begin(), shapes[i].end(), 1ULL, std::multiplies<size_t>());
|
||||
size_t type_size = GetTypeByte(dtypes[i]);
|
||||
schema_.push_back(num_element * type_size);
|
||||
}
|
||||
|
@ -150,7 +150,7 @@ bool PriorityReplayBufferUpdateCpuKernel::Launch(const std::vector<AddressPtr> &
|
|||
"memcpy_s() failed.");
|
||||
MS_EXCEPTION_IF_CHECK_FAIL(memcpy_s(priorities.data(), inputs[1]->size, inputs[1]->addr, inputs[1]->size) == EOK,
|
||||
"memcpy_s() failed.");
|
||||
prioriory_replay_buffer_->UpdatePriorities(indices, priorities);
|
||||
(void)prioriory_replay_buffer_->UpdatePriorities(indices, priorities);
|
||||
|
||||
// Return a placeholder in case of dead code eliminate optimization.
|
||||
auto handle = GetDeviceAddress<int64_t>(outputs, 0);
|
||||
|
|
|
@ -82,7 +82,7 @@ class PriorityReplayBufferSampleCpuKernel : public NativeCpuKernelMod {
|
|||
|
||||
private:
|
||||
int64_t handle_{-1};
|
||||
int64_t batch_size_{0};
|
||||
size_t batch_size_{0};
|
||||
std::vector<size_t> schema_;
|
||||
std::shared_ptr<PriorityReplayBuffer> prioriory_replay_buffer_{nullptr};
|
||||
};
|
||||
|
|
|
@ -56,7 +56,7 @@ class ReplayBufferFactory {
|
|||
template <typename... _Args>
|
||||
std::tuple<int, std::shared_ptr<T>> Create(_Args... args) {
|
||||
auto instance = std::make_shared<T>(args...);
|
||||
map_handle_to_instances_.insert(std::make_pair(++handle_, instance));
|
||||
(void)map_handle_to_instances_.insert(std::make_pair(++handle_, instance));
|
||||
return std::make_tuple(handle_, instance);
|
||||
}
|
||||
|
||||
|
|
|
@ -80,7 +80,6 @@ class SegmentTree {
|
|||
|
||||
protected:
|
||||
size_t capacity_;
|
||||
size_t size_;
|
||||
std::vector<T> buffer_;
|
||||
};
|
||||
} // namespace kernel
|
||||
|
|
Loading…
Reference in New Issue