Create a new curand instead of reseeding. (#1089)

This commit is contained in:
Laurent Mazare
2023-10-14 10:03:59 +01:00
committed by GitHub
parent a193bf5f60
commit 9309cfc47d
2 changed files with 10 additions and 1 deletions

View File

@ -224,8 +224,10 @@ impl BackendDevice for CudaDevice {
}
fn set_seed(&self, seed: u64) -> Result<()> {
// We do not call set_seed but instead create a new curand object. This ensures that the
// state will be identical and the same random numbers will be generated.
let mut curand = self.curand.lock().unwrap();
curand.0.set_seed(seed).w()?;
curand.0 = cudarc::curand::CudaRng::new(seed, self.device.clone()).w()?;
Ok(())
}