ソフトウェア高速化の鍵は「並列化」:いま注目される並列化技術を知る

 従来は高級サーバーでしか採用されていなかったマルチCPU/マルチコアが、一般的なPCにも普及しつつある。このようなマルチCPU/マルチコア環境において、高速に動作するアプリケーションを開発するために注目されているのが「並列化」技術である。本記事では、この並列計算の基本的な考え方やそのメリット、利用できるライブラリなどについて紹介する。

マルチスレッド/並列プログラミングの必携ツール「インテル Parallel Studio」徹底活用

 Intel Core 2シリーズの登場以来、一般的なPCにおいてもマルチコアCPUが普及しつつある。それとともに注目を浴びつつあるのが、プログラムの並列化/マルチスレッド化だ。そんな中、インテルから、並列プログラミングを強力にサポートする開発ツール「インテル Parallel Studio」(以下、Parallel Studio)が登場した。

SIベンダー6社、システムの「非機能要求」を“見える化”するツール群を公開

 NTTデータや富士通など国内SIベンダー6社は2009年5月26日、システム構築において発注者の「非機能要求」を“見える化”するツール群「非機能要求グレード」を公開した。発注者と受注者で非機能要求を段階的に確認し、利用目的に合うシステム基盤の構築を支援する。6月30日までパブリックコメントを募集し、2009年度下期に最終版を公開する予定。

Subversionリポジトリと連携できるgit-svn

 「Gitを使いたいが、中央リポジトリにはSubversionを使わざるを得ない」という場合も多いだろう。そのような状況で便利なのが、SubversionリポジトリとGitリポジトリの橋渡しをする「git-svn」である。git-svnを利用することで、SubversionリポジトリとGitのローカルリポジトリを同期させることが可能だ。本記事では、このgit-svnの活用方法を紹介する。

インテル コンパイラーでオープンソースソフトウェアをコンパイルしよう

 インテルの「インテル C++ コンパイラー」は高速なバイナリを生成するということで知られている。いっぽうWindowsの世界ではマイクロソフトのVisual C++が、LinuxではオープンソースのGCCが事実上標準のコンパイラになっており、多くのオープンソースソフトウェアはこれらのコンパイラでコンパイルされている。そのため、利用したいソフトウェアがインテル コンパイラーでコンパイルできるのか興味のある人も多いだろう。また、Visual C++やGCCでコンパイルされたものと比べ、どのくらいパフォーマンスが違うのかも気になるところだ。

 インテル C++ コンパイラーはVisual C++やGCCとの互換性を備えているものの、完全に同一というわけではない。そこで、有名なオープンソースソフトウェアについてインテル C++ コンパイラーでのコンパイルを行い、どの程度の修正でコンパイルが可能なのか、またそのパフォーマンスはどうなのか、調査してみよう。

パフォーマンス解析ツール「VTune」でアプリケーションを高速化

 作成したプログラムのパフォーマンスに問題がある場合、性能解析ツールを利用して問題点を分析するのが一般的だ。性能解析ツールには様々なものがあるが、その中でも高機能なものとしてインテルが開発する性能解析ツール「インテル VTune パフォーマンス・アナライザー」がある。

 本記事ではパフォーマンスの問題が発見されたプログラムを対象に、このインテル VTune パフォーマンス・アナライザーを使用して問題点の調査とパフォーマンスの改善を行う例を紹介する。

インテル コンパイラーでビルドする高速Firefox

 近年、そのパフォーマンス競争が盛んに行われている分野として、Webブラウザが挙げられる。たとえばSafari 4のベータ版は自らを「世界最高速」とうたうなど、それぞれのWebブラウザが自身の高速性をアピールしているが、それではWebブラウザのコンパイルにインテル コンパイラーを利用することでパフォーマンスを向上できないだろうか?

 そこでFirefoxの最新版であるFirefox 3.1 ベータ2について、Windows環境でインテル コンパイラーを使用してコンパイルし、そのパフォーマンスを調査してみた。

インテル コンパイラーの実力を測る――インテル コンパイラー版MySQLは本当に速いのか?

 インテルが開発している「インテル コンパイラー」は、インテルCPUに最適化された高速なバイナリを生成するということで知られており、Oracleなどパフォーマンスを求めるベンダーで採用されているほか、科学計算用アプリケーション、3Dグラフィックソフトなど、さまざまなソフトウェアのコンパイルに利用されている。

 しかし、「インテル コンパイラーはパフォーマンスが高い」とだけ言われても、なかなかピンと来ない人も多いのではないだろうか。そこで、インテル コンパイラーでコンパイルされたバイナリをベンチマークテストし、実際どの程度の性能向上が見込まれるのかを調べてみよう。

「インテル コンパイラー」で高速に動作するバイナリを作成しよう

 インテルが開発している「インテルコンパイラー」は、インテルCPUに最適化された高速なバイナリを生成するということで知られている。そのため、大量の数値計算が必要とされるシミュレーションの分野や3D CGなどの画像処理、科学技術分野などのソフトウェアで多く採用されている。

 しかし、「インテルコンパイラーはパフォーマンスが高い」とだけ言われても、なかなかピンと来ない人も多いのではないだろうか。また、一般的なソフトウェアでも性能向上の恩恵に預かれるのかも興味深いところだろう。

 そこで本特集では、このインテル コンパイラーでコンパイルされたソフトウェアについてそのパフォーマンスを調査するとともに、インテル コンパイラーでのコンパイルテクニックや、性能解析ツール「インテル VTune パフォーマンス・アナライザー」を使ってパフォーマンスチューニングを行う方法なども解説する。

WindowsでのGit環境構築とその注意点

 もともとはLinuxカーネル用のバージョン管理システムとして開発されたこともあって、GitのWindowsサポートは若干遅れている。特に日本語環境で利用する場合は設定などに注意が必要だ。そこで本記事では、Windows環境でGitを利用する方法およびその設定方法、そしてGUIでGitの機能を利用できるツールについても紹介する。

分散バージョン管理システムGitを活用しよう

 近年急速にユーザーを増やしているバージョン管理システムに「Git」がある。GitはLinuxカーネルの開発リーダーとしても知られるLinus Torvalds氏らが、Linuxカーネルの開発に使用する目的で開発した分散型バージョン管理システムで、現在ではPerl 5やRuby on Rails、Android、Wine、X.orgなど、さまざまなプロジェクトで採用されている。

 本特集では、Gitを使用するのに必要な「分散型バージョン管理システム」の基本的な考え方を紹介するとともに、Gitの導入方法やWindows環境での利用方法、Subversionなどほかのバージョン管理システムとの連携など、Gitを活用するためのテクニックを紹介する。

最近流行りのプログラミング言語

プログラミング言語の流行り廃りというのは、それ自体なかなか興味深い分析対象だ。少しだけ昔話をすると、私がコンピュータをいじり始めた十数年前は、PascalやQuick Basicあたりも広く使われてはいたものの、結局はC言語を学ばないとどうにもならなかった。私より世代が少し前の人ならばアセンブリも必修科目だっただろうし、少し後の人だと、もしかすると最初に触れた言語はCではなくJavaかもしれない。

コンパイラを変えるだけでパフォーマンス向上、インテル コンパイラーの実力を見る

 「よりパフォーマンスの高いプログラムを作成するにはアセンブラを駆使すべし」という話を聞いたことがある人も多いだろう。これは、C/C++言語で記述されたプログラムには冗長な部分があるため、ノウハウを持つプログラマがアセンブラでチューニングしたプログラムの方が高いパフォーマンスを得られる、ということであった。しかし、現在では必ずしもこのことは当てはまらなくなっている。その理由は、コンパイラの進化と、CPUおよびPCアーキテクチャの複雑化にある。

インテル謹製の数値演算ライブラリ「MKL」を使ってプログラムを高速化

 各種スケジューリング処理やシミュレーション、統計処理、デジタル制御や信号処理などの分野では、多次元行列演算や高速フーリエ変換(FFT)、線形計画法など、さまざまな数学的処理が必要とされる。これらの処理に対するアルゴリズムはほぼ完成されており、フリー/商用を問わず、すでに多数の計算ライブラリがリリースされている。その1つが、インテルが提供する「インテル マス・カーネル・ライブラリ」(Intel Math Karnel Library、以下MKL)だ。