2016-05-06 13 views
0

このトピックに関する情報が見つかりません コンパイルされ、gccまたはiccとリンクされたプログラムを実行しているときに実行時のパフォーマンスに違いがありますか?iccまたはgccを介してmklライブラリをコンパイルしてリンクする際に、パフォーマンスが異なりますか?

両方のコンパイラとして

+0

あなたは、Intel **マイクロ**アーキテクチャを意味していますか? AMD、VIA、またはその他によって設計されたx86 CPUではなく、Intelによって実際に設計されたCPUである。 MKLは、x86(32ビット、別名インテルアーキテクチャ(IA-32))、AMD64(別名x86-64インテル64)、IA-64の3つのアーキテクチャでのみ動作します。だから、もしあなたがインテルのAMD64命名体系を買うならば、それらはすべてインテルのアーキテクチャと呼ぶことができます。 –

答えて

1

正式MKLでサポートされています(私の仮定は、Intelアーキテクチャ上で動作するプログラムがあることである)と、彼らはMKLのための実際の作業を行うなどlibmkl_core.alibmkl_core.soと同じライブラリをリンクします。 MKL操作のパフォーマンスは同じでなければなりません。もちろん、あなた自身が書いたコードは、異なるコンパイラによってコンパイルされているので、異なっていてもかまいません。

編集

MKLは、Cライブラリとして設計されています。ほとんどのAPIは、あらかじめコンパイルされており、比較的長い実行時間が予想される大きな入力データで実行されるように設計されています。 APIを呼び出す方法は、パフォーマンスに大きな影響を与えません。

インラインコードとヘルパーマルコスがあります。たとえば、mkl_direct_call.hには、小さな行列乗算のインラインコード/マルコが含まれています。小さな行列(サイズが〜20以下)は、このコードでパフォーマンスが向上する可能性があります。したがって、この部分を含むときにパフォーマンスの差が生じることがあります。詳細については、次のリンクを参照してください。

Improve Intel MKL Performance for Small Problems: The Use of MKL_DIRECT_CALL

Limitations of the Direct Call

+0

MKLにはテンプレート/インラインのものはあまり含まれていませんか?ヘッダーのプロトタイプ/宣言を使って、あらかじめコンパイルしたコードですか? –

+0

@PeterCordes素晴らしいコメント。 MKLはCライブラリとして設計されています。したがって、APIは比較的簡単です。インラインコードが存在する可能性があります。この部分のヘッダーファイルを確認するのは簡単です。 – kangshiyin

関連する問題