2016-10-18 76 views
2

Fortranのいくつかの大きな配列でテンソル積と収縮を行う必要があります。場合によってはベクトルまたは行列であり、時には関与するオブジェクトの一部が3配列または4配列です。Fortranでテンソル積を効率的に実行する方法

もちろん、いくつかのネストされたループでこれを達成するサブルーチンを書くのはとても簡単です。これは私がやったことです。しかし、大規模な配列では、このループをすべてのループで大量に呼び出す必要があり、最適化された関数やサブルーチンがFortranで実装されているかどうかは不思議に思っていました。

+2

コードを表示してください。 –

+0

そしてBTW "本、ツール、ソフトウェアライブラリ、チュートリアル、またはその他のオフサイトリソースを推薦するか、見つけることを求める質問は、批判的な回答とスパムを引き付ける傾向があるため、スタックオーバーフローの話題にはなりません。これを解決するためにこれまでに行われています」 –

+2

Fortranは、大規模で高密度の規則的な配列を反復処理するのに優れています。そしてFortranのコンパイラは、CPU(その他)が提供するあらゆるリソース上でそのようなコードの実行を最適化することに優れています。時には手作業によるタイル張りが役立ちます。時にはその価値よりも面倒なこともあります。あなたのような一般的な質問のために、私のようなあいまいな一般性は提供できません。 –

答えて

3

私が最後に見た(約1年前)Fortranで高性能の汎用テンソル製品ライブラリを見つけられませんでした。私は、これがFortranの配列のサイズ変更の面倒な方法かもしれないと考えています。これは、テンソルを扱う際に常に必要とされるものです。

あなただけの乗算が必要な場合は、自分のコードを使用して逃げることができます。

物理学:あなたは、高性能、またはより一般的な操作を必要とするがあれば、私は非常にCインタフェースを書いて、おそらくすでにアプリケーションのあなたのタイプのために最適化された優れたC++そこライブラリ、のいずれかを使用することをお勧めします http://itensor.org/

機械学習: https://github.com/tensorflow/tensorflow

これらは一例に過ぎません。さらに詳しいリストについては、 Tensor multiplication library

関連する問題