[
https://issues.apache.org/jira/browse/SINGA-35?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
wangwei updated SINGA-35:
-------------------------
Issue Type: New Feature (was: Bug)
> Add random number generators
> ----------------------------
>
> Key: SINGA-35
> URL: https://issues.apache.org/jira/browse/SINGA-35
> Project: Singa
> Issue Type: New Feature
> Reporter: wangwei
>
> In SINGA-6, we added thread specific Singleton which is used to get a
> Mshadow::Random object for each thread. Hence the random number generation is
> thead-safe if using Mshadow::Random and TSingleton.
> But for other places, we are still using rand() without seeding it. One
> problem is that two process would have the same random numbers if using
> rand(). One case is the AllReduce training. If two processes (each has one
> worker) are launched, then they would randomly skip the same number of
> training records because the ShardDataLayer uses rand() to get the skip
> number. In other words, the two workers' training are exactly the same. There
> is not difference (training time and accuracy) compared with non-distributed
> training.
> A thread specific or global random number generator should be well
> initialized to avoid the above case. The thread specific generator can be
> passed to Mshadow for random distribution generation.
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)