10

ベクトル x と多数のベクトル y_i の内積を計算するための私の最善の策は何ですか。x と y_i の長さは 10k 程度です。

  1. y をマトリックスに押し込み、最適化されたs/dgemvルーチンを使用しますか?
  2. または、SSE2 ソリューションをハンドコーディングしてみてください (cpuinfo によると、私は SSE3 を持っていません)。

ここでは一般的なガイダンスを探しているだけなので、どんな提案も役に立ちます。
はい、私にはパフォーマンスが必要です。光をありがとう。

4

5 に答える 5

1

最適化されたBLASルーチンの代替:

于 2009-07-07T16:45:06.573 に答える
0

以下は、SSE を使用した BLAS レベル 1 (ベクトル操作) ルーチンを提供します。

http://www.applied-mathematics.net/miniSSEL1BLAS/miniSSEL1BLAS.html

nVidia グラフィック カードをお持ちの場合は、グラフィック カードで操作を実行する cuBLAS を入手できます。

http://developer.nvidia.com/cublas

ATI (AMD) グラフィックカードの場合

http://developer.amd.com/libraries/appmathlibs/pages/default.aspx

于 2012-05-06T20:25:54.073 に答える
0

SSE2 ソリューションのハンドコーディングはそれほど難しくなく、純粋な C ルーチンよりも大幅に高速化されます。これが BLAS ルーチンにどの程度影響するかは、ユーザーが決定する必要があります。

最大のスピードアップは、データを構造化してフォーマットにすることで得られるため、データの並列処理と配置を活用できます。

于 2009-07-07T12:37:42.570 に答える
0

GotoBLASを使用しています。これは、高パフォーマンスのカーネル ルーチンです。MKL や BLAS より何倍も優れています。

于 2009-10-03T10:34:18.077 に答える