みなさんこんにちは! 最近、OpenMPのような素晴らしいものに出会いました。
ここまたはここの説明ですが、この技術の有効性を示す美しいグラフはありません。 この投稿では、さまざまなプラットフォームでOpenMPを使用することの有効性を明確に示すようにします。 歓迎に興味がある人!
現代の世界には、比較的短時間で複雑な計算を実行できるさまざまなオペレーティングシステムと強力な新しいプロセッサがあります。 この研究は、どの環境で労働集約型の計算を実行するのが最も効果的であるか、および計算に費やす時間を削減する方法を見つけるために実施されました。
研究を行うために、アルゴリズムが選択されました-積分式を使用してPIの数を計算します。このアルゴリズムは並列化に適しているため、計算の面でかなり面倒です。
アルゴリズムを並列化するために、openMPテクノロジーを使用することが決定されました。 このテクノロジーを使用すると、異なるランタイムに対して同じコードを効果的に記述でき、プログラマーがLinuxおよびWindowsでそれぞれp_threadsまたはWindows Threadsを使用してコードを書き込むときに発生するエラーを最小限に抑えます。
比較のために、3つのランタイムが選択されました。
- Windows 10
- Linux用のWindowsサブシステム
- Linux Ubuntu 16.10 LTSディストリビューション
テストは、プロセッサを搭載したコンピューターで実施されました。
Intel Core i7-4771
最初の2つのシステムについて多くの人が聞いたとしても、WSLはまだほとんど知られていません。 WSLは、Windows 10で比較的最近登場した機能です。 ubuntu 14.04カーネルがWin10カーネルに統合されました。 このシステムを使用すると、Windows上で実行されるLinuxアプリケーションを実行できます。さらに、ユーザーはエクスプローラーを開くのと同じくらい簡単に使用できるほぼ完全な作業環境にアクセスできます。 あなたはここでそれについて読むことができます 。
今チャート
グラフに表示されるデータは平均化されており、各OSに対して5回のテストが実行されました。 グラフの縦軸、1秒あたりの時間、横軸の区分の値は表に示されています
1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
1 | 2 | 4 | 6 | 8 | 10 | 12 | 16 | 32 | 64 | 128 | 256 | 512 | 1024 |



結論
- openMPは、マルチスレッドアプリケーションの開発速度の問題を解決する技術ですが、他の問題を排除するものではありません。
- マルチスレッドは複雑で重要なトピックであり、不適切な使用は間違いなく作業結果の悪化につながります。
- Linux VS Windows-ほとんど同じ結果が得られます。つまり、必要な技術スタックを提供し、最小限の労力で問題を解決できるプラットフォームを使用する必要があります。
ご清聴ありがとうございました。