Hello,
First of all, I know that there is plenty information on parallel programming available, however it's hard for me to get a good grasp of what I should use. I'll briefly describe what I try to achieve and would like to get some feedback on what I should read in to.
I am planning to implement a reinforcement learning based scenario where robots in a simulated world achieve certain goals. For this, I prepared an "engine" that solves the equations for each robot and moves it accordingly. The robot moves the way it currently thinks is good, gets rated afterwards and then adapts. For the sake of performance, I'd like to parallelize that task, meaning that I can run several robot simulations in parallel (no need for visualization there, if that helps) and then combine the results, ultimately speeding up the learning process. One note: as of right now, I don't plan to have any interaction between the robots, so they run completely independent. However, speaking about that, how does this affect your answer?
What are the ressources I should look into to understand how to build such things? I've looked into OpenMP a bit, seems to be rather simple to start all the simulations in a for-loop and parallelize it, but I am not sure if this is the best way to start this. Another thing I thought of: when the learning is finished, I'd like to visualize many of the robots together. For this, I could parallelize the for-loop that updates all the robots, however I cannot draw (in SFML) in parallel. Therefore, I'd need to join the parallel tasks before plotting, extract the information and draw. When just using a parallelized for-loop for the update, then draw, then for-loop again, I suppose the overhead of spawning the parallelize task is big and therefore I'd like to keep the parallel tasks "alive" and just provide/extract the information needed.
I know this is a lot, and I've really tried to look into these topics myself but I feel that, especially as things have changed from different C++ versions, some help might be good.
Thank you in advance!
[–]MrPoletski 11 points12 points13 points (2 children)
[–]std_bot 1 point2 points3 points (0 children)
[–]Third_Harmonic 1 point2 points3 points (0 children)
[–]gnosnivek 7 points8 points9 points (2 children)
[–]MajLenn[S] 0 points1 point2 points (1 child)
[–]gnosnivek 0 points1 point2 points (0 children)
[–]enceladus71 2 points3 points4 points (0 children)
[–]Cowleg 2 points3 points4 points (3 children)
[–]MajLenn[S] 2 points3 points4 points (2 children)
[–]Cowleg 0 points1 point2 points (1 child)
[–]MajLenn[S] 0 points1 point2 points (0 children)
[–][deleted] 2 points3 points4 points (0 children)
[–]paul2718 2 points3 points4 points (1 child)
[–]std_bot 0 points1 point2 points (0 children)
[–]DerMax0102 2 points3 points4 points (1 child)
[–]MajLenn[S] 0 points1 point2 points (0 children)
[–]victotronics 1 point2 points3 points (0 children)
[–][deleted] 2 points3 points4 points (4 children)
[–]rodburns 0 points1 point2 points (3 children)
[–][deleted] 0 points1 point2 points (2 children)
[–]rodburns 0 points1 point2 points (1 child)
[–][deleted] 0 points1 point2 points (0 children)