Change memset kernel to use memcpy instead of placement new. Simplify indexers.

[ROCm/clr commit: d5c8de3f41]
This commit is contained in:
Alex Voicu
2017-11-28 19:45:47 +00:00
parent 914acbe88f
commit abf92dd6e7
2 changed files with 7 additions and 13 deletions
@@ -389,18 +389,9 @@ template<typename std::common_type<
class Coordinates {
using R = decltype(f(0));
struct X {
__device__ operator R() const { return f(0); }
__host__ operator R() const { return R{}; }
};
struct Y {
__device__ operator R() const { return f(1); }
__host__ operator R() const { return R{}; }
};
struct Z {
__device__ operator R() const { return f(2); }
__host__ operator R() const { return R{}; }
};
struct X { __device__ operator R() const { return f(0); } };
struct Y { __device__ operator R() const { return f(1); } };
struct Z { __device__ operator R() const { return f(2); } };
public:
static constexpr X x{};
static constexpr Y y{};
+4 -1
View File
@@ -1311,7 +1311,10 @@ namespace
size_t idx = blockIdx.x * block_dim + threadIdx.x;
while (idx < n) {
new (&f[idx]) T{value};
__builtin_memcpy(
reinterpret_cast<void*>(&f[idx]),
reinterpret_cast<const void*>(&value),
sizeof(T));
idx += grid_dim;
}
}