問題タブ [jacket]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cuda - GPUでk個の最大固有値を計算するには?
K 個の最大固有値を計算する必要があるスペクトル クラスタリングの並列アルゴリズムに取り組んでいます。Matlab の Jacket プラグインを使用していますが、残念ながら matlab で EIGS 関数をサポートしていません (K 固有値を計算することはできません)。並行して)GPUでこのタスクを実行するために他のツール/ライブラリを提案してもらえますか?または、GPU支援のMatlabでこれを行うことはできますか?
performance - 非常に遅い matlab jacket if ステートメント
matlab で cuda\jacket を使用すると、if ステートメントの応答が非常に遅くなります。(単純な for ループと if 条件を使用して極大値を見つける同じコードで 5 秒対 0.02 秒)
GPU プログラミングは初めてなので、以前のmatlab if ステートメントと CUDA SO の議論を見たときに、何かが足りないと感じました。コードをベクトル化した方がよいことを知るために、cuda を使用する必要はありません。ただし、とにかく if ステートメントを使用する必要がある場合があります。たとえば、2D 画像のピクセル (m(a,b) など) が 8 つの最近傍の極大値であるかどうかを調べたいと思います。matlab でこれを行う簡単な方法は、if ステートメントで 8 つの論理条件を使用することです。
m(a,b)>m(a-1,b-1) & m(a,b)>(a,b-1) & m(a,b)>(a+1,b-1)の場合& ... すべての最近傍について
これを解決する (またはベクトル化する) 方法を教えていただければ幸いです...
matlab - CUDA における Matlab の find コマンドと同等
行列のゼロ以外の要素をできるだけ早く見つけたいです。CUDA
\を念頭に置いて、出力のサイズが find 関数の前にわからないため、おそらくメモリ割り当ての問題が原因で、 の find のJacket
「通常の」CPU バージョンよりもはるかに遅いことがわかりました。Matlab
ただし、bwlabel
とregionprops
(どちらも でサポートされてJacket
います) を使用すると、ゼロ以外の要素に関する情報が効果的に得Matlab
られ、Image Processing Toolbox の組み込み関数よりもはるかに高速です。これを利用してゼロ以外の要素を取得する方法はありますか? を使用して見つかったラベル付きオブジェクトのそれぞれに対して何らかの処理を行う方法はありますbwlabel
か?
matlab - matlab+ジャケットのregionpropsを使用して加重重心を取得する
regionprops
Matlabの画像処理ツールボックスを使用して、関数を使用して重み付き重心を見つけることができます。これは、関数が WeightedCentroid
画像のラベル付けされた部分ごとに、によって、またはピクセルインデックスのリストを返すことができるためPixelList
です。その後、重み付き重心が簡単に計算されます。ただし、regionpropsでのジャケットのサポートは、重み付けされていない重心(またはbwlabel
以前に使用して取得されたバイナリ「島」の重心)のみを返します。これは、これらの重心を見つけるために、ピクセル位置に関する情報が何らかの形で使用されたことを意味します。
重み付けされていない重心を計算するために使用するピクセルのリストに関するジャケットのregionprops情報にアクセスして、重み付けされた重心を計算するために使用するにはどうすればよいですか。(これを行う重要な理由の1つは、関数をループでfind
使用できないためです。そうしないと、出力値が異なる可能性があります...)gfor
find
bwlabel
matlab - mldivide はジャケットで非常に遅いですか?
私はこのコードを書きました: app と cova は、コードと gsingle の変数 dim に等しい次元を持つ行列です。
dim の次元を増やそうとすると、結果は非常に遅くなります。forループとcpu変数を使用して同等のコードを書くと、より高速になります。なぜそれが起こるのですか?
matlab - GFOR の GCOMPILE サポート?
Jacket で作業しているときに、この問題に出くわしました。
gfor ループ内でコンパイル済み関数 (gcompile でコンパイル) を使用しています。これは、私が知る限りサポートされる予定です: http://wiki.accelereyes.com/wiki/index.php/GCOMPILE
しかし、コンパイルされていない関数は正しい結果を提供しますが、コンパイルされた関数はすべての gfor 反復に対して同じ出力を与えることがわかりました。
出力は次のとおりです。
C1 = [ 3,6,9,12,15,18,21,24,27,30] (正しい結果)
C2 = [ 3,3,3,3,3,3,3,3,3,3]
私の結果を検証/反論できますか? 私は何を間違っていますか?
乾杯、アンジェラ
matlab - GPU を使用して MATLAB コードを高速化しますか?
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 を使い始めましたが、多くの関数の実装が不十分であることがわかりました。たとえば、単純な
非常に遅いです。カスタム CUDA カーネルをいくつか作成しましたが、実装が不十分な標準 MATLAB 機能により、コード全体で一貫して gpuArray を操作したとしても、多くのオーバーヘッドが追加されます。MATLAB コードを手書きの CUDA コードに置き換えることでいくつかの問題を修正しましたが、MATLAB 標準機能を再実装したくありません。
私が見逃しているもう 1 つの機能は、スパース GPU マトリックスです。
だから私の質問は:
MATLAB が提供する不適切に実装された既定の GPU 実装を高速化するにはどうすればよいですか? 特に、GPU を使用して MATLAB で疎行列演算を高速化するにはどうすればよいですか?