See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
データ並列性 - Wikipedia

データ並列性

出典: フリー百科事典『ウィキペディア(Wikipedia)』

データ並列性: Data parallelism)(あるいは ループレベル並列性,loop-level parallelism) は、複数のプロセッサを用いて演算を行う並列コンピューティングの形態の一つである。データ並列性は、異なる並列計算ノードにデータを分配することに焦点を置いている。並列性の別の形態であるタスク並列性と対照をなす。


目次

[編集] 詳細

一つの SIMD 命令セットを実行するマルチプロセッサのシステムにおいて、データ並列性は、各プロセッサが同じタスクを分配されたデータの別の部分を処理することによって得られる。

ある状況では、一つの実行スレッドがすべてのデータの演算を制御し、またある状況では、複数のスレッドが演算を制御するが、すべて同じコードを実行している。

たとえば、ここで、2 プロセッサシステム (CPU A と B)上でコードを実行する場合、並列計算環境で、あるデータ D 上の CPU A に、D のある部分を実行させ、CPU B に残りの部分を同時に実行させて、実行時間を削減することができる。データは下記に示すような If文で割り当てることができる。

より具体的な例として、二つの行列の加算を考える。データ並列性を実現するためには、CPU A は行列の前半のすべての要素を加算し、CPU B は行列の後半のすべての要素を加算する。二つのプロセッサが並列に動作するため、行列の加算は単一の CPU で同じ処理を実行する場合の半分の時間で完了する。

データ並列性は、データの処理(タスク並列性)ではなくデータの分散した(並列化された)性質に焦点を置く。実際のプログラムのほとんどはタスク並列性とデータ並列性の間のどこかに落ち着く。

[編集]

下記の擬似コードでデータ並列性を示す:

program:
...
if CPU="a" then
   low_limit=1
   upper_limit=50
else if CPU="b" then
        low_limit=51
        upper_limit=100
end if
do i = low_limit , upper_limit
       Task on d(i)
end do
...
end program

このプログラムの目標は、 (たとえば)サイズ 100 のデータの配列 "d" を処理することである。上記のようなコードを記述し、2 プロセッサシステム上で動作させると、ランタイムではそれを下記のように実行する。

  • SIMD システムでは、両方のCPUが同じコードを実行する。
  • 並列演算環境では、両方の CPU が "d" にアクセスしなければならない。
  • 各 CPU が互いに独立な "low_limit" と "upper_limit" のコピーを作成する機構があることを仮定する。
  • "if" 節が CPU 同士の処理を変化させる。CPU "a" では、"if" 節で真となり、CPU "b" では、"else if" 節で真となる。結果として、それぞれ独自の "low_limit" と "upper_limit" を持つ。
  • ここで、いずれの CPU も "d(i)のタスク" を実行するが、各 CPU が異なる "limits" を持っているため、"d" の異なる部分を同時に演算することができ、プロセッサ間にタスクをうまく配分することができる。
  • これは明らかに、シングル CPU で処理を実行するより高速である。

CPU "a" で実行されるコード:

program:
...
low_limit=1
upper_limit=50
do i = low_limit , upper_limit
       Task on d(i)
end do
...
end program

CPU "b" で実行されるコード:

program:
...
low_limit=51
upper_limit=100
do i = low_limit , upper_limit
       Task on d(i)
end do
...
end program

この概念は、任意の数のプロセッサに対して一般化できる。

[編集] 参考文献

[編集] 関連項目

他の言語


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -