タグ付けされた質問 「compiling」

3
インテルFortranコンパイラー:コンパイル時の最適化のヒント
私の研究室での個人的な経験から始めます。ifort 9と10日に戻って、-O3とプロセッサ固有のフラグ(たとえば、-xW -xSSE4.2)を使用してコンパイルする最適化に非常に積極的でした。しかし、ifort 11から始めて、次のことに気付き始めました 。1.結果にいくつかの矛盾があります(セマンティクスが保持されなかったため) 2. -O2に比べて小さいゲイン。 そのため、現在は、通常-O2と-xhostを使用してコンパイルするだけです。ifort 11でより良い提案がありますか?ifort 12に移行すると、これは再び変わりますか?前もって感謝します。

1
OpenMPなどの共有メモリモードでMPI-3.0を実行する方法
5次元の人口バランスモデルを数値的に解くためにコードを並列化します。現在、FORTRANには非常に優れたMPICH2並列化コードがありますが、パラメーター値を大きくすると、配列が大きくなりすぎて分散メモリモードで実行できなくなります。 15ノードのクラスターにアクセスできます。各ノードには2つの8コアCPUと128GBのRAMがあります。共有メモリモードでMPI-3.0を使用してプログラムを実行し、各プロセスが各アレイの独自のコピーを生成しないようにしたいと思います。 クラスターで何かを実行する前に、Ubuntuを実行しているデスクトップでテストする必要があります。2つの8コアCPUと128 GBのRAMを備えているという点で、本質的にクラスターの1つのブレードです。コードを書いてテストしますので、Ubuntuコンピューターでプログラムを実行するように応答してください。 MPI-3.0をデフォルトの分散メモリモードの代わりにOpenMPのような共有メモリモードで実行する方法があることを読みました。 質問: コードを変更するにはどうすればよいですか?次のような他のMPI関数への呼び出しを追加する必要がありMPI_WIN_ALLOCATEますか? 共有メモリモードでMPI-3.0を実行するようにコードをコンパイルするにはどうすればよいですか?複数のノードにまたがる場合、これは異なりますか? 可能な場合は、サンプルのコンパイルスクリプトを提供してください。また、GNUコンパイラしかありません。私が使用しているクラスターは、Intelコンパイラーをサポートしていません。

4
小さな正方行列(10x10)の最速線形システム解決
小さな行列(10x10)(小さな行列と呼ばれることもある)の線形システム解法の地獄を最適化することに非常に興味があります。これのための準備ができた解決策はありますか?行列は非特異と見なすことができます。 このソルバーは、Intel CPUでマイクロ秒単位で1 000 000回を超えて実行されます。コンピューターゲームで使用される最適化のレベルについて話しています。アセンブリやアーキテクチャ固有でコーディングしたり、精度や信頼性のトレードオフの削減を検討したり、浮動小数点ハックを使用したりしても(-ffast-mathコンパイルフラグを使用します。問題ありません)。ソルブは約20%の時間失敗することさえあります! EigenのpartialPivLuは私の現在のベンチマークで最速で、-O3と優れたコンパイラーで最適化するとLAPACKよりも優れています。しかし今、私はカスタム線形ソルバーを手作りする段階にあります。何かアドバイスをいただければ幸いです。私は自分のソリューションをオープンソースにし、出版物などで重要な洞察を認めます。 関連:ブロック対角行列を使用して線形システムを解く速度 何百万もの行列を反転する最も速い方法は何ですか? https://stackoverflow.com/q/50909385/1489510

3
コードがコンパイラーによってベクトル化されているかどうかはどのようにしてわかりますか?
ルックアップと計算のコストに対するJed Brownの回答で例示されているように、ベクトル化された浮動小数点演算とベクトル化されていない浮動小数点演算を使用すると、コードがはるかに高速になります。最新のコンパイラの多くは、自動ベクトル化を実行できると主張しています。コードのどの部分が正常にベクトル化されているのですか?

1
静的、動的、単一の動的リンクとはどういう意味ですか?
インテルMKL for BLASを使用し、コマンドラインオプションのヘルプにはインテルMKLリンクラインアドバイザーを使用しています。 アドバイザーは、静的、動的、および単一動的ライブラリーのオプションを提供します。これらの用語はどういう意味ですか? これに関するSOに関する投稿は数多くありますが、それらすべては科学的/数学的なコードではなくソフトウェアの開発に焦点を当てています。(これは特に便利でした) これらの用語は並列コンピューティングにどのように関連していますか? どちらか一方が他方より「優れている」のでしょうか。(より良いものをより正確に定義する必要があることは知っていますが、今のところ方法がわかりません) より一般的に使用されるものとその理由は? リンクするときにプログラマは何を考慮する必要がありますか?
9 compiling 
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.