問題タブ [arrayfire]
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.
c++ - ホストポインタから構築する場合、配列起動コンストラクタは自動的に型を推測しますか?
配列ファイアのドキュメントから、ホストポインタから配列ファイア配列を構築できることを読みました。何かのようなもの
ただし、配列 fire が配列の型をデフォルトの float (f32) ではなく "double" (f64) として自動的に決定するかどうかは、今のところ明確ではありません。
助けてくれてありがとう。
python - Arrayfire python はマルチ GPU プログラミングをサポートしていますか
マルチ GPU プログラミングに arrayFire python ( https://github.com/arrayfire/arrayfire-python ) を使用しようとしています。
ただし、並行先物 ( https://docs.python.org/3/library/concurrent.futures.html ) ライブラリとインターフェースしようとすると、同期の問題が発生します。
arrayfire-python を使用して複数の GPU で並列処理する方法についての情報はありますか?
c++ - arrayfireでフリップと転置を使用してmemcpyを回避するにはどうすればよいですか?
arrayfire を使用して、GPU (OpenCL) の助けを借りて一部の C++ コードを高速化します。私は 600MB 以上の af::array を持っており、列の次元に沿って反転させて転置する必要があります。
これまでのところ、C++ ルーチンを使用してこれらの操作をほぼ適切に実行しました。しかし、AFでそれをやりたいのですが、AFライブラリの過度のメモリ使用に気付きました. これには2つの問題があります:
1) 300MB 配列に対する操作 (flip や T など) が 900MB をはるかに超えるメモリを使用する理由がまったくわかりません。2) 配列 foo のコピーを作成しないようにする方法を知りたいです。操作を別の関数内にカプセル化することで、コピーを取り除くことができると考えました。
次のようなコードがあります。
この操作は一度だけ実行する必要があるため、速度はメモリ使用量ほど重要ではありませんが、AF フレームワーク内でこの操作を実行することをお勧めします。
(すべてのメモリ使用統計は、debian の NVIDIA カーネル ドライバー パッケージから gpustat で読み取られます。)
CPU バックエンドのメモリ使用量も過剰です。
返信 umar-arshad のおかげです: 前回 mem-usage のプロファイリングを行ったとき、CPU でコードを実行しました - それが同じように動作すると仮定して。GPU で測定値を再確認し、gpustat と nvidia-smi の両方を使用しました。実際、コードは測定値が異なり、説明したとおりです。少なくとも GPU の部分については、今では完全に理にかなっています。
おそらく CPU 上の foo は最初は f64 だけです。これは、実部のみが使用され、フリップまたは転置のいずれかを使用して c64 になるためです。
「割り当てにより、特定のプラットフォームのすべてのキューで暗黙的なデバイス同期がトリガーされる」という事実と、この Web サイト: http://forums.accelereyes.com/forums/viewtopic.php?f=17&t=43097&p=61730&hilit=copy+host+ memory+into+an+array#p61727 および af::printMemInfo(); AFのメモリ処理のほとんどを最終的に理解するのに役立ちました。プログラムを大幅に高速化します。
ただし、現時点では、これら 2 つの操作をインプレースで (または可能な限り少ないオーバーヘッドで) 実行する唯一の代替手段は、次を使用することです。
ただし、Row-/Column-Major 形式とインデックス マジックを気にしたくなかったので、これは非常に面倒です。だから私はまだここで提案を探しています。
rust - 「cargo run」を使用するように「arrayfire-rust」を構成する方法は?
arrayfire-rust ガイドに従って、独自の Rust プロジェクトをセットアップしています。できますがcargo build
、 するとcargo run
、予期しない結果が生じます。プログラムをシェルから直接実行すると、期待どおりの結果が得られます。
main.rs :
貨物.toml
私はcrate に問題を報告し、メンテナーが調査中です。
julia - Arrayfire.jl を使用したベクトルの外積の回避策はありますか?
ArrayFire.jl を使用してベクトル演算を実行しようとしていますが、ベクトル クロス積の関数が Arrayfire に実装されていません。Julia の Arrayfire.jl ラッパーを使用してパフォーマンスの高い方法で計算するための回避策はありますか? デバイスとホスト間のすべてのデータ転送のために単純な方法で関数を定義するのは非常に遅く、これを解決する方法を理解するのに十分なラッパー関数を理解していません。
python - Python で Arrayfire を使用した多次元配列に対する 1D FFT
(M, 2**N)
pyfftw ライブラリを使用すると、次のようにゼロ番目のインデックスを明示的に循環させることなく、形状の多次元配列の 1 つの軸に対して 1D FFT を簡単に実行できます。
afft = pyfftw.interfaces.numpy_fft.fft(a, axis=1)
.
コードを GPU で実行できるように arrayfire に切り替えて、次を使用して同じことを行います ( を使用import arrayfire as af
):
これは並行して実行されますが、物事を行うための最良の方法とは思えず、私のコードを見るのも恐ろしいものになります。
af.fft
関数と同様の方法でpyfftw
、またはnumpyスライスのarrayfireバージョンを使用してループを排除する方法はありますか?