プログラミングモデルは、APIまたは特定のコードパターンに結合された実行モデルです。このスタイルでは、実際には 2 つの実行モデルが使用されています。ベースプログラミング言語の実行モデルとプログラミング モデルの実行モデルです。例としては、Java がベース言語で Spark がプログラミング モデルである Spark があります。実行は、ライブラリ呼び出しと思われるものに基づいている場合があります。その他の例としては、 POSIX スレッドライブラリや Hadoop のMapReduceがあります。[1]どちらの場合も、プログラミング モデルの実行モデルは、コードが記述されているベース言語の実行モデルとは異なります。たとえば、C プログラミング言語では、実行モデルに入出力やスレッドの動作はありません。しかし、通常の C ライブラリへの呼び出しと思われるものを作成することで、C 構文からそのような動作を呼び出すことができます。
プログラミング モデルと通常のライブラリの違いは、呼び出しの動作が、プログラムが記述されている言語の観点からは理解できないことです。たとえば、POSIX スレッド ライブラリの呼び出しの動作は、C 言語の観点からは理解できません。その理由は、呼び出しが、言語の実行モデルとは異なる実行モデルを呼び出すためです。この外部実行モデルの呼び出しは、プログラミング言語とは対照的に、プログラミングモデルの定義特性です。
並列コンピューティングでは、高いパフォーマンスを実現するために、実行モデルはハードウェアの機能を公開しなければならないことがよくあります。並列ハードウェアの多様性により、同様に多数の並列実行モデルが同時に必要になります。実行モデルごとに新しい言語を作成するのは現実的ではないため、並列実行モデルの動作を API 経由で呼び出すのが一般的です。そのため、プログラミング作業のほとんどは並列言語ではなく並列プログラミング モデルを介して行われます。このようなプログラミング モデルに関する用語は、実行モデルに影響を与えたハードウェアの詳細に重点を置く傾向があり、その閉鎖的な世界では、プログラミング モデルは実行モデルがハードウェアの機能と密接に一致する場合にのみ使用されるという誤った考えが形成されます。[2]
参考文献
- ^ IBM. 「MapReduce とは」. IBM . 2020 年 4 月 19 日閲覧。
- ^ バルセロナスーパーコンピューティングセンター。「COMP スーパースカラープログラミングモデル」。
