相対論とプログラミング
【 相対論とプログラミング 】
今回のセッションでは、ランポートの「分散システムにおける時間と時計とイベントの順序付け」という論文を紹介します。
プログラミングをしている時に、アインシュタインの相対性理論を意識している人は、ほとんど絶無だと思います。
ただこの論文は、並列・分散アルゴリズムを理解する上で、相対論的な時間概念が本質的に重要であることを示したものです。(重力理論としての一般相対性理論ではなく、特殊相対性理論の方です。)
もっとも、ランポートは相対論を直接に、並列・分散アルゴリズムに応用しようとしたわけではありませんし、この論文を相対論の解説として書いているわけでもありません。
彼は、並列・分散アルゴリズムの「同期」の問題を考えることを通じて、独自に相対論的時間概念にたどり着いているのです。これは、とても興味深いことです。(もちろん、彼は、相対論をよく知っていたと思います。)
彼は、現実の時間を示すリアルな「物理的な時計」に変えて、複数のプロセス上で定義される「論理的な時計」を考えます。この時計は、イベントが起きた絶対的な時間ではなく、二つのイベントで「どちらのイベントが先に起きるか」という相対的な順序関係のみを示します。この「論理的な時計」では、ある場合には、二つのイベントの時間は比較ができない場合もあります。
「我々は、まず最初には、空間的に分離したコンピュータたちのシステムに関心を持つだろう。しかし、我々の見解の多くは、もっと一般的なものに適用可能である。
特に、単一プロセッサーのマルチ・プロセスのシステムは、これらの分散システムと同様の問題を抱えている。なぜなら、起こりうるイベントは予測できない順序で生起するからである。
分散システムでは、時には、二つのイベントのどちらかが先に起きるかをいうことが不可能となる。「先に起きる」という関係が、それゆえ唯一のシステムのイベントの半順序関係である。」
これは並列・分散アルゴリズムについて、本質的に重要な洞察だと思います。
先に、「プログラミングをしている時に、アインシュタインの相対性理論を意識している人は、ほとんど絶無」だと書きました。
ただ、これは本当は、いいことではないように思います。
少なくとも、分散・並列アルゴリズムでは、ミンコフスキーやアインシュタインらの相対論的時間概念に匹敵する、時には常識に反する精緻な時間の感覚と理論的基礎が必要になるからです。
実際、我々の身近なところで、例えば、クラウド・ストレージ上のファイル・アクセスの排他制御でも、Kubernatesのサーバーの生死管理でも、巨大なクラウド・システムのAvailability の中核部分でも、ランポート的な「論理時計」は稼働しています。
ただ、我々がそのことを意識していないだけです。
-------------------------------------------
セッションの動画のURL 「イベントの順序関係とランポートの「論理的時計」」 https://youtu.be/n1dx3ZYmHWM?list=PLQIrJ0f9gMcOeqlB09PdBddfXLv2QjG-F
スライドのpdf https://drive.google.com/file/d/14q_Ugtd4j3gvgYTB34lw7FKDSwdWwLPd/view?usp=sharing
関連blog 「相対論とプログラミング」 https://maruyama097.blogspot.com/2022/07/blog-post_24.html
参考資料
Lamport, L. (1978). "Time, clocks, and the ordering of events in a distributed system". Communications of the ACM . 21 (7): 558–565. http://research.microsoft.com/users/lamport/pubs/time-clocks.pdfLamport, L. The Computer Science of Concurrency: The Early Years https://cacm.acm.org/magazines/2015/6/187316-turing-lecture-the-computer-science-of-concurrency/fulltext#R9
セミナーのまとめページ
https://www.marulabo.net/docs/concurrent/
セミナー告知・申込ページ https://concurrent.peatix.com/view -------------------------------------------
コメント
コメントを投稿