本サイトは、Cell トータルソリューションカンパニー -フィックスターズの技術者有志が運営するサイトです。
第2章 SIMDプログラミングの基礎
出典: PS3 Linux Information Site / Cell/B.E.のパワーを体験しよう
第1章では、Cellプログラミングの特徴について解説しました。本章では、Cellプログラミングの特徴の1つである、SIMD演算を利用したプログラミング手法について解説します。
SIMD演算は、複数のデータに対する処理を1命令で実行できる演算手法です。このような手法は、マルチメディア・アプリケーションの音声・画像処理や3Dグラフィックスの演算処理などで多く利用されています。近年、多くのプロセッサがSIMD演算専用の命令 (以下、SIMD命令) を実装しており、例えばIntel x86はSSE命令やMMX命令といったSIMD命令をマルチメディア拡張機能として提供しています。一方、本チュートリアルで対象としているCellではSIMD命令として、PPEにVMX命令、SPEにSPU SIMD命令がそれぞれ実装されています。
本章では、SIMDプログラミングについてPPEのVMX命令を用いて解説します。まず、SIMD演算の概要について図を用いて説明し、続いてSIMDプログラミングの手法について例題プログラムを用いて解説します。また、章の最後にSIMDプログラミングを用いた演習問題を用意しています。なお、SPEのSIMDプログラミングについては第3章で解説します。
| セクション | タイトル | 学習内容 |
|---|---|---|
| 第2.1節 | SIMD演算の概要 | SIMD演算の特徴について学習します。 |
| 第2.2節 | SIMDプログラミングで扱うデータ | SIMDプログラミングにおけるデータの扱い方について学習します。 |
| 第2.3節 | 簡単なSIMD演算 | 簡単なSIMDプログラミングを学習します。 |
| 第2.4節 | 計算しやすいベクタデータの作成 | SIMD演算に適したデータの作成方法について学習します。 |
| 第2.5節 | 条件分岐の削除 | SIMD演算における条件分岐の削除について学習します。 |
| 第2.6節 | 演習問題 (2-1) 合計値計算プログラム | 第2.3節の学習内容を利用して、数の総和を求めるプログラムを作成します。 |
| 第2.7節 | 演習問題 (2-2) 小数点計算プログラム | 第2.4節の学習内容を利用して、SIMD演算を利用して小数点計算をおこなうプログラムを作成します。 |
| 第2.8節 | 演習問題 (2-3) 絶対値計算プログラム | 第2.5節の学習内容を利用して、SIMD演算を利用して絶対値を求めるプログラムを作成します。 |
| 第2.9節 | 演習問題 (2-4) グレースケール変換 | 第2章の学習内容全体を通じて、カラー画像をグレースケール画像に変換するプログラムを作成します。 |
