Ik ben op het moment bezig een Iterative deepening a* algoritme te paralleliseren. ansich zou het niet een probleem zijn. Ik heb de code al uit elkaar gesplits voor meerdere threads.
Echter heb ik het gevoel dat de threads sequentieel uitgevoerd worden ipv in parallel. Als ik namelijk de -Xprof erbij haal dan zie ik namelijk dat een thread bijna 99% van zijn tijd in blocked state staat. Verder is de tijd die het sequentiele programma inneemt nagenoeg hetzelfde als de parallele implementatie.
Het programma wordt gedraait op een dual cpu. En de verwachting is dat er een nagenoeg lineare speedup moet zijn.
ik maak X threads aan die ik doormiddel van een ExecutorService in het leven roep Threads in the runnable stijl.
Verder halen ze hun input uit een bag. Dit zou misschien ervoor kunnen zorgen dat alles serieel is maar ik gok niet dat dit het probleem is. Heeft iemand enig idee of ik iets over het hoofd zie of misschien een suggestie hoe zeker kan weten wat het probleem is. Ik tast nu namelijk hartstikke in het duister. Er is vrijwel geen i/o dus er is ook eigenlijk geen reden om niet een goede speedup te verwachten.
Echter heb ik het gevoel dat de threads sequentieel uitgevoerd worden ipv in parallel. Als ik namelijk de -Xprof erbij haal dan zie ik namelijk dat een thread bijna 99% van zijn tijd in blocked state staat. Verder is de tijd die het sequentiele programma inneemt nagenoeg hetzelfde als de parallele implementatie.
Het programma wordt gedraait op een dual cpu. En de verwachting is dat er een nagenoeg lineare speedup moet zijn.
ik maak X threads aan die ik doormiddel van een ExecutorService in het leven roep Threads in the runnable stijl.
code:
1
2
3
4
5
6
7
| ExecutorService threadExecutor = Executors.newFixedThreadPool( thread );
solution = new ThreadTest[thread];
bag = new bagOfBoards();
for(int i = 0;i<thread;i++){
solution[i] = new ThreadTest(bag, lock, barrier, i);
threadExecutor.execute(solution[i]);
} |
Verder halen ze hun input uit een bag. Dit zou misschien ervoor kunnen zorgen dat alles serieel is maar ik gok niet dat dit het probleem is. Heeft iemand enig idee of ik iets over het hoofd zie of misschien een suggestie hoe zeker kan weten wat het probleem is. Ik tast nu namelijk hartstikke in het duister. Er is vrijwel geen i/o dus er is ook eigenlijk geen reden om niet een goede speedup te verwachten.
[ Voor 6% gewijzigd door justice strike op 02-02-2007 21:50 ]
U can call me sir.... or justice as long as u bow down ;)
