Browse Source

!17163 warn fixes

From: @zetongzhao
Reviewed-by: @robingrosman
Signed-off-by:
tags/v1.3.0
mindspore-ci-bot Gitee 4 years ago
parent
commit
6db8f664a5
2 changed files with 37 additions and 20 deletions
  1. +5
    -2
      mindspore/ccsrc/minddata/dataset/engine/datasetops/source/random_data_op.cc
  2. +32
    -18
      mindspore/ccsrc/minddata/dataset/util/buddy.cc

+ 5
- 2
mindspore/ccsrc/minddata/dataset/engine/datasetops/source/random_data_op.cc View File

@@ -25,6 +25,9 @@
#include "minddata/dataset/util/wait_post.h"
#include "minddata/dataset/engine/datasetops/source/sampler/sequential_sampler.h"

#define TYPE_OFFSET 2
#define UNI_MAX 255

namespace mindspore {
namespace dataset {
// Builder constructor. Creates the builder object.
@@ -115,7 +118,7 @@ void RandomDataOp::GenerateSchema() {
// For each column:
// - choose a datatype
// - generate a shape that randomly chooses the number of dimensions and the dimension values.
DataType::Type newType = static_cast<DataType::Type>(GenRandomInt(1, DataType::NUM_OF_TYPES - 2));
DataType::Type newType = static_cast<DataType::Type>(GenRandomInt(1, DataType::NUM_OF_TYPES - TYPE_OFFSET));
int32_t rank = GenRandomInt(1, kMaxRank);
std::vector<dsize_t> dims;
for (int32_t d = 0; d < rank; d++) {
@@ -318,7 +321,7 @@ Status RandomDataOp::CreateRandomRow(int32_t worker_id, TensorRow *new_row) {

// Generate a random byte of data. This may cause some funny data for things like doubles,floats, bools
// however the random data op is not too concerned about the physical data itself.
std::uniform_int_distribution<uint8_t> uniDist(0, 255);
std::uniform_int_distribution<uint8_t> uniDist(0, UNI_MAX);
uint8_t random_byte = uniDist(rand_gen_);

// Now, create a chunk of memory for the entire tensor and copy this byte in repeatedly.


+ 32
- 18
mindspore/ccsrc/minddata/dataset/util/buddy.cc View File

@@ -20,6 +20,20 @@
#include "minddata/dataset/util/memory_pool.h"
#include "minddata/dataset/util/log_adapter.h"

#define ADDR_OFFSET 4
#define BIT_OFFSET 3
#define BIT_OFFSET2 2
#define BIT_OFFSET3 3
#define BITLEFTSHIFT 2
#define LOG_SZ_STEP 2
#define LVL_MIN 3
#define LVL_MAX 18
#define LVL_OFFSET 4
#define kFloatToPercent 100
#define POS_OFFSET 2
#define REL_SZ2 2
#define SHIFT_OFFSET 2

inline uint64_t BitLeftShift(uint64_t v, uint64_t n) { return (v << n); }

inline uint64_t BitRightShift(uint64_t v, uint64_t n) { return (v >> n); }
@@ -37,7 +51,7 @@ Status BuddySpace::Init() {
return Status(StatusCode::kMDUnexpectedError, __LINE__, __FILE__,
"log_min must be positive : " + std::to_string(log_min_));
}
if (num_lvl_ < 3 || num_lvl_ > 18) {
if (num_lvl_ < LVL_MIN || num_lvl_ > LVL_MAX) {
return Status(StatusCode::kMDUnexpectedError, __LINE__, __FILE__,
"num_lvl must be between 3 and 18 : " + std::to_string(num_lvl_));
}
@@ -45,7 +59,7 @@ Status BuddySpace::Init() {
max_ = BitLeftShift(1, log_min_ + num_lvl_ - 1);
size_t offset_1 = sizeof(rel_addr_t) * num_lvl_;
size_t offset_2 = sizeof(int) * num_lvl_ + offset_1;
size_t offset_3 = sizeof(char) * BitLeftShift(1, num_lvl_ - 3) + offset_2;
size_t offset_3 = sizeof(char) * BitLeftShift(1, num_lvl_ - BIT_OFFSET3) + offset_2;
try {
mem_ = std::make_unique<uint8_t[]>(offset_3);
} catch (const std::bad_alloc &e) {
@@ -57,7 +71,7 @@ Status BuddySpace::Init() {
count_ = reinterpret_cast<int *>((reinterpret_cast<char *>(ptr) + offset_1));
map_ = reinterpret_cast<char *>(ptr) + offset_2;
count_[num_lvl_ - 1] = 1;
map_[0] = BitOr(MORE_BIT, num_lvl_ - 3);
map_[0] = BitOr(MORE_BIT, num_lvl_ - BIT_OFFSET);
return Status::OK();
}

@@ -110,7 +124,7 @@ std::ostream &operator<<(std::ostream &os, const BuddySpace &s) {
<< "\n";
for (int i = 0; i < s.num_lvl_; i++) {
os << "[" << i << "] = " << s.count_[i] << " ";
if (((i + 1) % 4) == 0) {
if (((i + 1) % LVL_OFFSET) == 0) {
os << "\n";
}
}
@@ -137,15 +151,18 @@ void BuddySpace::GetBuddySegState(const rel_addr_t rel_addr, size_t *rel_sz, STA
int offset;
uint64_t val = 0;
int shift;
pos = BitRightShift(rel_addr, 2);
offset = rel_addr % 4;
shift = offset * 2;
pos = BitRightShift(rel_addr, POS_OFFSET);
offset = rel_addr % ADDR_OFFSET;
shift = offset * SHIFT_OFFSET;
byte = map_[pos];
switch (offset) {
case 0:
val = byte;
break;
case 1:
case 2:
val = BitLeftShift(BitAnd(byte, 0x0F), shift);
break;
case 3:
if (offset == 1) {
val = BitLeftShift(BitAnd(byte, 0x30), shift);
@@ -153,9 +170,6 @@ void BuddySpace::GetBuddySegState(const rel_addr_t rel_addr, size_t *rel_sz, STA
val = BitLeftShift(BitAnd(byte, 0x03), shift);
}
break;
case 2:
val = BitLeftShift(BitAnd(byte, 0x0F), shift);
break;
}
if (BitAnd(val, ONE_BIT)) {
*rel_sz = 1;
@@ -163,7 +177,7 @@ void BuddySpace::GetBuddySegState(const rel_addr_t rel_addr, size_t *rel_sz, STA
*rel_sz = 2;
} else if (BitAnd(val, MORE_BIT)) {
log_t lg = BitAnd(val, 0x0F);
*rel_sz = BitLeftShift(1, lg + 2);
*rel_sz = BitLeftShift(1, lg + BITLEFTSHIFT);
} else {
*st = STATE::kEmpty;
return;
@@ -179,17 +193,17 @@ void BuddySpace::SetBuddySegState(rel_addr_t rel_addr, size_t rel_sz, STATE st)
int val = 0;
int shift;
auto log_sz = static_cast<log_t>(Log2(rel_sz));
pos = BitRightShift(rel_addr, 2);
offset = rel_addr % 4;
shift = offset * 2;
pos = BitRightShift(rel_addr, POS_OFFSET);
offset = rel_addr % ADDR_OFFSET;
shift = offset * SHIFT_OFFSET;
if (rel_sz == 1) {
val = ONE_BIT;
mask = 0xC0;
} else if (rel_sz == 2) {
} else if (rel_sz == REL_SZ2) {
val = TWO_BIT;
mask = 0xF0;
} else {
val = BitOr(log_sz - 2, MORE_BIT);
val = BitOr(log_sz - BIT_OFFSET2, MORE_BIT);
mask = 0xFF;
}
if (st == STATE::kAlloc) {
@@ -223,7 +237,7 @@ void BuddySpace::JoinBuddySeg(rel_addr_t addr, size_t blk_sz) {
rel_addr_t left = (buddy < addr) ? buddy : addr;
rel_addr_t right = left + blk_sz;
MS_ASSERT(count_[log_sz] >= 2);
count_[log_sz] -= 2;
count_[log_sz] -= LOG_SZ_STEP;
SetBuddySegState(right, blk_sz, STATE::kEmpty);
SetBuddySegState(left, BitLeftShift(blk_sz, 1), STATE::kFree);
for (int i = 0; i < log_sz; i++) {
@@ -353,7 +367,7 @@ int BuddySpace::PercentFree() const {
uint64_t blk_sz = BitLeftShift(1, i);
total_free_sz += (blk_sz * cnt);
}
return static_cast<int>(static_cast<float>(total_free_sz) / static_cast<float>(max_sz_in_unit) * 100);
return static_cast<int>(static_cast<float>(total_free_sz) / static_cast<float>(max_sz_in_unit) * kFloatToPercent);
}

BuddySpace::BuddySpace(int log_min, int num_lvl)


Loading…
Cancel
Save