ATLASとMKLのパフォーマンスの違いは?


31

ATLASは無料のBLAS / LAPACKの代替品であり、コンパイル時にマシンに合わせて調整されます。MKLは、Intelが出荷する商用ライブラリです。パフォーマンスに関しては、これら2つのライブラリは同等ですか、それともMKLが一部のタスクで優位を占めていますか?もしそうなら、どれ?


4
現在、OpenBLASもあります。SandybridgeのベンチマークとMKLを参照してください。
マークミコフスキー

回答:


18

MKL(Intel製)はIntelプロセッサ用に最適化されており、多くの場合、おそらく「上手」があります。ただし、ここで説明しているように、AMDプロセッサの「最悪」のコードパスを選択することも「有名」です


12

BLASはモノリシックではありません。BLAS1とBLAS2はメモリ帯域幅が制限されており、明らかな速度(ループの展開、レベル2のキャッシュブロッキング)を超えて高速化するためにできることはあまりありません。BLAS3はより興味深いものであり、ここでのプロトタイプのベンチマークは行列-行列乗算です。私の知る限り、GOTOBlasは常に明確な勝者でした。たとえば、この比較またはこの比較とこの正当化を参照してください。

数年後、BLIS Projectができました。MKLに代わる最高の無料の代替手段です。


4
マットは正しいですが、GotoBLASは現在開発中です。いくつかの最新のプロセッサではまだ十分に機能しますが、MKLは、将来のプロセッサでDGEMMを使用していなければ、それを確実に上回ります。たとえば、Westmereでテストしていませんが、GotoBLASがすでに負けていても驚かないでしょう。
ビル・バルト

2
後藤博士はM $に買収されました。悲しみ。。。
-meawoppl

2
OpenBLASは、GotoBLASから分岐したオープンソースプロジェクトです。github.com/xianyi/OpenBLAS
ShadowWarrior

Gotoは現在MKLで動作します。もう悲しみはありません:
ジェフ

6

プロフィール、推測しないでください!「ベンチマーク、推測しないでください!」としても機能します。

一般的なことはありません。実行したいタスク(BLAS 1/2/3など)と使用しているハードウェアに大きく依存します(明らかに、インテルMKLはARMプロセッサーで実行されません。例;しかし、Intelプロセッサ間でも、パフォーマンスの違いが期待できます)。


言及する価値があるもう1つのことは、AMDがプロセッサに合わせた数学ライブラリであるAMD Core Math Libraryも提供していることです。IntelのMKLほど機能が豊富ではありませんが、BLASが含まれています。


本当です。ここに他の回答をバックアップするための逸話的な証拠(および実際のプロファイリング)がたくさんあります(リンクで証明されています)。ただし、走行距離は異なる場合があり、常に正しいことを知るためにプロファイルを作成すると役立ちます。
ジェフオックスベリー

1
MKLは499ドルなので、プロファイルするのは面倒です。ただし、1か月のトライアルを提供しています
リンドンホワイト

@LyndonWhiteこれはまだそうですか?ダウンロードページは無料
Luciano

はい、私はそれが今無料であると信じています、私は今それを使用している多くの人々を見ます。
リンドンホワイト

6

この質問に対する以前の回答は、ほとんどの重要なポイントをカバーしていますが、これに関して1つのコメントを追加します。

MKLにはいくつかのタスクの優位性がありますか?

MKLチームは、将来のIntel命令セットと特定のプロセッサでの実装について知るユニークな立場にあります。さらに、Intel以外の誰も使用できない独自のプロセッサシミュレータと試作前のハードウェアにアクセスできます。したがって、MKLは、将来の製品に関する知識の程度、およびこの知識をいつ入手するかに関して優位にあります。したがって、少なくとも新機能を備えた製品の寿命の早い時期に、BLASの実装が他の誰よりも優れているのであれば、驚くべきことではありません。

一方、インテルはAVX-512命令セットについて非常にオープンであり、開発者がこれらをネイティブにサポートしないプロセッサーでAVX-512命令をエミュレートできるようにするインテル®ソフトウェア開発エミュレーター(SDE)を提供しています。このため、これらの製品の寿命の早い時期にAVX-512をサポートするIntelプロセッサでBLASの高品質のオープンソース実装が利用可能になっても驚くことではありません。

もちろん、特定のプロセッサに関する詳細な情報と、高密度線形代数アルゴリズムの基本情報との違いは、完全には解決されていません。次の引用は、私ができる以上にこの問題に対処しています。

理論的には、理論と実践の間に違いはありません。しかし、実際にはあります。

完全開示:私はインテルで働いています。


MKLをオープンソースにする可能性はありますか?
-Royi

どんな目的のために?MKLはビールのように既に無料です。BLISのソースコードを読むことには、はるかに大きな教育的価値があります。アセンブリを読みたい場合は、OpenBLASを試してください。
ジェフ

1

ベンダーのBLASライブラリとオープンソースのBLASライブラリの主な違いは、オープンソースが最新のハードウェア機能をサポートするのにかかる時間だと思います。

BLASは広く使用されているため、最新のハードウェア機能をサポートすることはベンダーの関心事です。たとえば、2011年1月に「sandy-bridge」プロセッサで導入されたIntelのAVXベクトル拡張を検討してください。MKLはCPUが利用可能になる前からAVXをサポートしていました。 。

また、アプリケーションが本当にパフォーマンスを必要とし、さまざまなBLASライブラリのベンチマークを開始する前、または最適化に取り組むハッキングを開始する前に、アプリケーションのプロファイルを作成します。人間の直感は非常に効果的なプロファイラーの予測因子ではないことが一般的です。少なくとも私はそうではありません!したがって、時間をランダムに最適化するのではなく、アプリケーションのプロファイルを作成し、各ボトルネックに体系的にアプローチします。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.