Re: Better multithreading with D

2018-04-20 Thread 12345swordy via Digitalmars-d-learn

On Saturday, 21 April 2018 at 02:08:24 UTC, solidstate1991 wrote:
In order to call a function multiple time at parallel 
(rendering function, very well parallelizable), but in order to 
push the CPU to it's limits I have to get some form of 
parallelization. Currently I'm using parallel foreach, which 
isn't very nice, and since it uses GC allocation that creates 
some performance impact from time to time.


Did you attempt to create a memory pool with the GC? Any memory 
allocation will take time, whatever it's CG or manual.


Better multithreading with D

2018-04-20 Thread solidstate1991 via Digitalmars-d-learn
In order to call a function multiple time at parallel (rendering 
function, very well parallelizable), but in order to push the CPU 
to it's limits I have to get some form of parallelization. 
Currently I'm using parallel foreach, which isn't very nice, and 
since it uses GC allocation that creates some performance impact 
from time to time.


Re: Multithreading in D

2014-11-02 Thread Russel Winder via Digitalmars-d-learn
On Thu, 2014-10-09 at 11:29 +, Sag Academy via Digitalmars-d-learn
wrote:
 On Thursday, 9 October 2014 at 10:10:20 UTC, Konstantin wrote:
  Are you looking for parallel? 
  http://dlang.org/library/std/parallelism/parallel.html
 
  I have seen this, but I'm not sure how to use it.
 
  Maybe:
 
  float[][] maps = new float[#threads][resolution * resolution];
 
  foreach(i, ref elem; parallel(maps)){
  elem = generateTerrain(...);
  }
 
  Does this look right?
 
 Yeah, it is.

Or maybe not. The code above is fine per se, but only tackles the
generation phase, there will be later phases. It may be that other parts
of http://dlang.org/library/std/parallelism.html used slightly
differently would be better for describing more of the problem. taskPool
has a lot of interesting capabilities, including parallel reduce which
gives a full map–reduce type scatter–gather approach: OP did mention
that there was a generation then integration activity overall.

Of course, if absolute performance is required things get a bit more
tricky avoiding overheads.

-- 
Russel.
=
Dr Russel Winder  t: +44 20 7585 2200   voip: sip:russel.win...@ekiga.net
41 Buckmaster Roadm: +44 7770 465 077   xmpp: rus...@winder.org.uk
London SW11 1EN, UK   w: www.russel.org.uk  skype: russel_winder


signature.asc
Description: This is a digitally signed message part


Re: Multithreading in D

2014-10-09 Thread Konstantin via Digitalmars-d-learn
Are you looking for parallel? 
http://dlang.org/library/std/parallelism/parallel.html


I have seen this, but I'm not sure how to use it.

Maybe:

float[][] maps = new float[#threads][resolution * resolution];

foreach(i, ref elem; parallel(maps)){
elem = generateTerrain(...);
}

Does this look right?



Re: Multithreading in D

2014-10-09 Thread Sag Academy via Digitalmars-d-learn

On Thursday, 9 October 2014 at 10:10:20 UTC, Konstantin wrote:
Are you looking for parallel? 
http://dlang.org/library/std/parallelism/parallel.html


I have seen this, but I'm not sure how to use it.

Maybe:

float[][] maps = new float[#threads][resolution * resolution];

foreach(i, ref elem; parallel(maps)){
elem = generateTerrain(...);
}

Does this look right?


Yeah, it is.


Re: Multithreading in D

2014-10-09 Thread Ali Çehreli via Digitalmars-d-learn

On 10/09/2014 03:10 AM, Konstantin wrote:

Are you looking for parallel?
http://dlang.org/library/std/parallelism/parallel.html


I have seen this, but I'm not sure how to use it.


I have the following chapter with some examples:

  http://ddili.org/ders/d.en/parallelism.html

If concurrency is more suited to your application, then there is the 
following as well:


  http://ddili.org/ders/d.en/concurrency.html

Ali



Multithreading in D

2014-10-08 Thread Konstantin via Digitalmars-d-learn

Hello D-World,

I've written a small terraingenerator in D based on the 
Hill-Algorithm.


To generate a terrain I only need to call the method 
generateTerrain(...) which returns a float-Array containing the 
height of each pixel (2D Array mapped with a 1D array with length 
resolution^2).


What I'd like to do:
Generate #treads seperate maps in a own thread and combine and 
normalize them afterwards.


I have little to no experience working with multiple threads. I 
tried it once in java for University but did not really get 
working.


What I imagine as solution (I know it won't work this way, but to 
give you a better idea):


for(int i = 0; i  #threads; i++){
runInThread(generateTerrain(...));
}

Greetings and thanks in advance Konstantin


Re: Multithreading in D

2014-10-08 Thread AsmMan via Digitalmars-d-learn
What I imagine as solution (I know it won't work this way, but 
to give you a better idea):


for(int i = 0; i  #threads; i++){
runInThread(generateTerrain(...));
}


Are you looking for parallel? 
http://dlang.org/library/std/parallelism/parallel.html