I want to generate SampleUniform Tensor on GPU backend with TVM, but I find that it has not been realized.
void SampleUniform(DLTensor* data, float low, float high) {
CHECK_GT(high, low) << “high must be bigger than low”;
CHECK(data->strides == nullptr);
DLDataType dtype = data->dtype;
int64_t size = 1;
for (int i = 0; i < data->ndim; ++i) {
size *= data->shape[i];
}
CHECK(dtype.code == kDLFloat && dtype.bits == 32 && dtype.lanes == 1);
if (data->ctx.device_type == kDLCPU) {
std::uniform_real_distribution<float> uniform_dist(low, high);
std::generate_n(static_cast<float*>(data->data), size, [&] () {
return uniform_dist(rnd_engine_);
});
} else {
LOG(FATAL) << "Do not support random.uniform on this device yet";
}
}
Have anyone come across similar problems?
Could you give me some suggestions on how to relaize the ELSE part(data->ctx.device_type == kDLGPU)?
Thanks a lot
@nhynes
@tqchen