▁IBM ▁P OW ER ▁multi - core ▁process ors ). ▁The ▁number ▁of ▁cores ▁per ▁S MP ▁node ▁probably ▁will ▁be ▁dou bling ▁next ▁couple ▁of ▁years ▁according ▁to ▁the ▁un ve iled ▁plans ▁of ▁computer ▁manufact uring ▁companies . ▁ ▁Multi - c ores ▁are ▁intended ▁to ▁explo it ▁a ▁thread - level ▁parallel ism , ▁identified ▁by ▁software . ▁Hence , ▁the ▁most ▁challeng ing ▁task ▁is ▁to ▁find ▁an ▁efficient ▁way ▁of ▁how ▁to ▁har ness ▁power ▁of ▁multi - core ▁process ors ▁for ▁processing ▁an ▁application ▁program ▁in ▁parallel . ▁Ex istent ▁Open MP ▁parad ig m ▁of ▁the ▁static ▁parallel ization ▁with ▁a ▁fork - join ▁runtime ▁library ▁works ▁pretty ▁well ▁for ▁loop - int ensive ▁regular ▁array - based ▁comput ations ▁only , ▁however , ▁compile - time ▁parallel ization ▁methods ▁are ▁weak ▁in ▁general ▁and ▁almost ▁in app lic able ▁for ▁irregular ▁applications : ▁ ▁There ▁are ▁many ▁operations ▁that ▁take ▁a ▁non - det erm in istic ▁amount ▁of ▁time ▁making ▁it ▁difficult ▁to ▁know ▁exactly ▁when ▁certain ▁pieces ▁of ▁data ▁will ▁become ▁available . ▁ ▁A ▁memory ▁hierarchy ▁with ▁multi - level ▁c aches ▁has ▁un predict able ▁memory ▁access ▁laten cies . ▁ ▁A ▁multi - user ▁mode ▁other ▁people ' s ▁codes ▁can ▁use ▁up ▁resources ▁or ▁slow ▁down ▁a ▁part ▁of ▁the ▁computation ▁in ▁a ▁way ▁that ▁the ▁compiler ▁cannot ▁account ▁for . ▁ ▁Comp ile - time ▁inter - pro ced ural ▁and ▁cross - cond itional ▁optim izations ▁are