1. ホーム
  2. python

OpenMPとPython

2023-08-14 10:43:36

質問

私は、共有メモリマシン用のOpenMPを(CとFORTRANの両方で)コーディングした経験があり、行列の加算や乗算などの簡単なタスクを実行します(LAPACKとの競合を見るためだけ)。私は、ドキュメントを見る必要なく、単純なタスクを実行するのに十分なほどOpenMPを知っています。

最近、私は自分のプロジェクトのためにPythonに移行しましたが、絶対的な基本を超えたPythonの経験はありません。

私の質問は:

とは何ですか? 最も簡単な を使う方法は何ですか?最も簡単というのは、プログラマー側の労力が最も少ないという意味です(たとえそれがシステム時間の追加を犠牲にしているとしても)?

私がOpenMPを使用する理由は、シリアルなコードを、いくつかの !$OMP が散見されるからです。を実現するのに必要な時間は 荒い を実現するのに必要な時間は、驚くほど小さくなります。この機能をPythonで再現する方法はありますか?

SOでいろいろ見て回ったところ、以下のようなものがあります。

  • C 拡張
  • スタックレス Python

もっとありますか?私の質問に最も合致するものはどれですか?

どのように解決するのですか?

GILにより、CPythonでCPUに負荷のかかるタスクにスレッドを使用する意味はありません。マルチプロセッシング ( ) か、計算中にGILを解放するCの拡張を使うかです。 .

Cythonでマルチスレッドを使用するC言語拡張を簡単に書くことができます。 .