Inkább a célfeladat felől érdemes ezt megközelíteni:
-ha egyszerűen egy gépen szeretnéd kihasználni az összes magot a felhasználói programodban, akkor pthread, openmp esetleg tbb
-ha van egy nagy számításigényű tudományos feladatod (én ilyenekkel foglalkozom) akkor érdemes lehet több gépet, esetleg GPU-t bevonni a játékba. Ehhez lehet jó az MPI (ez egy szabvány) illetve ennek adott implementációi (OpenMPI, MPICH).
-ha olyan a feladat akkor lehet, hogy van hozzá függvénykönyvtár ami eleve használja az MPI-t és így tud több szálon/processzoron futni (pl. PETSc)
ahogy már többen írták, mindegyik esetben előbb ülj le gondolkodni, mert lehet, hogy a probléma jellegéből adódóan nem is érdemes beleölni az időt a párhuzamosításba.