プログラマーの生産性を高める

同カテゴリーの次の記事

インテル® INDE Media for Mobile チュートリアル - Android* 上での Qt* Quick アプリケーションのビデオ・キャプチャー

この記事は、インテル® デベロッパー・ゾーンに公開されている「Making programmers more productive」の日本語参考訳です。


EMEA で開催された、今年のインテル® ソフトウェア・カンファレンスの 1 つのテーマは、プログラマーの生産性でした。4 月にセビリアで開催されたイベントでは、招待されたリセラーやジャーナリストに、ハイパフォーマンス・コンピューティング (HPC)、並列プログラミング、クロスプラットフォーム開発そしてビデオ処理向けのインテルのツール (英語) を詳しく学ぶ機会が提供されました。

初日の講演で、インテル® ソフトウェア製品のチーフ・エバンジェリストである James Reinders は、「スケーリングは重要であり、消費電力についても多くの話をしなければなりません。しかし、十分に話されていない課題の 1 つに、プログラマーの生産性があります」と述べました。

これは、プログラマーが容易に開発を行うことができるようにするだけでなく、技術の進化に伴いそれに対する習熟のための投資や知識を維持することを意味します。例えば、インテル® Xeon Phi™ 製品ファミリーは、61 個のコアを提供し、並列プログラムのみを効率良く実行するように設計されています。しかし、プログラマーが新しい技術を全く新しく習得する必要性を回避するため、インテル® Xeon® プロセッサー・ファミリーと同じプログラミング・ツールとプログラミング・モデルを採用しています。記述されたコードがアーキテクチャー間でポータブルであることを確実にするため、他の企業や標準化団体と共に標準化に対する作業を進めているのも同じ理由によるものです。

イベントを通して、生産性を高めるのを支援するいくつかのツールについて聞く機会がありました。シニア・アプリケーション・エンジニアである Laurent Duhem は、新しいインテル® Advisor XE 2016 Beta (https://software.intel.com/en-us/advisor_getting_started_intro (英語)) のベクトル化機能についてプレゼンテーションを行いました。このツールは、プログラムが異なるデータ要素を同時に計算することができる、Single Instruction Multiple Data (SIMD) 命令を使用できる場所を特定するのに役立ちます。インテル® Advisor XE 2016 は、ベクトル化をシミュレートしメモリー競合をチェックすることで、正当性を保証するのに役立ちます。また、プログラムが大部分の実行時間を費やす場所を特定し (ループが呼び出された回数を含む)、それらを最適化するのを可能にします。このツールは、ベクトル化を改善するヒントを提供し、非連続なメモリーアクセスによりベクトル化が非効率である場所にアドバイスを与えます。ベクトル化は困難な課題ですが、この新しいツールは、できるだけ簡単にできるよう各ステップでガイドを提供します。ベータ版のダウンロード (https://software.intel.com/en-us/advisor_getting_started_intro (英語)) ができます。

マルチプラットフォームへの取り組み

ベクトル化における生産性の課題は、ハードウェアの複雑性に起因すると思われるかもしれません。コンシューマー向けソフトウェア開発では、生産性の課題はデバイスを構成するオペレーティング・システム、フォームファクターおよびプロセッサーのアーキテクチャーの多様性による可能性が高いでしょう。インテル® INDE は、複数のオペレーティング・システムとアーキテクチャー向けに高速な C++ コードを記述し、より迅速にアプリケーションを出荷することを可能にするツールスイートです。テクニカル・コンサルタント・エンジニアである Alex Weggerle は、既存の開発環境との統合方法と、その主要機能を説明しました。例えば、スイートはフルスピードの Android* エミュレーションを可能にする仮想化技術を導入するインテル® Hardware Accelerated Execution Manager (インテル® HAXM) (英語)を含んでいます。これは、異なるサイズとタイプの各種デバイス向けのテストを迅速に行うことを可能にします。Graphics Frame Debugger (英語)は、修正が行われるたびに (5 ~ 10 分の処理) 更新された OpenGL* コードをターゲットデバイスにプッシュする必要をなくし、スクリーンショットを取得して修正が反映されているかをすぐに確認できます。Alex はまた、インテル® XDK を紹介しました。これは、すぐに役立てることができるテンプレートと、そして、携帯電話ハードウェア機能へのクロスプラットフォームからのアクセスを可能にする Apache Cordova* API が含まれる無料の HTML5 クロスプラットフォーム開発ツールです。

より効率良い並列プログラミング

インテル® Parallel Studio XE 2016 Composer Edition のベータ版が公開されています (英語)。テクニカル・コンサルタント・エンジニアである Heinz Bast は、ハードウェアを適切に利用する並列プログラムを開発するプログラマーをサポートするように設計された、このツールスイートの新機能をいくつか紹介しました。インテル® Cilk™ Plus と OpenMP* 4.0 (今後登場する OpenMP* 4.1 のいくつかの機能がすでに実装されています) により改善されたベクトル化機能を提供します。Reinders は、最新の OpenMP の興味をそそられる機能の 1 つは、元のコードを原型のまま維持しながらパフォーマンスを向上する効率よい手段を持ち、さらにベクトル化を支援できるようになったことである、と言っています。新しいインテル® Parallel Studio XE 2016 ツールスイートは、キャッシュミスを減らすためデータをチャンクに分割し、ループ内で依存関係がある SIMD 命令のボトルネックを排除するため配列のリダクションを行うループブロッキングを導入しています。新しい注釈付ソースリストは、コンパイラーの振る舞いを容易に確認できるよう対応する行にコンパイラーの診断を挿入します。

GPU へのオフロード

ますます洗練されたグラフィックス機能がインテル® プロセッサーに追加されたことで、それらは重要な計算資源となり、パフォーマンスは CPU コアの最大 8 倍となっています。Heinz は、インテル® C/C++ コンパイラーのアノテーションを使用して、インテル® HD グラフィックスの実行ユニットにオフロードする方法を紹介しました。多くの開発者がこの機能を必要とし、インテルは独自の言語拡張を提供するのではなく、標準化をサポートすることを選択しました。

高速コンパイル

コンパイル時間を短縮する変更が行われました。インテル® Fortran コンパイラー XE 2016 (英語) では、サブモジュールの実装が改善されています。これまで、モジュールに変更を加えた場合、そのモジュールだけではなくそれを呼び出すモジュールも再コンパイルする必要がありました。300 万行のソースを持つプロジェクトでは、これはかなりの負担となります。サブモジュールにより、サブモジュールと他のモジュール間のインターフェイスが変更されない限り、その必要がなくなりました。インテル® C/C++ コンパイラー 16.0 (英語) は、デフォルトでプロトタイプ化 (ほとんど利用されない) のための組込み関数の無効化など、コンパイル時間を改善する多くの機能を実装しています。

ビデオ処理のアクセラレーション

カンファレンスの最後のセッションでは、ビデオ・ストリーミングとダウンロードに関するさまざまな課題が考慮されました。インテル® Core™ プロセッサー以降、インテルはビデオのエンコードとデコード向けのハードウェア・アクセラレーション機能をプロセッサーに実装しています。インテル® Media Server Studio とインテル® INDE に含まれる Media SDK は、アプリケーション開発者がこれらの機能をソフトウェアの中で利用することで、視覚解析、メディア・トランスコード、そしてクラウド内のグラフィックス (デスクトップ・ホストとクラウドでのゲームを含む) 向けのアプリケーションを簡単に作成することを可能にします。インテル® Video Pro Analyzer (英語) など他のインテルの Media ツールは、詳細なビデオ解析、デバッグ、そして検証機能を提供します。さらに、検証のテストサイクルを短縮するため、インテルは、インテル® Stress Bitstreams and Encoder (英語) を介してカスタム・ビットストリームを生成できるさまざまなビットストリーム形式と各種エンコーダーを提供します。ビデオや高解像度への消費者の重要は高まっています (2018 年のワールドカップまでに 4K が普及すると予測されます)。帯域幅とリソースの制約の中で、ハードウェア・アクセラレーションによるエンコードとデコード、そして優れたユーザー体験を提供する革新的なメディア・ソリューションがますます重要になっています。

ソフトウェア開発者向けのインテルツールを詳しく知るには、インテル® デベロッパー・ゾーン (英語)もしくは iSUS を訪問ください。

コンパイラーの最適化に関する詳細は、最適化に関する注意事項を参照してください

関連記事