57

AccelerEyes は 2012 年 12 月に、GPU コードで Mathworks と連携し、MATLAB 用の製品 Jacket を廃止したことを発表しました。

http://blog.accelereyes.com/blog/2012/12/12/exciting-updates-from-accelereyes/

残念ながら、Jacket ライセンスはもう販売していません。

私の知る限り、ArrayFire に基づく Jacket GPU Array ソリューションは、MATLAB が提供する gpuArray ソリューションよりもはるかに高速でした。

gpuArray を使い始めましたが、多くの関数の実装が不十分であることがわかりました。たとえば、単純な

myArray(:) = 0 

非常に遅いです。カスタム CUDA カーネルをいくつか作成しましたが、実装が不十分な標準 MATLAB 機能により、コード全体で一貫して gpuArray を操作したとしても、多くのオーバーヘッドが追加されます。MATLAB コードを手書きの CUDA コードに置き換えることでいくつかの問題を修正しましたが、MATLAB 標準機能を再実装したくありません。

私が見逃しているもう 1 つの機能は、スパース GPU マトリックスです。

だから私の質問は:

MATLAB が提供する不適切に実装された既定の GPU 実装を高速化するにはどうすればよいですか? 特に、GPU を使用して MATLAB で疎行列演算を高速化するにはどうすればよいですか?

4

2 に答える 2

4

MATLAB は CUDA ベースの GPU をサポートしています。「Parallel Computing Toolbox」からアクセスする必要があります。これらの 2 つのリンクも役立つことを願っています。

Parallel Computing Toolbox の機能

主な機能

  • 複数のプロセッサでタスク並列アルゴリズムを実行するための並列 for ループ (parfor)
  • CUDA 対応 NVIDIA GPU のサポート
  • ローカルで実行されるワーカーを介して、デスクトップでマルチコア プロセッサをフルに活用
  • コンピューター クラスターとグリッドのサポート (MATLAB Distributed Computing Server を使用)
  • 並列アプリケーションの対話型およびバッチ実行
  • 大規模なデータセットの処理とデータ並列アルゴリズムのための分散配列と単一プログラム複数データ (spmd) 構造

NVIDIA CUDA 対応 GPU の MATLAB GPU コンピューティング サポート

GPU コンピューティングに MATLAB を使用すると、C や Fortran を使用するよりも簡単に GPU でアプリケーションを高速化できます。使い慣れた MATLAB 言語を使用すると、複雑な GPU アーキテクチャや低レベルの GPU コンピューティング ライブラリについて学習する必要なく、CUDA GPU コンピューティング テクノロジを利用できます。

以下をサポートするParallel Computing Toolboxを介して MATLAB で GPU を使用できます。

  • 計算能力 2.0 以上の CUDA 対応 NVIDIA GPU 。リリース 14a 以前では、コンピューティング機能 1.3 で十分です。
  • GPU を MATLAB から直接使用
  • Parallel Computing Toolbox および MATLAB Distributed Computing Server で MATLAB ワーカーを使用するデスクトップおよびコンピューター クラスター上の複数の GPU
于 2013-11-15T12:11:22.517 に答える
3

AccelerEyes の創設者である John の講演に参加できて光栄でした。不十分に記述されたコードを削除し、あちこちで数ビットを節約したコードに置き換えただけなので、スピードアップは得られませんでした。それらの高速化は、主にキャッシュの可用性を活用し、インメモリ (GPU) で多くの操作を実行したことによるものです。私の記憶が正しければ、Matlab は GPU と CPU 間のデータ転送に依存していたため、スピードアップは異常でした。

于 2013-10-31T06:10:21.580 に答える