プログラミング
並列プログラミングの禅
The Zen of Parallel Programming (smolnero.com)
要約
並列プログラミングにおけるプロセッサ間の通信、同期、ワークロードの分割といった概念は、人間の内面や人間関係におけるコミュニケーションと類似していると論じています。計算能力の向上だけでは問題解決につながらず、既存の力をいかに調整するかが重要であり、これは人間も同様に、内面の各要素が調和して機能することが重要であると示唆しています。
全文翻訳
並列プログラミング入門を読み進めるにつれて、プロセッサ間の通信、人間同士のコミュニケーション、そして個人の内面におけるコミュニケーションとの間に繋がりがあることに気づかずにはいられません。計算能力の向上により、ヒトゲノムの解読、医療画像の改善、ウェブ検索の高速化、そして以前は想像もできなかった問題へのアプローチが可能になりました。気候モデリング、タンパク質フォールディング、創薬、エネルギー研究、大規模データ分析はすべて、膨大な計算資源に依存しています。しかし、この教科書のより深い教訓は、プロセッサを増やしても自動的に有用な仕事が増えるわけではないということです。まず、問題を分割する必要があります。それらの部分は通信し、同期し、ワークロードを共有しなければなりません。一つのプロセッサが他のプロセッサが待っている間に過負荷になることはできません。また、すべてのプロセッサが同じリソースを無限に競合することもできません。課題はもはや単にパワーを増やすことではありません。それは、私たちがすでに持っている力をどのように調整するかを学ぶことです。人間も同じことが言えるのかもしれません。一人の人間は知性、感情の深さ、身体的なエネルギー、記憶力、創造力を持っているかもしれませんが、それらの部分が協力できないと圧倒されてしまうことがあります。心は一つのことを言い、体は別のことを伝えているかもしれません。言葉は両方を隠しているかもしれません。過去の出来事が終わった後も、未完了のプロセスのように記憶が走り続け、注意を消費しているかもしれません。禅のマインドフルネス、初心者マインドでは、全身全霊の活動は、何も無駄な痕跡を残さずに完全に燃え尽きる炎に例えられます。これは過去を忘れることや、痛ましい出来事が決して起こらなかったかのように振る舞うことを意味するのではありません。それは、経験が残した残骸に無限に執着するのではなく、経験を完全に感じ、理解し、完了させることを許容することを意味するかもしれません。完了することを許されなかったために、どれだけの経験が私たちを消費し続けているのでしょうか?正直なコミュニケーションは同期の一形態です。私たちの思考、感情、体、言葉が真実を伝達するとき、それらは一緒に動き始めることができます。それらが互いに情報を隠蔽すると、内的な対立、つまり不安、疲労、混乱、そして最終的には燃え尽きにつながります。並列プログラミングは、個々のプロセッサであり続けることをやめずに、いくつの別々のプロセッサが1つのシステムとして機能できるかを問います。禅は、人間の生活についても同様の問いを投げかけているようです。おそらく私たちの最大の限界は、力の欠如ではなく、自己分割された力なのです。