* \brief Creates a new random-number generator using the specified seed * \param seed the seed */
| 190 | * \param seed the seed |
| 191 | */ |
| 192 | SimpleRandom(unsigned int seed) |
| 193 | : state_(numStates) |
| 194 | { |
| 195 | std::default_random_engine rnd(seed); |
| 196 | std::uniform_int_distribution<internal::kernels::state_t> distr; |
| 197 | std::vector<unsigned long long> v(numStates); |
| 198 | for (size_t i=0; i<numStates; ++i) |
| 199 | { |
| 200 | v[i] = distr(rnd); |
| 201 | } |
| 202 | CUMAT_SAFE_CALL(cudaMemcpyAsync(state_.pointer(), v.data(), |
| 203 | numStates * sizeof(internal::kernels::state_t), cudaMemcpyHostToDevice, Context::current().stream())); |
| 204 | } |
| 205 | |
| 206 | /** |
| 207 | * \brief Creates a new random number generator using the current time as seed. |