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