TEST_F(CommonTest, TestRandSeedGPU) { SyncedMemory data_a(10 * sizeof(unsigned int)); SyncedMemory data_b(10 * sizeof(unsigned int)); Caffe::set_random_seed(1701); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), static_cast<unsigned int*>(data_a.mutable_gpu_data()), 10)); Caffe::set_random_seed(1701); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), static_cast<unsigned int*>(data_b.mutable_gpu_data()), 10)); for (int i = 0; i < 10; ++i) { EXPECT_EQ(((const unsigned int*)(data_a.cpu_data()))[i], ((const unsigned int*)(data_b.cpu_data()))[i]); } }
void curand_generator:: fill ( cuda_data_ptr<unsigned int>& data ) { if (data.size() == 0) return; CHECK_CURAND(curandGenerate((curandGenerator_t)handle, data, data.size())); }
TEST_F(CommonTest, TestRandSeedGPU) { device *dc = Caffe::GetDefaultDevice(); if (dc->backend() == BACKEND_CUDA) { #ifdef USE_CUDA SyncedMemory data_a(10 * sizeof(unsigned int), Caffe::GetDefaultDevice()); SyncedMemory data_b(10 * sizeof(unsigned int), Caffe::GetDefaultDevice()); Caffe::set_random_seed(1701, Caffe::GetDefaultDevice()); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), static_cast<unsigned int*>(data_a.mutable_gpu_data()), 10)); Caffe::set_random_seed(1701, Caffe::GetDefaultDevice()); CURAND_CHECK(curandGenerate(Caffe::curand_generator(), static_cast<unsigned int*>(data_b.mutable_gpu_data()), 10)); for (int i = 0; i < 10; ++i) { EXPECT_EQ(((const unsigned int*)(data_a.cpu_data()))[i], ((const unsigned int*)(data_b.cpu_data()))[i]); } #endif // USE_CUDA } }