Error running concurrent process and storing results in array

drug drug2004 at bk.ru
Wed May 6 06:54:07 UTC 2020


06.05.2020 09:43, data pulverizer пишет:
> On Wednesday, 6 May 2020 at 05:50:23 UTC, drug wrote:
>> General advice - try to avoid using `array` and `new` in hot code. 
>> Memory allocating is slow in general, except if you use carefully 
>> crafted custom memory allocators. And that can easily be the reason of 
>> 40% cpu usage because the cores are waiting for the memory subsystem.
> 
> I changed the Matrix object from class to struct and timing went from 
> about 19 seconds with ldc2 and flags `-O5` to 13.69 seconds, but CPU 
> usage is still at ~ 40% still using `taskPool.parallel(iota(n))`. The 
> `.array` method is my method for the Matrix object just returning 
> internal data array object so it shouldn't copy. Julia is now at about 
> 34 seconds (D was at about 30 seconds while just using dmd with no 
> optimizations), to make things more interesting I also did an 
> implementation in Chapel which is now at around 9 seconds with `--fast` 
> flag.

Thing are really interesting. So there is a space to improve performance 
in 2.5 times :-)
Yes, `array` is smart enough and if you call it on another array it is 
no op.
What means `--fast` in Chapel? Do you try `--fast-math` in ldc? Don't 
know if 05 use this flag


More information about the Digitalmars-d-learn mailing list