登場した不揮発性メインメモリ。Publickey×ついに登場した不揮発性メインメモリ。対応アプリ開発に欠かせない性能チューニングツールがインテルから[PR]2020年3月30日これまでのコンピュータの常識では、電源を切ったらメインメモリ上のデータは消えてしまいます。そのため、不意の停電などで消えてしまっては困る重要なデータは、必ずストレージに保存しなければなりませんでした。MemoryはDRAMと同様にDDR4スロットに挿して利用し、最大3TBまで追加できます。メインメモリの一部としてCPUから高速にデータを読み書きできるだけでなく、APIを通じてストレージのように読み書きすることも可能です。Memoryを、DRAMとSSDのあいだの新しいメモリレイヤーとして位置付けています。Memoryは、すでに最新のサーバ向けXeonプロセッサに対応した製品の本格出荷が始まっています。Memorサポートも明言しており、その環境はおそらく今年後半から来年には整ってくると予想されます。Memoryは不揮発性メモリであるために、ここにデータを配置すると、データを失わないためにストレージに保存するという動作を省略できます。Memoryを活用すれば、データやログをいちいちストレージに書き込まなくてよくなるので実行速度が飛躍的に向上するでしょう。Memoryに最適化するには、十分なチューニングが求められます。いうのも、最新のCPUではマルチコア化が進んでいるからです。Memoryであっても、メモリとCPUのあいだで効率的なデータ転送が求められます。そのためには、メモリからCPUへのデータ転送に関するボトルネックを徹底的に排除し、できるだけ多数のコアが並列に処理を進められるように、メモリ上におけるデータの構造や配置、読み込みや書き込みの順番などのチューニングか欠かせません。MemoryはDRAMよりもアクセス速度が遅いため、そのままではアプリケーションの性能を落とす可能性すらあります。活用にはより深いチューニングが必要なのです。Memoyによるメモリなどの状態を逐一解析していく必要があります。そのためには解析ツールが不可欠であり、インテルが純正の解析ツールを提供しています。日本ではいずれもエクセルソフトが日本語版を販売し、技術サポートなども提供しています。それぞれを紹介しましょう。Studioのアドオンとして使うことができます。Profilerは名プログラムの実行におけるCPUのコアやキャッシュの使われ方、メモリの使われ方などの状況を詳しく解析し、どこが性能のボトルネックになっているのかを簡単かつ効率よく把握できるツールです。C/C++、Fortran、.NET、Java、Python、Goなどのプログラミング言語に対応し、またLinuxではコンテナにも対応しています。Profilerでは、おもに「ホットスポットの発見」「スレッド並列の効率の評価」「コア内部の実行効率の評価」などの解析が可能です。ホットスポットとは、実行したプログラムのなかでもっともCPU時間を使用している部分のことです。プログラムの動作速度を改善するにはいちばん時間がかかっているところを改善するのが効果的であり、ホットスポットの発見は、その効果的な部分を見極めるために使われます。Profilerによってプログラムの実行が解析されると、このホットスポットが示されてプログラムのどの部分でCPU時間が多く使われていたか、関数や項目ごとに見ることができます。ソースコードレベルにまで掘り下げていくことができます。スレッド並列の効率の評価では、スレッドがどれだけ効率よく並列に動作できているかを示してくれます。メモリを共有して並列実行するプログラムを実現するためのコンパイラの指示文やライブラリなどを規格化した、OpenMPを利用して性能を改善するための有益な情報を表示してくれます。コア内部の実行効率の評価では、CPUのコア内部のマイクロアーキテクチャーによって効率的にプログラムが実行出来ているかを評価します。コア内部では、メモリから命令を取り出す「フェッチ」、取り込んだ命令をマイクロオペレーションに変更する「デコード」、デコードしたマイクロオペレーションを実行する「実行」、そして実行結果に応じてメモリをアップデートする「リタイア」の4つのパイプラインによって処理が行われています。すべてのコアでこのパイプラインがスムーズに流れていれば、非常に高い実行効率として評価されます。分岐予測ミスによる命令のフラッシュ、浮動小数点数の除算など実行コストの大きな命令の実行、そしてメモリーアクセスにおけるキャッシュミスを起こすことなどで、実行効率が下がっていきます。Profilerによってパイプラインの実行効率を視覚化し、どこがボトルネックになっているのかを把握。改善のためのヒントを得ることができます。Advisor:コードのベクトル化やメモリアクセスパターンをアドバイスAdvisorはコードのベクトル化、すなわち一度に複数のデータを処理できるベクトル命令を活用できるようにコードを最適化することや、CPUが最適なパターンでメモリへアクセスできるようにコードを改善することなどを、アドバイスによって支援してくれるツールです。Advisorはまず、ハードウェアの限界までプログラムを実行。そもそもハードウェアが備えている性能に対して、例えば実行したプログラムではDRAMからCPUへのデータ転送で十分にその性能を発揮できていない、といったことを視覚化して教えてくれるほか、ベクトル化やスレッド化などの具体的なアドバイスもしてくれます。ソフトウェアによって多様なハードウェアを使いこなしていく時代にハードウェアの進化に任せておけばプログラムの実行速度は何もしなくても毎年のように向上していく、というプログラマにとって幸せな時代は残念ながら数年前に終わりを告げています。これからのハードウェアの性能向上は、コア数の増加やGPU、FPGA、AI専用チップ、不揮発性メモリといった多様化によって実現されていきます。これからのコンピュータ性能の向上とは、この多様化するハードウェアをソフトウェアによって活用し、それぞれに最適化していくことで実現されていくものとなるでしょう。ProfilerやAdvisorといったツールを使いこなす必要性も高まっていくことになるのではないでしょうか。不揮発性メモリPublickey広告.NET帳票ツール。デザイナはExcel。クラウド/サーバー環境対応。.NET5/6/8に対応。デザイナはExcelのため、エンドユーザーも編集可能。ノーコードでCSVファイルから帳票を出力する、CSVReportも新収録。Desktopなどクラウドサービスの利用率が急上昇中、最大775パーセント増加。Niino(jniino)IT系の雑誌編集者、オンラインメディア発行人を経て独立。2009年にPublickeyを開始しました。Copilotが複数ファイルにわたるコード変更や生成に対応。CopilotがAppleのXcodeに対応。Xcode」パブリックプレビューOrbがデジタル通貨決済システムの基盤にNewSQLのTiDBを採用。ETLをなくし、トランザクション処理とデータ分析を統合可能に[PR]日本人プログラマ向け、プログラミングに適した「フォント」まとめ。2024年版GitHubで最も使われている言語、PythonがJavaScriptを抜いて1位に。生成AI関連プロジェクト急増で。Sonnetが選択可能に。100」の仮想マシンを正式提供開始JetBrains、JavaScript/TypeScriptのためのIDE「WebStorm」と.NETのためのIDE「Rider」、非商用利用ならば無償で利用可能に。