コンピュータはおろか、手計算用の下書き用紙さえ発明されていなかった春秋時代の終わりに生きた道教の開祖 "老子 "が、どうして偉大なマルチコア・コンピューティングの科学者になれたのか不思議に思う人もいるでしょう。これは盲目の愚か者ではありません。
これは決して人を馬鹿にしているわけではないということを申し上げておきたいと思います。老子』の時代にはコンピュータはありませんでしたが、彼が提唱した道教的な思想には、現代のマルチコア・コンピューティングの基本的な原理や考え方が含まれています。この観点からすると、『老子』はまさに偉大なマルチコア・コンピューティングの科学者なのです。
道教では、「何もしない」、「人の少ない小国」、「大智は愚の如し」、「大巧は不器用の如し」、「大音は音の如し」、「信は美ならず」、......等々。「大いなる知恵は愚かさのようである」「大いなる工夫は不器用さのようである」「大いなる音は音のようである」「信仰は美しくない」「美は美しくない」......などなど。これらの考え方は、一般的には哲学的な考え方であり、科学としてのマルチコア・コンピューティングには及ばないように見えます!老子はどうして科学者なのでしょうか?道教の思想の中に、マルチコアコンピューティングに関する未知の原理や考え方が本当に含まれているのでしょうか?
そう、道教の思想には、現代のマルチコア・コンピューティングの原理や考え方が組み込まれているのです。もちろん、これは単なる空言ではなく、実際の証拠によって証明されなければなりません。ここでは、道教の思想に含まれる深遠なアイデアを実証するために、マルチコア・コンピューティングの例をいくつか紹介します。そこから、その「不思議の扉」の氷山の一角を垣間見ることができるかもしれません。
小国家とマルチコア・コンピューティング
この理想は、人類社会の歴史上、特定の王朝や世代で実現されたことはないようです。非現実的な考え、あるいは間違った考えだと考える人さえいます。幸いなことに、この理想は非常に正しいだけでなく、マルチコア・コンピューティングにおいて現実のものとなりました。以下は、マルチコアにおける設計の考え方と「スモールステート」の考え方を比較して、その一端を垣間見るものです。
Multi-Verify Lookup - Sequential Lookup is Crazy」という記事で、マルチベリファイ・ルックアップ設計の基本的な考え方を紹介しています。 その基本的な考え方とは、中国のロック競合によって引き起こされる直列実行を避けるために、大きなルックアップ・データ構造をいくつかの独立した小さなサブデータ構造に分割し、そして、複数のスレッドが異なるサブデータ構造にアクセスしてもロック競合が起こらないように、これらの小さなサブデータ構造のそれぞれにロックを追加しなければならないというものです。この考え方は、ロック競合による直列実行を避けるために、大きなルックアップ・データ構造を複数の独立した小さなサブデータ構造に分割し、その小さなサブデータ構造のそれぞれにロックを追加するというものです。小さな国、小さな人々」という考え方は、大きな国を独立した小さな国に分割するというもので、マルチコアにおけるルックアップ設計の考え方と全く同じと言えます。
"人民の少ない小国;柴焼きがあっても使わないように;人民の重い死があっても、移住から遠くないように;舟はあっても、増やすものは何もない;鎧はあっても、飾るものは何もない;人民が縄に戻って、それを使うように。人民の支配の最後の最後まで彼らの食べ物を食べて、美しい服、安全な習慣を喜んで、彼らの仕事を楽しんでいます。隣国は互いに顔を見合わせ、犬や鶏の鳴き声が聞こえ、人々は年老いて死ぬまで互いに言葉を交わすことはありませんでした。"
最後の一文「隣国は互いに顔を見合わせ、犬や鶏の鳴き声が聞こえ、国民は年老いて死ぬまで互いにコミュニケーションを取らない」を見てみましょう。これは、それぞれの国が独立していて、お互いに意思疎通ができないので、それぞれの国に「ロック」がかかっているということで、多変量検証の各サブデータ構造にロックがかかっているのと同じです。
最初の文を見てください。「小国少人、斯(し)くして柴(しば)の用具あり、而(しか)して用を為さず、而して人民重死、而して遠方移住せず、而して舟や原付はあれども、之を殖やすことなし、而して鎧や兵はあれども、之を陳列することなし、而して人民は縄に回帰し、之を用いることなし」。これは最も誤解されている言葉の一つで、多くの人は、老子が人民を結び綱で統治する原始的な状態に戻そうとするのは一種の愚行だと考えています。実際、こうした人々は、この文章に含まれる深遠な思想を理解していません。高度な道具や技術がありながら、それを使わないことが分かっているのに、結び縄で統治していた時代に逆行するのは、よほど頭がおかしい人でない限り、普通の人なら分かることです。
老子」は狂人だったのでしょうか?もちろんそんなことはありません。老子はその生涯で、儒教の始祖である孔子も老子に助言を求めるなど、多くの頭のいい人に出会いましたが、老子は自分の考えを理解できる人がいないことに気づき、結局は「緑の牛に乗ってザングアンを出て行く」しかなかったのです。
誰も理解できないのはごく当たり前のことで、もし当時の老子の考え方を理解できる人がいたなら、この記事のタイトルは「老子は多核計算の科学者だった」と変えるだけで、あえて「偉い」という言葉を前面に出すことはないでしょう。老子の思想を誰も理解できないのは、まさにそこに多核計算という深遠な思想が含まれているからです。この言葉をマルチコアの探求という文脈で解釈すれば、「老子」の真の偉大さが見えてきます。老子の偉大さを見てみましょう。
小国」のためのロープによる支配という原始的な状態への回帰は、最小のサブデータ構造に最も原始的で単純なデータ構造とアルゴリズムを使わせることによって、マルチ検証に反映されています。最も原始的なデータ構造とは?もちろん配列です。では、どのように配列内を検索するのでしょうか?しかし、バイナリ検索は最も原始的な検索方法ではなく、最も原始的な検索方法は逐次検索です。つまり、配列ではバイナリサーチを使わず、逐次サーチを使いましょう。ここで書かれた、何人かの人々が疑問を持っている可能性がありますが、効率的なバイナリ検索を使用しないが、原始的な後方逐次検索を使用するには、また偉大さの "老人 "を反映することができます病気になることはありません?
私が言いたいのは、一見先進的なものを一見原始的で後進的なものに置き換えることこそが、老子の偉大さだということです。なぜか?まず、「小国」という前提条件を見てみましょう。これは、配列が十分に小さければよいという複数検証検索に反映されています。非常に小さな配列、例えば数個のデータポイントしかない配列を検索する場合、逐次検索とバイナリ検索のどちらが良いでしょうか?バイナリ・ルックアップの方が比較回数は少ないものの、中間データの添え字の位置を計算する計算オーバーヘッドや、加算と2による除算を実行する必要があるため、逐次ルックアップよりも遅くなる可能性があることは、少しプログラミングの知識があれば誰でも知っていることです。ソフトウェアの安定性という点では、エラーの起こりにくい逐次探索プログラムを書くのは非常に簡単ですが、バイナリ探索プログラムを書くのはそれほど簡単ではありません。90%のプログラマはバグのないバイナリ検索プログラムを書けない?"という記事を見てください。この記事は、あなたがバイナリ検索プログラムを書くことの難しさを知っているので、プログラムを書くのは難しいソフトウェアの安定性を保証することができますか?知るために、道教の思想はまた、ソフトウェアの安定性と信頼性のアイデアが含まれており、興味のある方は、この記事を参照してくださいしたい場合があります:"道教 - 老子のアルゴリズム思考分析"。さらに、複雑性の高いプログラムを書いた場合、開発とテストの作業負荷はどのくらい増加するのでしょうか。
この時点で、私は多くの人々が "小さな国、小さな人 "の美しさを見抜いたと信じて、もはや単純に愚かな人々の思考の一種であると思うことはありません。また、「老子」よりも2500年も早く、とても原始的な時代に、「老子」は「すべての素晴らしいの扉」を突破して、道教の思想の「老子」よりも2500年も早く、人生を心から賞賛し、尊重しなければなりません。道教の思想の深さは、このことからもわかります。道家の思想の深さ、繊細さを表現するいい言葉が見つからないので、「タオ、タオ、とてもタオ」とため息をつくしかありません。
「何もしない」とマルチコア・コンピューティング
先ほどの「小国寡民」の思想の分析は、道教の思想の氷山の一角にすぎません。道教の「何もしない」という考え方を、マルチコア・コンピューティングの例と関連付けて分析し、両者の間に共通点があるかどうかを確認することは価値があります。
道教の "五維 "は、自然に忠実であることを追及しており、その思想の詳細については、ネットで調べれば大量の史料が見つかるので、詳しく説明するまでもないでしょう。いわゆる "自然道 "とは、自然の力を利用して物事を行い、人為的な力を無理に利用しないということです。
自然が人間に与えた力とは?貪欲」、「利己主義」、「盗み」はすべて自然が人間に与えた自然の力です。 もちろん、自然は人間にも多くの自然の力を与えていますが、この記事では「貪欲」、「利己主義」、「盗み」の3つの自然の力についてのみ説明します。もちろん、自然が人間に与えた自然の力は他にもたくさんありますが、この記事では「貪欲」、「利己主義」、「盗み」の3つの自然の力についてだけ説明します。道教の「呉越同舟」の考え方をマルチコア・コンピューティングに応用すると、つまり、自然の力を使ってマルチコア・アルゴリズムを設計すると、驚くべきことに、「貪欲」、「利己主義」、「窃盗」、「貪欲」、「利己主義」、「窃盗」が3つの自然の力になります、意外なことに、「貪欲」、「利己主義」、「窃盗」が、マルチコンピューティングの設計に使われる最も効果的な自然の力なのです。それを説明するためにいくつかの例を挙げましょう。
まず「欲」についてですが、儒教では「人間は本来善である」と考えますが、西洋では「人間は本来悪である」と考えます。実は、人間の始まりに善悪というものはなく、善悪は人間が生まれてから形成するものであり、自然が人間に与えた自然の力に善悪というものはありません。いわゆる善悪はすべて欲によるものであり、「欲は人間の本性に備わっている」と言った方が適切かもしれません。したがって、「欲」は自然が人間に与えた自然の力とみなすことができます。
シングルコア時代のアルゴリズム設計では、"貪欲 "が普遍的な最適戦略であり、特にNP問題では、貪欲戦略を使って複雑さO(N)のアルゴリズムを設計できることがよくあります。もちろん、マルチコアアルゴリズムにおいても、貪欲戦略は不可欠です。例えば、NP問題であるタスクグラフ分解やスケジューリング問題では、この種の問題に対処するために貪欲戦略が最も効果的な方法であることがよくあります。
利己主義」に目を向けると、「利己的」な人間などいないことがわかります。子供の行動を観察すれば、「人間は最初から利己的である」と簡単に結論づけることができます。"利己主義 "もまた、自然が人間に与えた自然の力なのです。
利己主義」はマルチコアシステムの設計にも使えるのでしょうか?答えはイエスというだけでなく、「利己主義」はマルチコアアルゴリズムを設計する上で最も効果的な最適化戦略の一つです。例えば、マルチコアのメモリ管理で、各スレッドがプライベートメモリマネージャを持てば、メモリを確保するときにプライベートメモリマネージャから確保するだけでよくなり、ロックやアンロック操作が不要になります。IntelのオープンソースプロジェクトTBBのメモリ管理アルゴリズムに興味があれば、マルチコアアルゴリズムの設計に「利己的」という自然の力を使うことの利点を実感できるはずです。
最後に "盗み "について見てみましょう。"盗み "は人間社会では常に違法行為と見なされており、人間に与えられた自然の力でもあるのでしょうか?人類の歴史以来、「窃盗」、通行人の窃盗、公共財の窃盗、愛の窃盗、さらにはそこの国の窃盗の現象を根絶するために、その王朝とその期間があることを見てみてください... ....世界が「盗み」に満ちていることを見つけるのは難しいことではありません。子供たちの行動を見てください、子供たちは欲しいものを見ると、すぐにそれを自分の手に入れようとします、いわば「人間の始まり、盗み好きの性質」です。ですから、「盗む」ということも、人間が本来持っている自然な力なのです。
一部の人々は、"盗み "は自然の力であることを認めてみましょう、"盗み "もマルチコアルゴリズムを設計するために使用することができますか?これは、ポイントに尋ねることができる、"盗む "この自然の力は、マルチコアルゴリズムでは本当にマルチコアの動的タスクスケジューリングアルゴリズムで使用されている、"盗む "アイデアの使用は、興味のあるインテルのオープンソースプロジェクトTBBを見に行くことを望むかもしれません。もちろん、このタスクスケジューリングアルゴリズムも "利己的 "のアイデアを使用して、"盗難 "のアイデアを使用して、インテルのオープンソースプロジェクトTBBのタスクスケジューリングアルゴリズムに興味があります。
ダイナミックタスクスケジューリングアルゴリズムは普通のアルゴリズムではなく、マルチコアの3本の指に入るクールなアルゴリズムです。多くの並列アルゴリズムがこのアルゴリズムによって実装可能で、シリアルアルゴリズムを書くだけで、ダイナミックタスクスケジューリングによって自動的に並列アルゴリズムになり、並列ソート、並列数値計算、並列探索などの様々な並列アルゴリズムを実装することができます。つまり、プログラマは、以前のシングルコア時代の直列アルゴリズムを再利用するために並列コンピューティングについて学ぶ必要がなく、動的タスクスケジューラが自動的に並列アルゴリズムに変えてくれるのです! 同時にこれは、マルチコア・プログラムの並列計算の多くが、動的タスク・スケジューリングアルゴリズムを呼び出していることを意味します。マルチコア・プログラムも「盗み」だらけになることは明らかです。南淮晋の「老子曰く」のp90の最後の行に、「道教の考えでは、この世はもともと盗み合いの世界であり、互いに盗み合い、互いに漁り合っている」と書かれていますが、これとマルチコア・プログラムの盗み合いは一致していると言えます。
上記を読むと、道教の「無為自然」の思想はマルチコアコンピューティングでも十分に実践されており、道教の思想にはマルチコアコンピューティングの深遠な原理と思想が含まれていることがわかります。にもかかわらず、上記の自然の力がすべて「貪欲」、「利己主義」、「盗み」であり、人間の暗黒面であるように思われることを不満に思う人もいるでしょう。そして人間の暗黒面。自然の流れに身を任せるという道教の原則に沿うために、誰もが「貪欲」「利己的」「盗み」を存分に発揮していいのでしょうか、これでは人は悪さを覚えてしまうのではないでしょうか?このように解釈すると、「何もしない」という道教の考え方を根本的に誤解しているような気がします。
道教が「無為自然」を標榜するのは、自然の力を使ってこそ最適が得られると考えるからであって、自然の力を使えば必ず最適が得られるということではありません。もし「老子」が、自然の力を使うことが最適に違いないと言ったとしたら、私は「老子」を偉いとは言わないばかりか、「老子」を嫌な奴だと思うでしょう。世の中のすべてのものには、その使用範囲があります。欲」が「貪欲」になり、「利己」が「自分の利益のために他人を害する」ことになれば、当然、その自然の力の範囲を超えてしまいます。貪欲」が「貪欲」に、「利己主義」が「利己主義」になったとき、それは当然、これらの自然の力の使用範囲を超えることになり、もちろん、この現象に同意する人はいないでしょう。
とはいえ、世の中は複雑で、聖人もいればクズもいる。「聖人は死なず、泥棒はやめない」。「欲張り」で「利己的」なことを無自覚にやる人は必ずいます。そして、それがベストだと思っているのです。因果応報」ということわざがあるように、自然の力を悪用する者は、最後には自然の罰から逃れることはできません。最近のウォール街の金融津波は、そのヒントになるかもしれません。




