レベル: 初級 Anita Bateman, Certified Senior IT Architect, Cell Solutions,
IBM
2008年 10月 14日 Cell Broadband Engine™ で柔軟にプログラミングを行えることがマルチコアのコミュニティーでホットな話題となっています。この記事では、皆さんの既存のスキルを Cell/B.E.™ でのプログラムに活用する方法と Cell/B.E. システムのための 3 つのプログラミング手法、そしてこのプラットフォームで利用可能なさまざまなツールやソフトウェア、ハードウェアについて説明します。
この記事では、IBM とソニー、東芝によって共同開発され、現在マルチコアのコミュニティーで活発に議論されている、Cell Broadband Engine におけるプログラミングの柔軟性について説明します。話を進める上で、Cell/B.E. のアーキテクチャーと実証されたパフォーマンスについて基本的な知識があることを前提とします。Cell/B.E. に関する説明を読むのが初めての場合は、以下の記事を読んでから以降のプログラミングに関する説明に進んでください。
この記事では以下の内容について説明します。
既存のスキルを再利用する
Cell/B.E. での開発では、プログラミング・スキルや IT 管理のスキル、既に持っている並列プログラミングのスキルなど、皆さんが既にお持ちのスキルを再利用することができます。また Cell/B.E. のハードウェアは現在利用しているインフラに接続することができるため、Cell/B.E. ソリューションの IT 管理の方法が容易になります。図 1 はさまざまな業界にまたがる Cell/B.E. システムを示しており、これらのシステムはすべて同じ SPE コードを実行します。
図 1. 同じ SPE コードを実行する、さまざまな業界の Cell/B.E. システム
図 1 を見るとわかるように、Cell/B.E. コードを完全にサポートする Cell/B.E. システムは非常に広範囲に広がっています。コンシューマー製品からビジネス用、エンタープライズ用、そしてハイパフォーマンスのコンピューティング・システムに至るまで、幅広いシステムで同じ SPE コードが実行されています。さらに、各業界の複数のベンダーがこれらのシステムを提供しており、Cell/B.E. 技術が業界にまたがって利用されていることを示しています。
Cell/B.E. のプログラミングには標準的なプログラミング言語 (C、C++、FORTRAN、Java™ 言語など) を使うことができます。また標準的なコンパイラーとデバッガー (GNU ツールチェーンや IBM XL C/C++/FORTRAN コンパイラーなど) を使って開発作業を行うことができます。一般的な開発ツールや IDE もサポートされており、それらの中には一般的なコード・エディター (vi や emacs など) や Eclipse IDE、そして Gedae や RapidMind などのパートナーによる開発ツールなどが含まれています。
Cell/B.E. は標準的な Linux オペレーティング・システム (Red Hat、Fedora、Terra Soft Solutions Yellow Dog Linux など) でサポートされており、また Wind River や Mentor Graphics などのパートナーのリアルタイム・オペレーティング・システムでもサポートされています。
最後に、一般的なライブラリーやフレームワークを使うことができます (例えば IBM DaCS、ALF、DAV、FFT、BLAS、LAPACK、MASS、画像処理ライブラリー、モンテカルロ法による乱数生成など)。Cell/B.E. に利用できるツールやソフトウェア、ハードウェアの完全な一覧はこの記事の最後に挙げてあります。
プログラミング手法と使い方を学ぶ
では 2 番目のポイントに移ります。Cell/B.E. にはどのようなプログラミング手法があり、それらの手法をどのように使うのが最も効果的なのでしょう。
図 2 に示すように、Cell/B.E. のためのプログラミング手法はカスタマイズが可能であり、次の 3 種類に分けることができます。
- ネイティブ (Native) プログラミング
- 支援 (Assisted) プログラミング
- 開発ツールによる (Development tools) プログラミング
図 2. プログラミングとリソース制御の作業量 (プログラミング手法による)
これらのプログラミング手法に関して 1 つ注意する必要があるのは、ネイティブ・プログラミングから支援プログラミング、そして開発ツールによるプログラミングへと移るにつれ、その手法に適した作業は変わってくるということです。ネイティブ・プログラミングでは Cell/B.E. リソースをきめ細かく制御することができますが、作業量は大量になります。一方、開発ツールによるプログラミングでは、リソースをほとんど制御することができませんが、作業量はずっと少なくなります。
この 3 つの手法は相互排他的なものではありません。これらの手法を実際に試してみると、それぞれの手法の機能が重複していることがわかります。次のセクションでは、それぞれの手法の長所と制約、そしてどのようなプログラミング状況で各手法が有効なのかを説明します。それぞれの手法を使用した場合の生産性は、個々のプログラマーのスキル・レベルに依存します。最後のセクションでは、IBM とサードパーティー・ベンダー、そしてオープンソース・グループが提供する、各手法で利用可能なツールの一覧を示します。
ネイティブ・プログラミング
ネイティブ・プログラミングの手法では、そのアプリケーション特有の制御を行うために、ハードウェア・リソースやアプリケーション固有の要素、データの動きなどを対象に作業を行います。他のプログラミング・フレームワークやマルチコア・システムでは、こうした柔軟性を実現することはできません。Cell/B.E. のアーキテクチャーにはこうした柔軟性があるため、メモリーなどのリソースをアプリケーションの中でどう割り当て、使用すればよいかを判断できるようになっています。
長所
ネイティブ・プログラミングの手法には次のような長所があります。
- 一般的に、可能な限り最高、最適に調整されたパフォーマンスを得ることができます。
- ネイティブ・リソースを最大限に活用することができます。
制約
ネイティブ・プログラミングの手法には次のようないくつかの制約要因もあります。
- この手法を使う場合には、自分でコーディングしなければならない量は (他の手法に比べ) 最も多くなります。
- 使用するネイティブ・リソースについて学ぶ必要があるため、学習期間が必要になるかもしれません。
この手法に適した状況
ネイティブ・プログラミングの手法はどのような状況で使うのでしょう。
- ハードウェアに組み込まれるアプリケーションの場合。
- リアルタイム・オペレーティング・システムを使用する場合。
- パフォーマンスが最も重要であり、他の手法ではパフォーマンスの目標を達成できない場合。
- リソース、処理能力、スペース、コストが非常に貴重な場合。
支援プログラミング
すべてのプログラマーがハードウェア・リソースを直接扱おうとするわけではありません。そのため、Cell/B.E. プログラミングのためのライブラリーやフレームワークを活用する支援プログラミングの手法を使うことができます。
長所
支援プログラミングの手法には次のような長所があります。
- ネイティブ・プログラミングの場合よりも開発時間を短縮することができます。
- ネイティブ・リソースの一部は相変わらず使用することができます。
制約
支援プログラミングの手法には次のようないくつかの制約要因もあります。
- ネイティブ・プログラミングによる場合ほど高いパフォーマンスは得られません。
- 選択するフレームワークやライブラリーによる制約に左右されます。
この手法に適した状況
支援プログラミングの手法はどのような状況で使うのでしょう。
- 考えられるすべてのアプリケーションの圧倒的大部分で使用することができます。
- これは大部分の人が慣れ親しんだ典型的なプログラミング手法です。
開発ツールによるプログラミング
開発ツールによるプログラミング手法は最上位レベルの手法であり、ハードウェア・リソースは最も抽象化されています。この手法では開発ツールと開発環境を使って作業を行います。
長所
開発ツールによるプログラミング手法には次のような長所があります。
- 必要な開発期間を大幅に削減することができます。
- この手法は多くのツールに既に組み込まれているため、プラットフォームにあまり左右されません。
制約
開発ツールによるプログラミング手法には次のようないくつかの制約要因もあります。
- 他の手法に比べ、得られるパフォーマンスはさらに低くなります。
- デバッグ機能や、サポートしているプラットフォームの選択肢が CASE ツールによって決まってしまいます。
この手法に適した状況
開発ツールによるプログラミング手法はどのような状況で使うのでしょう。
- 複数のプラットフォームやハードウェア・アーキテクチャーにまたがって同時にデプロイされるアプリケーションの場合。
- ハードウェア・リソースを直接扱うよりも上位レベルのツールで作業を行うことに慣れている場合。
プログラミング手法をサポートするためのソフトウェアとツールを決定する
図 3 は Cell/B.E. に利用可能なさまざまなソフトウェアやハードウェア、ツールを示しており、これらは 3 つのプログラミング手法のどれにも使用することができます。
図 3. Cell/B.E. のためのソフトウェアとツール
(このチャートの最新版はこの記事の「ダウンロード」セクションから PDF で入手することができます。)
IBM のオファリングは一番太い文字で示してあります。サードパーティーによるオファリングは太字の斜体で示してあります。オープンソースのオファリングは通常のテキストで示してあります。このチャートの一番下にある基礎レイヤーにはハードウェア (Cell/B.E. hardware) とオペレーティング・システム (Operating systems) が含まれています。Cell/B.E. のハードウェアは成熟していて、高度に発展しており、多様なフォーム・ファクターで提供されています。Cell/B.E. の能力を発揮できるオペレーティング・システムの多くは成熟して安定であり、十分に確立されたプラットフォームです。
このチャートの基礎レイヤーの上にはソフトウェアとツールがあります。一番下はネイティブ・プログラミング ("NATIVE” PROGRAMMING) 用であり、その上が支援プログラミング (ASSISTED PROGRAMMING) 用、その上が開発環境用またはアプリケーション・ソリューション (DEVELOPMENT ENVIRONMENT & SOLUTIONS) 用です (チャートの左側に対象範囲が示してあります)。この対象範囲は Development tools ボックスと Performance tools ボックスの場合も同様です。これらのボックスの下の方にあるツールはネイティブ指向であり、上に上がるに従って支援型、そして開発環境型のツールと進化します。
このチャートについて、もう 1 つ重要なことを挙げておきます。IBM のみが Cell/B.E. のエコシステムをサポートしているのではなく、Cell Broadband Engine Architecture™ に関しては、サードパーティーやオープンソースによる、商用ベースやコミュニティー・ベースの、活気のある多様な (そして成長しつつある) コミュニティーが確立されています。
まとめ
この記事では、皆さんの既存のスキルを Cell/B.E. のプログラミングに活用する方法、3 つのプログラミング手法、そして Cell/B.E. に利用可能なさまざまなツールについて説明しました。では今から Cell/B.E. のプログラミングを開始するためにはどうすればよいのでしょう。以下は Cell/B.E. のプログラミングを開始するための簡単なチェックリストです。
Cell/B.E. のプログラミングを開始する
- IBM developerWorks の Cell Broadband Engine リソース・センターから最新の IBM SDK for Multicore Acceleration をダウンロードします。
- IBM SDK for Multicore Acceleration をインストールします。
- Cell/B.E. IDE のチュートリアルと IBM Full System Simulator を使って Cell/B.E. システムのプログラミングを開始します。
- developerWorks の Cell/B.E. ディスカッション・フォーラムを調べ、質問をします。このフォーラムは非常に利用者が多く、最も迅速にエキスパートから回答を得ることができます。
- 皆さんの要求に合った Cell/B.E. 用のハードウェアを購入します。Cell Broadband Engine に関して IBM に連絡する際にはこちらをご利用ください。さらにはソニーの Playstation 3 を使って開発を開始することもできます。
謝辞
この記事の作成と校閲にあたって協力をいただいた IBM/Cell/B.E. チームに感謝いたします。
ダウンロード | 内容 | ファイル名 | サイズ | ダウンロード形式 |
|---|
| PDF version of the tools chart, easier to read | sdktools091809.pdf | 94KB | HTTP |
|---|
参考文献 学ぶために
製品や技術を入手するために
議論するために
著者について  | 
|  | Anita Bateman は IBM Corporation のシニア IT アーキテクトです。彼女は 1998年以来 IBM でソフトウェア開発とアーキテクチャーに携わっています。彼女は IBM と The Open Group の両方の認定アーキテクトであり、また申請中や取得済みの特許を数件持っています。University of Texas at Austin にてコンピューター・サイエンスで修士号を取得しており、またミシガン州 Holland の Hope College でコンピューター・サイエンスの学位を取得しています。現在は Cell Broadband Engine のソリューション・アーキテクトとして、パートナーや顧客と共に、IBM のマルチコア技術の採用促進、そして Cell/B.E. のプログラムしやすさを改善するための業務を行っています。 |
記事の評価
|