これは非常に単純なはずですが、完全な答えを見つけることができませんでした。
行列を使用してA+B = Cを実行する必要があります。ここで、AとBはサイズが不明な2つの行列です(最大値として2x2または20.000x20.000になる可能性があります)
計算にはSgemm関数付きのCUBLASを使用する必要がありますか?
達成可能な最高速度が必要なので、十分に最適化する必要があるCUBLASライブラリを考えました
どのような種類の技術計算でも、利用可能な場合は常に最適化されたライブラリを使用する必要があります。他の何百人もの人々によって使用されている既存のライブラリは、自分で行うよりもテストと最適化が適切に行われ、その関数を自分で作成 (およびデバッグと最適化) するのに費やさない時間は、作業に費やすほうがよいでしょう。他の人がすでに実装したものを再発見するのではなく、解決したい実際の高レベルの問題。これは労働の基本的な専門化です。解決したい計算問題に集中し、専門的に GPGPU 行列ルーチンを書いている人に任せてください。
既存のライブラリが必要なことを実行しないことが確実な場合にのみ、既存のライブラリがあまりにも一般的な問題を解決したり、自分のケースには当てはまらない特定の仮定を行ったりする可能性があります。
この特定のケースでは、操作は非常に簡単で、DIY が実行可能であるという他の人たちの意見に同意します。しかし、行列の追加が完了した後でそれらの行列を使用して何か他のことを行う場合は、使用しているプラットフォームに合わせて最適化された BLAS ルーチンを使用することをお勧めします。
あなたがしたいことは、CUDAで実装するのは簡単で、帯域幅が制限されます.
そしてCUBLAS5.0からはcublasgeamが使えるようになりました。オプションで転置された 2 つの行列の加重和を計算します。