11

私は最近、GP-GPU (汎用グラフィックス プロセッシング ユニット) の能力を発見しました。それを利用して、1 台のマシンで「重い」科学計算と数学計算 (さもなければ大きな CPU クラスターを必要とする計算) を実行したいと考えています。

GPU で動作するインターフェイスがいくつかあることは知っていますが、最も顕著なものは CUDA と OpenCL です。後者は、NVIDA カードのみではなく、ほとんどのグラフィックス カード (NVIDIA、AMD、Intel) で実行できるため、CUDA に対して有利です。私の場合、通常の Intel 4000 GPU を使用していますが、これは OpenCL とうまく連携しているようです。

次に、PyOpenCL をさらに使いこなす方法を学ぶ必要があります。だからここに質問があります:

PyOpenCL の使用を開始するにはどうすればよいですか? 前提条件は何ですか?Python や OpenCL の経験が本当に必要ですか?

私のバックグラウンドは fortran であり、実際のところ、主に偏微分方程式の解決と行列の対角化を扱う長い fortran コードを python (または pyopencl) に変換して並列化する必要があります。

関連する 2 つの Web サイトhttp://enja.org/2011/02/22/adventures-in-pyopencl-part-1-getting-started-with-python/http://documen.tician.de/を読みました。 pyopencl/ですが、初心者 (つまり、ダミー) にはあまり役に立ちません。

何から始めたらいいのかわからない。私は、pyopencl で単純な数学と線形代数を並列化する方法を知るためだけに、この分野の専門家になることを熱望していません。

どんなアドバイスや助けも大歓迎です!

4

4 に答える 4

6

Java、C/C++、Python などの GPGPU コンピューティングに採用されている言語に関係なく、まず GPGPU コンピューティングと OpenCL の基本から始めることをお勧めします。

次のリソースを使用できます。すべて C/C++ 指向ですが、OpenCL、GPGPU ハードウェアについて十分な知識を持っている必要があります。

  1. AMD OpenCL ユニバーシティ ツール キット

  2. OpenCL ブック第 2 版を使用したヘテロジニアス コンピューティング

  3. NVIDIA OpenCL ページは、もう 1 つの優れたリソースです。

  4. Streamcomputing.eu には、素敵な openCL 入門記事があります。

  5. インテル OpenCL SDK チュートリアル

PyOpenCL 固有

  1. OpenCL in Action: How to Accelerate Graphics and Computation には PyOpenCL に関する章があります
  2. OpenCL プログラミング ガイドには PyOpenCL の章があります

どちらの本にも OpenCL 1.1 の実装が含まれていますが、出発点としては適切です。

于 2013-08-25T06:32:23.003 に答える
1

GPU プログラミングの初心者として、あなたが言及した関連記事はかなり簡単であることがわかりましたが、サンプル コードはコマンド ラインから完全に実行されましたが、Anaconda を使用した Eclipse では実行されませんでした。これは、anaconda の Eclipse pyopencl がコマンド ライン バージョンとは異なるためであると考えられますが、これを解決する方法はまだ考えていません。

Python を学習するには、無料の電子ブックを含む多数のリソースがオンラインにあります。

https://wiki.python.org/moin/BeginnersGuide http://codecondo.com/10-ways-to-learn-python/

良いスターターになるはずです。Eclipse を使用している場合は、pydev をインストールする必要があります。いずれにせよ、Anaconda https://docs.continuum.io/anaconda/installをインストールすると、多くの手間が省けます。

いくつかの簡単なミニプロジェクトを取り上げる限り、Python で必要なレベルの習熟度に達するのに約 1 週間かかると見積もっています。また、numpy と scipy と、場合によっては ipython ノートブックを使用すると、GPU プログラミングを詳しく調べる必要がない場合があります。

これらのリンクは、GPU プログラミングを回避したり、少なくとも学習を遅らせるのに役立つ場合があります。コア間の切り替えのコストは、各コアにかなりの量の作業を割り当てていないことを意味することに注意してください

http://blog.dominodatalab.com/simple-parallelization/ https://pythonhosted.org/joblib/parallel.html

一般的に、一度に 1 つのことだけを学ぶ方が、楽しくなくても効率的だと思います。

これが役立つことを願っています。

于 2016-05-03T11:22:13.620 に答える