Research involves designing less complex systems to support fine grain parallelism and extracting coarse grain parallelism from a larger set of problem domains.
Examples of parallel computing can be found at
A basic problem in automatically extracting parallelism from programs is that very complex analysis is typically necessary to ensure that parallel execution is "safe". Functional programming languages are inherently safer because function calls have no side-effects, and thus won't interfere with other concurrent function calls. I've recently been examining Haskell, a rather elegant language which has several parallel implementations. More recently I discovered Fortress, a somewhat derivitive language.