tjohnson314 / scbuildorder

Automatically exported from code.google.com/p/scbuildorder
0 stars 0 forks source link

Explore the use of GPU #30

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
This type of simulation might be well suited to using GPU power to accelerate 
the genetic evolution. Maybe using CUDA and C++? Or OpenCL for the multi vendor 
support.

Original issue reported on code.google.com by Brandon....@gmail.com on 30 Nov 2010 at 6:34

GoogleCodeExporter commented 8 years ago
Using the GPU would be great, but it'd take quite a bit for me to learn how to 
do it, so it'll have to be a low priority for now.

Original comment by CarbonTw...@gmail.com on 1 Dec 2010 at 5:40

GoogleCodeExporter commented 8 years ago
Agreed. I have been looking at easy ways to implement it. I only have a C++ 
background myself. OpenCL just seems confusing to me. I've done a few genetic 
simulations myself, I am quite impressed how many children you have and the 
type of performance scbuildorder is getting. I really just want to see it on a 
GPU as a academic exercise. Really this is a perfect application of general 
purpose GPU computing. 

Original comment by Brandon....@gmail.com on 1 Dec 2010 at 5:46

GoogleCodeExporter commented 8 years ago
I can help... i have some MPI/CUDA learning.. but it would stick to NVIDIA in 
this case... Just point me out what part of the code that repeats it self more 
than several times.. This would require some serious memory contentions.. so 
memory allocations should be as independent as possible in terms of cyclic 
threads. This helps to change/add MPI/CUDA codes to GA's... if all the memory 
is kept inside the process that repeats several times.. then its easy to 
convert the code to support MPI or CUDA or any other multitasking way.

Regards
Ykw

Original comment by jose.fil...@gmail.com on 16 Apr 2011 at 3:55

GoogleCodeExporter commented 8 years ago
Help would be appreciated.  All the memory allocations are handled by memory 
pools (separate pools per class), and it uses thread local storage to have a 
separate pool per thread.  I still don't know much about GPU programming - is 
this going to make things easier or harder?

Original comment by CarbonTw...@gmail.com on 23 Apr 2011 at 12:45

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
Also... I think some new compilers are starting to do some of this auto magicly 
for say... http://www.clustermonkey.net/content/view/248/33/1/0/

Less work in learning GPU coding if it can do some of it auto for you. Also.. 
might want to think about making two different version for bit rate (64 vs 32) 
as the number of bits help with cac. performance.

Original comment by adr2tra...@gmail.com on 25 Jan 2012 at 4:46

GoogleCodeExporter commented 8 years ago
I started playing around with C++ AMP recently and there's potential there to 
help out, however based on my experiments it's only practical for very simple 
tasks that are repeated many times & parallel-able.  Most of the code of a 
genetic algorithm doesn't have a lot of repetition, except at the evolution 
stage where the task is quite complicated (basically the game simulation).  I'm 
not sure it will be easy to generically utilise GPUs for a GA.

Original comment by CarbonTw...@gmail.com on 15 Nov 2012 at 11:57

GoogleCodeExporter commented 8 years ago

Original comment by CarbonTw...@gmail.com on 18 Feb 2013 at 5:21

GoogleCodeExporter commented 8 years ago
FWIW, I've had very good experience with the PGI compiler directives. It was a 
very easily parallelizable program though; don't know about genetic 
optimization.

Original comment by laxyf...@gmail.com on 14 Mar 2013 at 3:53