IBM®
本文へジャンプ
    Japan [変更]    ご利用条件
 
 
検索範囲検索:    
    ホーム    製品    サービス & ソリューション    サポート & ダウンロード    マイアカウント    
skip to main content

developerWorks Japan  >  Multicore acceleration  >

SDK 解説: SDK バージョン 3.1 の紹介

Cell Broadband Engine 用の IBM SDK for Multicore Acceleration Version 3.1 がリリースされました。本記事では、SDK Version 3.1 の機能を Version 3.0 との違いを中心にご紹介します

developerWorks
ページオプション

JavaScript を要するドキュメントオプションは表示されません

議論する


レベル: 初級

梶 信也 (skaji@jp.ibm.com), Editor, Multicore acceleration, IBM Systems & Technology Group, AKD48
村瀬 正名 (mmasana@jp.ibm.com), Research Staff Member, IBM Research, 東京基礎研究所
土居 意弘 (munepi@jp.ibm.com), Editor, Multicore acceleration, IBM Systems & Technology Group, AKD48

2008年 11月 07日

Cell Broadband Engine 用の IBM SDK for Multicore Acceleration Version 3.1 がリリースされました。本記事では、SDK Version 3.1 の機能を Version 3.0 との違いを中心にご紹介します。

はじめに

Cell Broadband Engine 用の IBM SDK for Multicore Acceleration Version 3.1 (以下 SDK 3.1) がリリースされました。多数の機能強化、機能追加が行われ、また一部の機能についてはプロトタイプ提供が終了しています。本記事では、SDK 3.1 の内容を、SDK 3.0 からの変更点を中心にご紹介いたします。

SDK 3.1 でサポートされる使用環境

ハードウェア

SDK 3.1 では、倍精度演算能力が強化されたプロセッサ PowerXCell8i が搭載された IBM BladeCenter QS22 が新たにサポートされるようになりました。この組合せにより倍精度演算においても Cell プロセッサの極めて高い演算能力を活用することが可能になりました。

オペレーティングシステム

SDK 3.1 では、 Red Hat Enterprise Linux (RHEL) 5.2 および Fedora 9 がサポートされています。SDK 3.0 では RHEL 5.1 および Fedora 7 がサポートされていましたので、 SDK 3.1 のリリースにより最新のオペレーティングシステム環境での使用が可能になりました。




上に戻る


SDK 3.1 で新たに追加された機能

プロトタイプ GCC
SDK 3.1 では、 GCC 4.3.2 ベースのコンパイラがテクノロジープレビュー版として提供されています。
LAPACK ライブラリ
CBEA 向けに最適化が施された LAPACK ライブラリが新たに追加されています。単精度実数および倍精度実数の行列の因数分解、特異値分解、固有値計算のための関数が提供されています。
三次元 FFT ライブラリ
SDK 3.1 では、プロトタイプレベルのコードとして単精度および倍精度の三次元 FFT ライブラリが提供されています。
セキュリティライブラリ
新たにプロトタイプの暗号ライブラリが追加されています。



上に戻る


SDK 3.1 で強化された機能

GCC toolchain
GCC コンパイラのバージョンが 4.1.1 に、Binutils のバージョンが 2.18.50 に、Newlib のバージョンが 1.16.0 に、GDB のバージョンが 6.8.50 になりました。これらの toolchain によって、以下のような性能や機能面での向上がもたらされています。
  • クロス環境/リモート環境でのデバッグが容易になるような改善が施されました。具体的にはホストシステム側にもデバッグターゲットのライブラリなどが存在していなければならないという必要条件がなくなりました。
  • 新たな GNU Profiler (gprof) が SPU コードのためにサポートされています。
  • オーバーレイマネージャの Runtime 性能が改善されています。
  • 大きなデータエリアを SW マネージドキャッシュを経由してアクセスできる有効なアドレス空間へと自動的に移します。
  • Newlib が統合された SPU timer ライブラリを含んでいます。
  • GCC SPU コンパイラ (spu-gcc) により新たな自動ベクタ化拡張を利用することができます。
  • GFortran が VMX 組み込み関数のためにサポートされています。
Eclipse IDE
Eclipse IDE は PTP (Parallel Tools Platform) へと移植され、 Eclipse 3.3 および CDT 4.0 がサポートされています。またより良いコード補完機能など IDE の使い勝手が向上しています。
PDT および PDTR パフォーマンスツール
PDT および PDTR パフォーマンスツール機能の使い勝手や性能が向上しています。具体的には、追跡したイベントの新規グループを PDT コードの変更なしに追加可能、グループ毎の簡易レポート機能、 Eclipse IDE への統合などが挙げられます。
DaCS
Fortran バインディング、PDT trace hooks、C および Fortran で DaCS を使ったデモンストレーションのサンプルコードが追加されています。また Cell/B.E. 側での DaCS のパフォーマンスが改善され、SPU ライブラリのサイズが小さくなっています。プロトタイプレベルだった DaCS for Hybrid (x86_64) がベータレベルになり、アクセラレータ側のプロセスを開始する際にローカルとリモートのファイルを混在させることが可能な機能が加えられ、トポロジー構成ファイルの使い勝手が改善されています。
ALF
SDK 3.1 では、新たに軽量タスクモデルが追加されました。このタスクモデルは LIBSPE2 の上の薄いレイヤーとなっており、 SPE や共有 ALF ハンドルを通じてより柔軟な制御を望むライブラリ開発者たちのために提供されています。 ALF 内部の性能が向上しており、ALF ライブラリを使ったコードとハンドチューンされたコードの性能のギャップを埋めるような最適化が施されています。また SDK 3.1 では SDK 2.1 でプロトタイプとして提供されていた work block barrier が再度提供されています。
サンプルコード
DMA などのサンプルコードが改善されています。
BLAS ライブラリ
SDK 3.1 では、 BLAS ライブラリに含まれている単精度実数もしくは倍精度実数を用いた関数に更なる最適化が施されています。
乱数生成ライブラリ
SDK 3.1 でモンテカルロ乱数生成ライブラリは製品レベルのコンポーネントとなりました。
一次元 FFT / 二次元 FFT ライブラリ
SDK 3.1 で一次元および二次元 FFT ライブラリは製品レベルのコンポーネントとなり、性能/精度/機能が向上しました。10000 個以上の要素を持つベクターと単精度矩形行列が新たにサポートされています。
SIMD Math ライブラリ
SDK 3.1 では、 SIMD Math ライブラリの性能および精度が向上しています。
MASS/MASSV ライブラリ
SDK 3.1 では、最適化された倍精度用の関数が MASS/MASSV ライブラリに加えられています。
フルシステムシミュレータの sysroot イメージ
SDK 3.1 では、フルシステムシミュレータの sysroot イメージが Fedora 9 用に更新されています。



上に戻る


SDK 3.1 で含まれなくなった機能

XL C/C++ Multicore Acceleration Single Source Compiler
XL C/C++ Multicore Acceleration Single Source Compiler (以下 XL C/C++)は、SDK 3.0 まではプロトタイプ版が含まれていましたが、SDK 3.1 では含まれなくなりました。今後 XL C/C++ は IBM 製品としてリリースされる予定です。
IBM フルシステムシミュレータ
IBM フルシステムシミュレータは SDK から抜き出されましたが、alphaworks の Web サイト http://www.alphaworks.ibm.com/tech/cellsystemsim からダウンロードすることができます。
Cell SDK インストールスクリプトの GUI オプション
SDK 3.0 でサポートされていた --gui オプションが SDK 3.1 ではサポートされなくなりました。そのため GUI による SDK インストールを行う際には Pirut ではなく gnome-packagekit もしくは Yumex を使うことになります。



上に戻る


注目の新機能

多数の新機能のなかでも特に注目の機能についてピックアップして詳しくご紹介します。

セキュリティライブラリ

SDK 3.1では、新たに SPU 暗号ライブラリ (SPU Cryptographic Library) の利用が可能になりました。このライブラリでは、非対称暗号方式として RSA と DSA 、対称暗号方式では AES, DES 、一方向ハッシュ関数には MD5 , SHA-1 , SHA-2 がサポートされています。これらの暗号方式に対して、 OPENSSL を利用した PPU サンプルプログラムと SPU に暗号処理をオフロードしたサンプルプログラムが付属しており、それぞれの処理を比較することが可能です。表 1 に本暗号ライブラリの基本性能をまとめます。また、 SDK 3.0 より擬似アイソレーションモード (実際のアイソレーションモードにはなりません) をサポートしており、アイソレーションモードでのアプリケーション実行の様子を試すことができます。これらのパッケージは Extras パッケージとして提供されています。


表 1. 暗号ライブラリ基本性能
SPE (Gb/sec)Leading Brand CPU with SIMD (Gb/sec)SPE Performance Advantage
AES ECB Encrypt - 128 bit key2.0591.0292.002
AES CBC Encrypt - 128 bit key0.7950.9680.821
AES ECB Decrypt - 128 bit key1.4991.0351.448
AES CBC Decrypt - 128 bit key1.5070.9661.560
MD52.4482.8620.855
SHA-12.1160.9022.347
SHA-2560.8540.5181.649

さらに詳細な解説はこちらをご覧ください。

ALFの軽量タスク

ALF の新しいフレームワークとして、軽量タスク (Lightweight Task) が追加されました。

軽量タスクは、基本的には LIBSPE2 の薄いラッパーであり、非常に少ないオーバーヘッドで SPE を制御することが可能になります。さらに、 LIBSPE2 を直接使用する場合に必要な PPU 側の様々な処理、たとえば SPU の個数分だけ pthread を作成しなければならないことや、 PPE から SPE への指令を含んだ「コンテキスト」の転送処理、または処理完了をチェックする機構などをすべてサポートしていますので、これまで毎回書いていたお決まりのコードを書くことなく大変短いコードで SPE を使い始めることができます。

代わりに、これまでの ALF の特徴であったデータ転送の自動実行やワークブロック間の自動リダクション機能などは使用できません。軽量タスクでは、これらの仕事は DMA 転送や同期機構を用いてプログラム側で対処することになります。


リスト1. ALF 軽量タスクの PPE コード

#include <stdlib.h>
#include <alf.h>

int main(int argc __attribute__ ((unused)), char *argv[] __attribute__ ((unused)))
{
  alf_handle_t handle;
  alf_task_desc_handle_t task_desc_handle;
  alf_task_handle_t task_handle;

  alf_init(NULL, &handle);
  alf_num_instances_set(handle, 1);
  alf_task_desc_create(handle, 0, &task_desc_handle);

  alf_task_desc_set_int64(task_desc_handle, ALF_TASK_DESC_ACCEL_LIBRARY_REF_L,
                          (unsigned long long) "alf_hello_world_lts_cell_spu.so");
  alf_task_desc_set_int64(task_desc_handle, ALF_TASK_DESC_ACCEL_IMAGE_REF_L,
                          (unsigned long long) "alf_hello_world_lts_spu");
  alf_task_desc_set_int64(task_desc_handle, ALF_TASK_DESC_ACCEL_LTS_MAIN_REF_L, 
                          (unsigned long long) "task_main");
  alf_task_desc_set_int32(task_desc_handle, ALF_TASK_DESC_TASK_TYPE, 
                          ALF_TASK_TYPE_LIGHTWEIGHT);
  alf_task_desc_set_int32(task_desc_handle, ALF_TASK_DESC_MAX_STACK_SIZE, 4096);
  alf_task_create(task_desc_handle, NULL, 1, 0, 0, &task_handle);
  alf_task_finalize(task_handle);
  alf_task_wait(task_handle, -1);
  alf_exit(handle, ALF_EXIT_POLICY_FORCE, 0);

  return 0;
}


リスト2. ALF 軽量タスクの SPE コード

#include <stdio.h>
#include <alf_accel.h>

int task_main(void *p_task_ctx __attribute__ ((unused)),
    int instance_id __attribute__ ((unused)),
    int number_of_instance __attribute__ ((unused)))
{
  printf("Hello World from task_main!\n");
  return 0;
}

ALF_ACCEL_EXPORT_API_LIST_BEGIN;
ALF_ACCEL_EXPORT_API("", task_main);
ALF_ACCEL_EXPORT_API_LIST_END;




上に戻る


まとめ

SDK 3.1 の内容をご紹介しました。SDK の新しい機能でますます使いやすくなった Cell/B.E. をどんどん利用してください。



参考文献

学ぶために

製品や技術を入手するために

議論するために


著者について

photo

梶 信也 (Shinya KAJI) は、日本IBMのソフトウェアエンジニアとして、Cell/B.E. 向けソフトウェアの開発や、組み込みの世界でドライバやミドルウェアの設計/開発を行ってきました。現在は主にソフトウェアアーキテクトとしてソフトウェアのあるべき姿を日々探求しています。


photo

村瀬正名は2003年よりパスワード管理やマルウェア検知などセキュリティシステムの研究に携わってきました。現在、日本IBMテクニカルエキスパートとして、アイソレーションモードをサポートするCell/B.E. Security SDKの研究・開発に従事しています。


土居 意弘

土居意弘はIBMで5年間、Cell/B.E.やDigital Signal Processor上で画像処理システムなどを開発してきました。現在は日本IBMのテクニカルエキスパートとして、Cell/B.E.向けソフトウェアの実装やアーキテクト、トレーニング講師なども行っています。




記事の評価


サイト改善のため、ご意見をお寄せください。こちらのフォームからお願いいたします。



 


 


不充分・不完全である大変素晴らしい
 


この記事を共有する

del.icio.us del.icio.us newsing newsing FC2ブックマーク FC2ブックマーク
Choix! Choix! ニフティクリップ ニフティクリップ Yahoo!ブックマーク Yahoo!ブックマーク
MM/memo MM/memo CZブックマーク CZブックマーク livedoorクリップ livedoorクリップ
はてなブックマーク はてなブックマーク Buzzurl(バザール) Buzzurl(バザール)




上に戻る


IBM, IBMロゴ, Power Architecture、PowerXCellは、International Business Machines Corporationの米国およびその他の国における商標。 Cell Broadband Engine, Cell/B.Eは、米国およびその他の国におけるSony Computer Entertainment, Inc.の商標。 他の会社名、製品名およびサービス名等はそれぞれ各社の商標です。

    日本IBMについて プライバシー お問い合わせ