SYSTEM DEVELOPMENT

SYSTEM DEVELOPMENT

並列処理するからって、必ず速くなるわけじゃないんだなーコレが(w)

目的

そろそろ、Pythonで並列処理したいなー

スループットの単純な説明として

「レジ打ちのおばちゃん」と、「レジ待ちのお客」の関係をよく持ち出すわけですが
おばちゃんが CPU(足し算が主な仕事)
レジ待ちのお客の列が ジョブ

CPUが1コアしかない、古き良き時代は…

処理しなければならないジョブの量が増えてくれば、クロック周波数を上げることで対応してた
これは、レジ待ちのお客の列が長くなれば、レジ打ちの手さばきの速度を上げることに対応します
お客が(処理すべき情報)増えるとレジ待ちの列がどんどん長くなるわけだが、その対応は…
・熟練のおばちゃんに鞭打って、無理やり手さばきを向上させる(クロックアップ)
=>物理的に限界がある(消費電力やクロック数)過労死につながるから駄目┐(´д`)┌
・熟練のレジおばちゃんを複数配置する(マルチCPU)
=>単価が高い(Pen4とかの時代)経営圧迫して駄目じゃん┐(´д`)┌
↑今となってはブラックな感じがなんとも…

んじゃどうするか

(。ŏ﹏ŏ)
( ゚д゚)ハッ!練度はそれほど高くなくても、そこそこ単純作業がこなせる単価が安いバイトの●●高生を、大量にレジに配置すりゃいいんじゃね?
(※●●は適当に想像してください)
これが並列(マルチコア)処理のベースの考え方。GPGPUもスパコンも基本こんな感じの思想。
計算コアが大量に存在して、電気代が安いとか、神すぎる↓
https://www.excite.co.jp/News/it_g/20171027/Jic_203642.html
たしかにコレで、大量のお客(情報)でも、レジを増設した分だけリニアに捌けるようには、なる。
ただし、コレは、レジ待ちしてるお客同士が全く関係を持たず、独立してる場合。

それでも下のような場合には遅延が発生してしまう

・レジ待ちのお客が家族連れで、各人が別々のレジに並ぶような場合 → 一緒に帰れないから、最後の人の会計待つハメになる
・家族連れ各人の会計の結果が、他の連れの会計に影響をおよぼすような場合 → 必要な情報が得られるまで、会計が出来ない
つまり、並列処理や並列計算のコスパを引き出すためには
CPUやGPUの計算コアに投入するデータや計算内容の、「意味を破綻させないよう、それぞれの関係を如何に上手に切断するか」が全てだったりする。
んで、この「如何に上手に」の部分は、コンパイラオプションなんかでお手軽に自動で判定「できない事が多い」のが現状で
この仕組は10年前からあんまり進歩してない(少なくともユーザ視点では)
こういった並列処理(計算)の開発にAIが適宜手を貸してくれるようになれば、シンギュラリティに王手が掛かると思う。

menu