summaryrefslogtreecommitdiff
path: root/src/caffe/common.cpp
diff options
context:
space:
mode:
authornetheril96 <netheril96@gmail.com>2014-08-04 12:28:21 +0800
committernetheril96 <netheril96@gmail.com>2014-08-04 12:41:58 +0800
commitdb286e430d282d04e222a50cfca7875867b55df8 (patch)
tree52d5b9d2b137f02a62aeb09452eb5e4349be5885 /src/caffe/common.cpp
parent6b6b9b5e7b71535430dda8593a6d4ed880d50296 (diff)
downloadcaffeonacl-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.cpp13
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;
}