Closed sanjayankur31 closed 9 years ago
Hi Ankur!
Hmmm that's weird. For a MxN connection with sparseness=0.02 you would expect NxMxsparseness. In your case that would be 8000^2*0.02=1.28\times10^6 synapses (what you have without the division by two). For recurrent connections Auryn automatically excludes autapses (diagonal elements) unless you tell it otherwise. This yields a minor correction and brings you to 1279840 \pm 1131 synapses. With that said I ran the examples sim_isp_orig and (some others just to be sure) from the develop branch.
Here is what I got:
zenke@eggplant:~/auryn/build/arch/examples$ wc -l con_ee.txt
1276636 con_ee.txt
That brings us within 99.8% of the expectation. The missing 0.2% are a bit on the low side and due to some systematic error in how Auryn generates the random weights. So there is room for improvement.
Is it possible that you are running your code in parallel? The numbers would make sense if you were happening to use 16 cores. In that case each process/rank writes only its own sparse matrix with only the synapses that it stores (columns). These files have to be merged offline. For analysis I often use python or MATLAB code.
Therefore, when running in parallel the file name should include the rank number, because each rank will write its own file (something like: sprintf(strbuf, "00-Con_ee.%d.txt", rank) ). This is important because the different ranks might be executed on machines which are separated physically and often time you will write these files to one central file server. So by only writing the synapses stored in each node the bandwidth is reduced. The same rules apply for loading matrices. If you are too lazy to split sparse matrices "manually" before loading them there is also the function called _load_from_completefile which doe the splitting on the fly but will require each process to draw the complete file from the file server ...
If this is the problem you are experiencing I apologize if this wasn't documented properly. If this is not the problem, we will have to keep looking.
I spent some more time investigating the small deviation and posted my results here: http://www.fzenke.net/auryn/forum/viewtopic.php?f=7&t=26
I'll wait for you to report back on the original issue before marking this as closed.
Could not reproduce the issue - closing.
Ah, yea, I think the issue is that I wasn't passing the rank number in the file name - I had assumed that either it'd all get printed into one file, or that the function would handle it the way monitors do. I'll go rectify that. Thanks for the pointer.
Unfortunately, there currently is no nice centralized way in managing the file names in Auryn. Something on the to do list for the future...
On October 25, 2015 5:36:06 AM PDT, Ankur Sinha notifications@github.com wrote:
Ah, yea, I think the issue is that I wasn't passing the rank number in the file name - I had assumed that either it'd all get printed into one file, or that the function would handle it the way monitors do. I'll go rectify that. Thanks for the pointer.
Reply to this email directly or view it on GitHub: https://github.com/fzenke/auryn/issues/23#issuecomment-150919545
Sent from my Android device with K-9 Mail. Please excuse my brevity.
Hiya,
So, I was running the vogels model which has a set of 8000 TIF neurons that project on to themselves with a sparsity of 2%. So, the synapse group looks like this:
Now, since the sparseness is 2%, the number of expected synaptic connections here should be somewhere around:
but the dump that I get in the 00-Con_ee.txt file says:
and has about 80000 lines including the headers and all that. This is 1/8th of the expected number of connections. Would this be a bug, or am I using the sparseness parameter wrong?