17 namespace host_common {
 
   20 static inline void dumpBufferToFile(
const char* fileName, T* data, 
size_t dataNumItems)
 
   22     std::ofstream outFile(fileName, std::ios::binary);
 
   25         outFile.write(
reinterpret_cast<const char*
>(data), dataNumItems * 
sizeof(T));
 
   27         std::cout << 
"Write output to file " << fileName << std::endl;
 
   31         std::cout << 
"Could not open file " << fileName << 
" for writing" << std::endl;
 
   36 static inline T getSingleValueFromString(
const std::string& valueStr)
 
   38     std::istringstream iss(valueStr);
 
   48 static inline std::vector<T> getTypeValuesFromString(
const char* cstr_values)
 
   50     std::string valuesStr(cstr_values);
 
   52     std::vector<T> values;
 
   56     new_pos = valuesStr.find(
',', pos);
 
   57     while(new_pos != std::string::npos)
 
   59         const std::string sliceStr = valuesStr.substr(pos, new_pos - pos);
 
   61         T val = getSingleValueFromString<T>(sliceStr);
 
   63         values.push_back(val);
 
   66         new_pos = valuesStr.find(
',', pos);
 
   69     std::string sliceStr = valuesStr.substr(pos);
 
   70     T val                = getSingleValueFromString<T>(sliceStr);
 
   72     values.push_back(val);
 
   78 static inline std::vector<std::array<index_t, NDim>>
 
   79 get_index_set(
const std::array<index_t, NDim>& dim_lengths)
 
   81     static_assert(NDim >= 1, 
"NDim >= 1 is required to use this function!");
 
   83     if constexpr(NDim == 1)
 
   85         std::vector<std::array<index_t, NDim>> index_set;
 
   87         for(
int i = 0; i < dim_lengths[0]; i++)
 
   89             std::array<index_t, 1> index{i};
 
   91             index_set.push_back(index);
 
   98         std::vector<std::array<index_t, NDim>> index_set;
 
   99         std::array<
index_t, NDim - 1> partial_dim_lengths;
 
  101         std::copy(dim_lengths.begin() + 1, dim_lengths.end(), partial_dim_lengths.begin());
 
  103         std::vector<std::array<
index_t, NDim - 1>> partial_index_set;
 
  105         partial_index_set = get_index_set<NDim - 1>(partial_dim_lengths);
 
  107         for(
index_t i = 0; i < dim_lengths[0]; i++)
 
  108             for(
const auto& partial_index : partial_index_set)
 
  110                 std::array<index_t, NDim> index;
 
  114                 std::copy(partial_index.begin(), partial_index.end(), index.begin() + 1);
 
  116                 index_set.push_back(index);
 
  124 static inline size_t get_offset_from_index(
const std::array<index_t, NDim>& strides,
 
  125                                            const std::array<index_t, NDim>& index)
 
  129     for(
int i = 0; i < NDim; i++)
 
  130         offset += index[i] * strides[i];
 
auto copy(InputRange &&range, OutputIterator iter) -> decltype(std::copy(std::begin(std::forward< InputRange >(range)), std::end(std::forward< InputRange >(range)), iter))
Definition: algorithm.hpp:14
 
int32_t index_t
Definition: ck.hpp:300