   when to use openmp, threading, MPI
  well i know how all of them work ... in principal ... did little experiments and stuff ... had a one week course on openmp/MPIbut i cant really determine when openmp is/maybe more usefull than threading ...and how does the scheduler deside when to pass a thread to another cpu/core?i think MPI doesnt play a role in ordinary gameprogramming, except for servers-applications on distributed machines   
  I don't know how the scheduler decides what to pass and I'm not very familar with OpenMP and MPI. The basic idea though is that you get completely independent of threads, so if you have a loop, looping 250 iterations and all iterations are independent, then every iteration will get passed to a CPU. The advantage is that with a single-core machine you won't see any significant performance problems, you can fully utilize a four-cpu machine, but you can also fully utilize an 128-core machine. Being able to code a "many-core" machine is very hard with explicit threads since if you use too many threads you will loose performance and if you use too few you will also loose performance.EDIT: And 128 cores will become a reality in the future, just look at the PS3, now imagine what computers will be like in 8 years.   ;  multicore is reality for me, because we have a 1024cpu shared memory system ... so i can practical play around with that stuff ... sgi altix 3700 (imho) and some older machinesbut its very complicated to say if a loop is worth parallelizing or not :(in gameprogramming its even harder, because single modules depend heavily on each other (and syncro is expensive as we all know :( )   