We love eBooks
    Baixar OpenCL Nyuumon: OpenCL GPGPU (Japanese Edition) pdf, epub, eBook

    OpenCL Nyuumon: OpenCL GPGPU (Japanese Edition)

    Por Masaki Komatsu

    Sobre

    本書が想定する読者は、C/C++で半年程度の開発経験のあるソフトウェア開発者です。

    目的


    OpenCLを使ったGPGPUの入門書です。OpenCLの基本的な概念及び基本API(C99規格準拠のカーネルプログラミング言語)の解説をしますが、データ並列プログラミングで頻繁に使われるコードパターンも合わせて解説します。

    内容


    OpenCLの基本的な概念及び基本API(C/C++のホストAPIと、C99規格準拠のカーネルプログラミング言語)の解説をします。

    関数やコマンドのリファレンスもありますので、開発時の参考として使用もできます。

    背景


    本書はJOCL、Aparapi(OpenCLのJavaバインディングAPI)、PyOpenCL(PythonバインディングAPI)についての入門書を執筆する際に構想しました。

    OpenCLはC言語のフレームワークであり、CPU、GPU(GPGPU)、FPGA(Intelは2015年6月にXeonプロセッサにAltera FPGAを統合すると発表し、2020年までに3分の1のクラウドサーバがFPGAを使うと予想)が混在するアプリケーションの開発を可能とします。深層学習やデータサイエンス、IoTのライブラリとの連携をする際に不可欠なものであり、C/C++/Java/Pythonといった言語に関係なく並列アルゴリズムを実装するニーズがあると考えたのが執筆を決意した経緯となります。

    必要知識と対象読者


    本書の読者はC/C++でコーディングをしたことがあるエンジニア(業務で使う主言語はCでなくともよい)と想定します。C言語を触ったことがない層は、C言語、C++の専門書を読み理解できてから読むようにしてください。

    目安としてはC言語プログラミングで半年以上の経験があることで、最低でもポインタの理解があること、mallocを使ったメモリ空間の確保ができることです。(知識としては大学のC言語入門コースで数週間学んだ程度でも読めない訳ではない。)

    C言語の熟練者やOpenCLを使ったフレームワークを設計に従事する開発者は、本書よりも直接規格書を読んだほうが時間の節約となります。

    ビルドについてはcmakeで自動化するため、makeツールについてはMakefileを書いた経験を前提とはしません。makeについては軽くおさらいはしているので、cmakeを介さず直接Makefileを編集することも可能です。

    最後に本書はC言語を過去に学び挫折した方向けではありません。OpenCLは基本ライブラリより若干難易度が高いため、C言語の入門書でつまづいてそれ以降コードをしていない読者向けではありません。

    開発環境


    読者にとって身近なはずのIntelの内蔵GPUを使ってGPGPUを学べるようにするため、本書ではIntel Core I5の内蔵HD Graphics 4000を検証に使います。

    IntelのCore i3, i5, i7に附属してくる内蔵iGPU(HD Graphics/Iris Pro)を使ったGPGPUのプログラミングを通じて、OpenCLに慣れて頂けるかと思います。

    OSは「Max OS X 10.9.5」を使います。

    検証環境には以下3つのソフトウェアをインストールしています。

    * GNU Make 3.81
    * CMake 3.2.2(3.1以降)
    * clang-503.0.38(`g++`も可、`C++`バインディングを使うためgccでは一部ソースコードは動作しません。

    Windowsで検証するには、MinGW32またはMinGW-w64のいずれか(make/gcc/bashも附属、Cygwinと比べ軽量で大規模プロジェクトでも採用されています。)が「原則」として必要です。

    cmakeを使ってMS Visual Studioプロジェクトを生成することができますが、今回本としてサポートするのはcmakeを使ったMakefile(ビルドファイル)の生成、clangまたはgcc/g++によるコンパイルです。

    本書はVisual Studioのユーザーが読む事は想定はしていませんが、ヘッダーファイルの追加や、ビルドパスの指定を問題なくできるならば、サンプルコードを動作させることも可能ではあります。本の中でご案内はしませんが、そうした使い方を排除するものではありません。

    目次



    I. OpenCLアーキテクチャー



    II. OpenCLランタイムAPI


    3. ハローワールド
    3.1. 検証環境
    3.1.1. OpenCLのインストール
    AMD Linux(Ubuntu)
    NVIDIA Linux
    Intel Linux(Ubuntu)
    Intel Windows
    AMD Linux(Windows)
    NVIDIA Windows
    3.1.2. C++バインディング(Mac OS X)
    3.1.3. Makefile
    Makefile(MinGW)
    3.1.4. cmake

    4. OpenCLホストAPI
    5. OpenCLランタイム

    III. OpenCL-Cコンパイラ


    6. OpenCL C言語プログラミング
    6.15. 平均値フィルタ
    6.15.1. 実装例
    6.16. ガウシアンフィルター
    6.16.1. 実装例

    IV. 並列アルゴリズム


    7. ヒストグラム
    7.1. アルゴリズムのパラメータ
    7.2. 共有ローカルメモリ
    7.3. ストライドとメモリアクセス
    7.4. ストライドとBank Conflict
    7.5. Stride型のアルゴリズム
    7.6. バンクコンフリクトを緩和する実装例
    7.7. アトミック型のアルゴリズム
    8. Bitonic Sort(バイトニックソート)
    8.1. バイトニック配列の構築
    8.2. バイトニックマージ
    8.3. バイトニックソートのOpenCL実装例
    8.4. カーネルの実装(bitonic split)
    8.5. カーネルの実装(bitonic merge)
    9. 基数整列
    9.1. ヒストグラム
    9.2. Bucket Scan
    9.3. Reduction(還元)
    9.3.1. 結合性
    9.3.2. 交換性
    9.4. Prefix Sumへの適用
    9.5. up-sweep(掃き上げ)
    9.6. down-sweep(掃き下げ)
    9.7. 並び替え(Rank)
    9.8. 実装例(CPU)
    9.8.1. ヒストグラム
    9.8.2. Prefix-Sum
    9.8.3. 並び替え
    9.9. 実装例(GPU)
    9.9.1. Up-sweep(GPU)
    9.9.2. down-sweep
    9.9.3. 並び替え(rearrange)
    10. 高速フーリエ変換(Fast Fourier Transform)
    10.1. 使用する数学のまとめ
    10.2. フーリエ変換(Fourier Transform)の定義
    10.3. 離散フーリエ変換(Discrete Fourier Transform)
    10.4. 高速フーリエ変換(Fast Fourier Transform)
    10.4.1. Cooley-Tukey型アルゴリズム
    10.4.2. Bit Reversal
    10.5. 実装例(CPU)
    10.6. 実装例(GPU)
    11. 2次元高速フーリエ変換
    11.1. 2次元への適用
    11.2. 実装例(GPGPU)
    11.3. 2次元カーネルの実装
    11.3.1. 全体の流れ
    11.4. GPGPUへの修正点(メモリストライド・Bank Conflict対策)
    12. 参考書籍とWebリソース 書籍、ドキュメント、マニュアル サイト

    A. OpenCL対応デバイス一覧表


    B. OpenCL 1.2 API Reference


    C. OpenCLエラーコード


    D. libpng
    D.1. インストール
    D.2. 実装例1
    D.3. 実装例2

    E. OpenGLバッファとの同期


    E.1. グラフィックハードウェアの用語まとめ
    E.2. GLEW(OpenGL Extension Wrangler Library)
    E.3. OpenGLについてのまとめ
    E.3.1. 描画パイプライン
    E.3.2. OpenGLプリミティブ
    E.3.3. バーテックスデータ
    E.3.4. シェーダのコンパイル
    E.3.5. バーテックスバッファとアレイの設定
    E.4. GLFW
    E.11. OpenGLの実装例
    Baixar eBook Link atualizado em 2017
    Talvez você seja redirecionado para outro site

    Relacionados com esse eBook

    Navegar por coleções eBooks similares