If there is very little work to be done - then you have N “threads” do M 
partitioned work. If M is 10x N you’ve decimated the synchronization cost. 

> On Jan 17, 2021, at 9:11 AM, Pete Wilson <peter.wil...@bsc.es> wrote:
> 
> The problem is that N or so channel communications twice per simulated clock 
> seems to take much longer than the time spent doing useful work.
> 
> go isn’t designed for this sort of work, so it’s not a complaint to note it’s 
> not as good as I’d like it to be.  But the other problem is that processors 
> are still architected as if most code is sequential and synchronisations (and 
> communications) are extremely rare and so no problem if they’re as slow as 
> molasses (which atomic operations are)
> 
> Your description is basically what I’m trying to do, except that I’m using 
> local storage rather than the array elements. It’s not clear that exchanging 
> array pointers is any quicker than having a 2-phase loop; the problem is 
> still the barriers.
> 
> P
> 
> 
> 
>> On Jan 16, 2021, at 11:14 PM, Bakul Shah <ba...@iitbombay.org> wrote:
>> 
>> You may be better off maintaining two state *arrays*: one that has the 
>> current values as input and one for writing the computed outputs. At 
>> "negtive" clock edge you swap the arrays. Since the input array is never 
>> modified during the half clock cycle when you compute, you can divide it up 
>> in N concurrent computations, provided a given output cell is written by 
>> just one thread. So theen the synchronization point is when all the threads 
>> are done with they computing. That is when you swap I/O state arrays, 
>> advance the clock and unblock all the threads to compute again. You can do 
>> this with N+1 channels. The tricky part may be in partitioning the 
>> computation in more or less equal N parts.
>> 
> 
> 
> 
> WARNING / LEGAL TEXT: This message is intended only for the use of the 
> individual or entity to which it is addressed and may contain information 
> which is privileged, confidential, proprietary, or exempt from disclosure 
> under applicable law. If you are not the intended recipient or the person 
> responsible for delivering the message to the intended recipient, you are 
> strictly prohibited from disclosing, distributing, copying, or in any way 
> using this message. If you have received this communication in error, please 
> notify the sender and destroy and delete any copies you may have received. 
> 
> http://www.bsc.es/disclaimer 
> 
> 
> 
> 
> 
> 
> WARNING / LEGAL TEXT: This message is intended only for the use of the 
> individual or entity to which it is addressed and may contain information 
> which is privileged, confidential, proprietary, or exempt from disclosure 
> under applicable law. If you are not the intended recipient or the person 
> responsible for delivering the message to the intended recipient, you are 
> strictly prohibited from disclosing, distributing, copying, or in any way 
> using this message. If you have received this communication in error, please 
> notify the sender and destroy and delete any copies you may have received.
> 
> http://www.bsc.es/disclaimer 
> -- 
> You received this message because you are subscribed to the Google Groups 
> "golang-nuts" group.
> To unsubscribe from this group and stop receiving emails from it, send an 
> email to golang-nuts+unsubscr...@googlegroups.com.
> To view this discussion on the web visit 
> https://groups.google.com/d/msgid/golang-nuts/FE3D2098-6E4A-4A84-BF9B-2CA04B343AA6%40bsc.es.

-- 
You received this message because you are subscribed to the Google Groups 
"golang-nuts" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to golang-nuts+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/golang-nuts/7F03F3F5-3942-4B54-A630-8CFC7E630115%40ix.netcom.com.

Reply via email to