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

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

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

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

マルチメディア処理から信号処理まで幅広く活用できる高速ライブラリ「IPP」

 インテル C++ コンパイラーに付属するライブラリの1つに「インテル インテグレーテッド・パフォーマンス・プリミティブ」(Integrated Performance Premitive、以下IPP)がある。IPPは動画や音声、画像などの処理に向けた関数を備えたライブラリなのだが、実際のところIPPがどのようなものなのか分からない方も多いだろう。そこで本記事では、IPPには何が含まれており、またどのような用途に使えるのか、紹介していこう。

ValaによるGNOMEアプリケーションのプログラミング

 GNOMEのプログラミング言語Valaを使えば、わざわざANSI Cでオブジェクト指向的なプログラミングをしなくても、GNOMEデスクトップのコア部分であるGLib2オブジェクトシステムを利用できる。MonoやJavaとは異なり、Valaのプログラムには仮想マシンもランタイムライブラリも必要なく、Valaオブジェクトを利用する人々はそれらがC以外の言語で書かれていることを知る必要さえない。

C CodでCコードをスクリプトのように扱う

 C Codは、C、C++、またはObjective-Cコンパイラのフロントエンドとして、C言語をスクリプティング言語のように扱うことを可能とするものである。C Codには、C Server Pagesが付属している。C Server Pagesは、ウェブアプリケーションをCまたはC++で記述し、それをオンデマンドで自動的にコンパイルできるようにするために、CGIをサポートする。

コベリティ、アーキテクチャを視覚化するソースコード解析ツール

 コベリティ日本支社(東京都新宿区)は2008年11月17日、ソフトウェアシステムを視覚化できるソースコード解析ツール「Coverity Architecture Analyzer」の国内販売を開始した。潜在的な欠陥を検出して、ソースコード変更箇所がもとの設計仕様に一致しているか確認。チーム開発での品質を高められるという。

GDB/GDBserverによるクロスターゲットのリモートデバッグ

 Linuxベースの組み込みシステムで動くアプリケーションのデバッグは厄介な仕事だが、理論上はGDB(GNUデバッガ)を使えば、ゆとりで片付けられるはずである。だが実際には、そのためのGDBのセットアップがやや難関となる。現実に作業が発生するし、克服すべき技術的な障害も存在するからだ。とはいえ、当て推量に頼らずプログラムを一定の方法で系統的にデバッグすることのメリットは、この作業にかかる手間を補って余りある。この作業で生ずる困難を軽減するヒントをいくつか紹介しよう。

GCC 4.2.0が登場 ― 開発者には恩恵あれどディストリビューション関係者の反応は今ひとつ

 今週前半(5月13日)、GNUプロジェクトは広く普及しているGNU Compiler Collection(GCC)のメジャーリリースを発表した。このGCC 4.2.0では、新機能の導入と開発者向けの改良が行われているが、我々が話を聞いたディストリビューション開発者の大半は、新たなリリースの恩恵を急いで取り込むつもりはないようだ。