問題タブ [cusp-library]
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.
matlab - cusp::io::write_matrix_market_file() がアクセス違反の例外を与える
CUSP を使用して、Matlab から 272 x 544 の double 行列を ELLPACK 形式のスパース行列に読み込もうとしています。これまでに見つけた唯一の方法は、データを mxArray に読み込み、mxArray を double* 配列に読み込み (mxGetPr() を使用)、値を cusp::array2d にコピーすることです。そこで、array2d を .mtx ファイルに書き込み、そのファイルを coo_matrix に読み込み、最後にそれを ell_matrix に変換する必要があります。私にはばかげているように聞こえますが、CUSP のドキュメントがほとんどないことを考えると、これは私が考えることができる最高のものです。誰かがそれを行うためのより良い方法をお勧めする場合、私は非常に感謝しています.
とにかく、私が今直面している問題は、array2d のデータを読み込んで、それを cusp::write_matrix_market_file() を使用して .mtx ファイルに書き込もうとすると、「未処理の例外: 場所を書き込むためのアクセス違反」というエラー メッセージが表示されることです。 . ファイルに書き込む前に、array2d からいくつかの値を出力してみました。すべてが適切に配置され、値が array2d に正常に格納されているように見えることを確認するためです。タイプをfloatに変更してみましたが、エラーは続きます。このタスクのコードは次のとおりです。
例外が発生した時点で、コールスタックは cusp::io::detail::write_value >,float>(std::basic_ofstream > & output={...}, const float & value=) Line を指しています116 + 0x5 バイト C++
編集:クイックアップデート:ファイル「matrix_market.inl」を変更して例外を取り除きました。行列の列をループしてから再度列をループすることでファイルに値を書き込む奇妙なネストされたループがありました(num_rowsは考慮されません)正方形ではなく、コードは存在しない場所にアクセスしようとしていました..変更されたコードは次のとおりです。
ただし、この .mtx ファイルから読み取るときに、これがさまざまな形式コンストラクターにどのように影響するかはわかりません
cuda - row_indicesをCOOマトリックスからCUSPの推力ベクトルにコピーするにはどうすればよいですか?
COOマトリックスの行インデックス、列インデックス、および値を別々の推力ベクトルにコピーしようとしていますが、コピーできないことがわかりました。
以下はコードです
sim_rowは、以前のコードでメモリが割り当てられた推力ベクトルポインタであり、ここでは関係ありません。
コードはコンパイルされますが、実行時に次のエラーで失敗します。
'thrust :: system :: system_error'のインスタンスをスローした後に呼び出された終了what():無効な引数中止(コアダンプ)
誰かが私が間違っていることを教えてもらえますか?
ありがとうAkshay
matlab - MEX の CUSP::csr_matrix から Matlab にスパース行列を返す方法は?
CUDA を使用した疎行列計算用の MEX ファイルを開発しています。CUSP ライブラリを使用しています。cusp::csr_matrix を Matlab に戻す方法がわかりません。たとえば、私は
それで、それは CSR 形式の At マトリックスであり、私が計算したとしましょう。今、私はそれをMatlabに戻さなければなりません。このようなもの:
しかし、もちろん、そのようには機能しません。まず At が GPU 上にあるためです。インデックスには At.values とメソッドを使用する必要があると思います。また、それらをホスト データに割り当てる方法は?
誰かがそれをすべて行う方法を提案できますか? :)
c++ - cusp 継承クラスと *.cu デバイス コードのコンパイル
これが自明でない場合はご容赦ください。私は小さなクラスを持っていcusp::csr_matrix<int,float,cusp::device_memory>
ます。
これまでのところ、デバイス用にコンパイルする必要があると思われることは何もしていません。ただし、この特定のクラスで、デバイス上で実行する必要があるメンバー/関数としてコードを作成する予定ですが、正しく理解していれば、cusp
すでにこの機能を提供していますか? 例えば:
ノルムの計算または転置は、理想的にはデバイス実行用にコンパイルする必要があります。この場合、それがクラスメソッドの一部である場合、どうすればよいでしょうか?
*.hpp
クラスのヘッダー ファイル全体を作成し、コンパイル*.cu
用に追加する必要がありますか? nvcc
実際のコードのみを (ヘッダー宣言ではなく) マークして、コンパイル*.cu
用に追加しますか? nvcc
または、これは必要ありませんか?
matrix - CUSP CG 収束
CUSP 共役勾配法を使用して対称スパース行列を解きます。そして、なぜ収束しないのかわかりません。私が使用する行列の次元はそれほど大きくありません (1K から 100K)。同じ線形システムは MKL で簡単に解けるため、行列は悪条件ではありません。ただし、前提条件を追加しようとしましたが、結果は得られませんでした:
対角前提条件と AINV (不完全コレスキー) は残差を無制限に増やします (cg と bicgstab がある限り)
これが私のコードです:
正しく動作しないのはなぜですか?
PS 私が理解しているように、CUSP はゼロから始まるインデックスを想定しているため、csrRowPtr と csrColInd を減らします。nVidia cuSparse ライブラリを使用したとき、マトリックス タイプや塗りつぶしモードなどの他のパラメータを設定するオプションがありました。それらが CUSP で正しく設定されていることをどのように確認できますか?
c++ - Visual Studio C++ プロジェクトで cusp を使用する
VS2012 Ultimateでcusp v.0.4.0、cuda V5.5を使用しています。新しいプロジェクト ウィザードを使用して CUDA プロジェクトを作成し、cusp パスをプロジェクトの properties\VC++ Directories\Include Directoriesに追加しました。VS2012 によって生成された*.cuファイルにコードを書きました。プロジェクトは正常にコンパイルおよびビルドされましたが、実行時にR6010エラーが発生しました。プロジェクトの properties\CUDA C/C++\Device\Code Generationのデフォルト値をcompute_10,sm_10からcompute_30 ,sm_30に変更することでこの問題を解決しました。これは私の sm バージョンです。すべてがうまくいきました。
ここで、C++ プロジェクトで同じコードを使用したいと考えています。これを新しい C++ プロジェクトに追加し、カスプ パスをVC++ インクルード ディレクトリに追加すると、プロジェクトのビルドが失敗し、複数のファイルに多数の構文エラーが発生しました。
エラー 5 エラー C2144: 構文エラー: 'void' の前に ';' を付ける必要があります c:\users\administrator\downloads\android\cusplibrary-master\cusplibrary-master\cusp\detail\device\spmv\coo_flat.h 164
22 IntelliSense: ';' が必要です c:\Users\Administrator\Downloads\Android\cusplibrary-master\cusplibrary-master\cusp\detail\device\spmv\coo_flat.h 272
...
このようなエラーがさらに 108 件あります。これらが構文エラーである場合、CUDA ソリューションに表示されなかったのはなぜですか? C++ プロジェクトでコードを正常にビルドするにはどうすればよいですか?