diff options
author | netheril96 <netheril96@gmail.com> | 2014-08-04 12:28:21 +0800 |
---|---|---|
committer | netheril96 <netheril96@gmail.com> | 2014-08-04 12:41:58 +0800 |
commit | db286e430d282d04e222a50cfca7875867b55df8 (patch) | |
tree | 52d5b9d2b137f02a62aeb09452eb5e4349be5885 /src/caffe/common.cpp | |
parent | 6b6b9b5e7b71535430dda8593a6d4ed880d50296 (diff) | |
download | caffeonacl-db286e430d282d04e222a50cfca7875867b55df8.tar.gz caffeonacl-db286e430d282d04e222a50cfca7875867b55df8.tar.bz2 caffeonacl-db286e430d282d04e222a50cfca7875867b55df8.zip |
Fix and improve multiple places about random number generation and
shuffling
Diffstat (limited to 'src/caffe/common.cpp')
-rw-r--r-- | src/caffe/common.cpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/caffe/common.cpp b/src/caffe/common.cpp index 1810bb70..019370b1 100644 --- a/src/caffe/common.cpp +++ b/src/caffe/common.cpp @@ -26,6 +26,17 @@ shared_ptr<Caffe> Caffe::singleton_; // random seeding int64_t cluster_seedgen(void) { int64_t s, seed, pid; + FILE* f = fopen("/dev/urandom", "rb"); + if (f && fread(&seed, 1, sizeof(seed), f) == sizeof(seed)) { + fclose(f); + return seed; + } + + LOG(INFO) << "System entropy source not available, " + "using fallback algorithm to generate seed instead."; + if (f) + fclose(f); + pid = getpid(); s = time(NULL); seed = abs(((s * 181) * ((pid - 83) * 359)) % 104729); @@ -75,7 +86,7 @@ Caffe::RNG::RNG() : generator_(new Generator()) { } Caffe::RNG::RNG(unsigned int seed) : generator_(new Generator(seed)) { } Caffe::RNG& Caffe::RNG::operator=(const RNG& other) { - generator_.reset(other.generator_.get()); + generator_ = other.generator_; return *this; } |