2016-09-17 8 views
0

私は、与えられた行列乗算アルゴリズムを使って高速行列乗算を実装する必要があるインタビューテストを行っています。高速行列乗算

私が望む任意のコンパイラを備えたどのプラットフォームでも実装する必要があります。タスクには次のように表示されます。

•SIMD最適化のためのPC実装が準備されている必要があります。 •データ処理モジュールへの合理的なインターフェイスを設計する。 •効率を低下させないポータブルANSICコードを作成します。アセンブラは使用しないでください。 •操作の数、操作の複雑さを考えます。関数呼び出しオーバーヘッド、ループオーバーヘッド、メモリアクセス時間、キャッシュパフォーマンスなどの注意事項について

ラズベリーパイのようなプラットフォームでこれを実装する必要がありますか?またはCPU + DSPまたはARM + NEONまたはCPU + GPUシミュレータでは?あるいはコードを与えるだけですか?

はありがとう

+0

これはインタビュアーによく聞かれますか? –

答えて

0

あり、命令レベルの並列性、スレッドレベルの並列性、キャッシュの利用率とどのような行列の乗算を高速化では使用しない程度全体の理論。

私はあなたに、まずCPUキャッシュがどのように機能するかを知ることができます。ブロックがキャッシュにロードされたとき、キャッシュインデックスにどのようにマップされ、ブロックが追い出されたかなど。コンピュータアーキテクチャまたはWikipediaに関する本を参照してください。

次に、ブロッキング行列乗算アルゴリズムを指摘できます。

最後に、CPUの最速実装としてBLAS仕様とOpenBLASがあります。