2017-04-13 32 views
0

私はOpenACCをC++の疎行列計算に使用しています。 OpenACC領域内で行列演算を使用する必要があります。OpenACC - 疎行列ライブラリ

OpenACCと互換性のある疎なマトリックスライブラリはありますか?

私が固有に使用していますが、私が手動で良いアイデアを鳴らしていない、ソースコードを変更しない限り、それはOpenACCと互換性がないようだ...

+1

OpenACC計算領域内でライブラリを使用しようとしている場合、OpenACCを使用してライブラリ自体がアクセラレーションされている場合、またはあなたのOpenACCコードとライブラリの間でデータを共有したい。たとえば、NVIDIA GPUをターゲットにしている場合、OpenACCはcuSparseと相互運用できます。つまり、ライブラリ呼び出しとOpenACCコード間でデータを共有できます。あなたがPGIを使用していると仮定すると、例は$ PGI/linux86-64/2016/examples/CUDA-Libraries/cuSPARSE/ –

+0

にあります。はい、私はOpenAcc地域内のライブラリを使用したい(私はこれを指摘するために私の答えを編集)。 cuSPARSEは仕事をしているようです、ありがとう!あなたはそれを答えとして与えることができ、私はそれを受け入れます。 –

答えて

1

あなたがターゲットとしている場合NVIDIA GPU、PGIのOpenACCの実装はcuSparseと相互運用できます。つまり、ライブラリ呼び出しとOpenACCコードの間でデータを共有できます。 PGIを使用していると仮定すると、例は$ PGI/linux86-64/2016/examples/CUDA-Libraries/cuSPARSE /にあります。 cuSPARSEにはデバイス側のルーチンがなく、ホストから呼び出さなければならないことに注意してください。しかし、OpenACCが管理するデバイスデータは、 "host_data"指示文を使ってcuSPARSEルーチンに渡すことができます。

cuBLASにはOpenACC計算領域内で使用できるデバイスルーチンがあります。もちろん、これらはスパース行列演算にはチューニングされていません。