TOP | 個人情報 | 利用規約 | 広告掲載 | お問合わせ
ヤッピーE-BOOKS

Amazon.co.jpから販売されているKindleタブレット端末向けの電子書籍紹介サイト

C++並列プログラミング C++基礎課程シリーズ

C++並列プログラミング C++基礎課程シリーズ

C++並列プログラミング C++基礎課程シリーズ

Kindle本
小松正樹 著

内容紹介

 執筆中のため、予定されている内容が変更される可能性があります。特定の目的に適う知識を得たい方は「内容確定済み」と本紹介ページに記載されてから購入するようにしてください。

 並列プログラミングの入門書で学んでいるC++プログラマーのための副読本です

対象読者




- C++の入門書と並列処理の入門書を購入して勉強中だが、マルチスレッドや並列処理についての副読本を探している方
- 大学生・専門学校生・高校生でC++の入門講座と並列処理の講座を最近修了ないし受講中の方

(おそらく)向いてない読者




- std::asyncで満足されている方
- 並列プログラミングにおいて数学的に厳密な証明を必要とされる方(本書は筆者が観測できる限りの実務的見地からの並列処理を紹介するため、理論と整合性がとれないか、裏付けの無い実装例を含みます)
- データ並列処理(GPGPU)を学ばれたい方(データ並列処理はグラフ内のノードの一つとして捉えるので特別な扱いはしません。よってGPGPUを深く説明する予定はありません)
- SPIR-V等のOpenCL C++を学ばれたい方(OpenCL/SYCL 2.2のレファレンスAPIの実装がなされ、ドライバー
をベンダーが提供後に考えます)
- プログラミングが初めてという方や、入門書で挫折した方(本書はC++入門書および並列プログラミング入門書の副読本という位置づけですので、全くのプログラミング初心者が読むことは想定していません)

※5月17日更新:OpenCL/SYCL 2.2が正式リリースされました。本書の発売日に間に合うか分かりませんが、デバイスが入手できれば内容の見直しを行います。OpenCL 2.2はC++14のカーネル言語をサポートするため、これまでのマイナーバージョンに比べると開発難易度が高いと聞いていましたが、レファレンスAPIも完了したっぽいのでメーカー側もそろそろ提供してくるでしょう(CUDAはC言語ベース+ラムダ式なので、インパクトは強いと思います)。普及するまでに半年~1年ぐらいはかかると思っていますが、最優先順位で取り組む所存です。

注意点




 読者に理解頂きたき点としては、本書のみを使ってC++を勉強することは不可能ではありませんが、出版社から出ている編集入りの教本や著名な入門書に比べるとあらゆる意味で品質が劣るため、副読本以外の使用には適さないということです。

- 環境設定(インストール)についての説明はほとんどありません
- GCC 7.1 をインストールしてから購入ください(検証は今のところBash on Windows / MSYS2 / MINGW64のみ)

開発環境



 コードの検証は以下の環境で実施しています。


- OSは Windows 10
- 開発環境はBash on WindowsMSYS2MINGW64
- gcc-7.1(必須)
- Boost 1.63.0(必須、Boost.Asio等)
- Intel-TBB(必須)
- Google Benchmark(必須)
- Atom 1.16.0(必須、Windows環境のIDEとして使用)
- Intel OpenCL 1.2/2.0ドライバー(オプション、軽く紹介する程度)
- OpenGL 4.4(オプション、ビジュアリゼーション)
- ZeroMQ 5.1(オプション、ネットワークプログラミング)



あると良い知識




- C++基礎課程シリーズ第一巻「C++プログラミング」内の内容
- マイクロプロセッサーの基本アーキテクチャー(キャッシュやバス等)
- データ構造(連結リスト、キュー、スタック)
- Intel64/AMD64アセンブリ言語(深い知識は不要ですが、一部のアルゴリズムに用います)
- 高校レベルの統計・確率・数学
- ベイジアン統計(並列ギブスサンプラー等で用います、第二部のみ)
- 常微分方程式(スパイクニューラルネットワーク等で用います、第二部のみ)

 C++の乱数アルゴリズムについてはメルセンヌ・ツイスターのみを使います。乱数は定型的な使い方しかしないので、アルゴリズムの詳細は他の場所で学ばれることを推奨します。

(暫定)内容




 以下は目安です。アルゴリズムの数は前提知識のカバーがうまくできるかによります

第一部 基本
- C++11/14マルチスレッドライブラリー(ラッチとバリアー)
- 哲学者の夕食、生産者・消費者、読者・作家(Readers-Writers)、ABA等の古典的並列処理問題
- アクターモデル(Scala/JavaがAkkaとして実装)、π-calculus、Communicating Sequential Processes(CSP)
- データフロー(TensorFlowはデータフローパターンを実装しているとされます)
- チャンネルパターン(Go言語が実装)
- OpenMP/Intel TBB
- MPI(内容に含めるか検討中)
- 連結リスト、キュー、マップのスレッドセーフ化
- スレッドプール
- ロックフリーなリスト、キュー(ハザードポインター等)
- マルチスレッドデータ構造に対応したガーベッジコレクター
- スピンロック、ピーターソン、ランポート、デッカー、アイゼンバーグのアルゴリズム等
- 整列、検索、グラフ、パス探索の並列アルゴリズム

 MPIについてはフォールトトレラントが初心者向けでない関係(科学計算以外の用途には難しい技術)で検討中です。

第二部 応用
- ZeroMQ/Boost.Asioを使用した並列分散処理
- 空間アルゴリズム(内容に含めるか検討中)
- モンテカルロ・ギブスサンプラーの並列アルゴリズム(内容に含めるか検討中)
- 多層パーセプトロン(深層学習の一種)の学習アルゴリズムとスパイクニューラルネットワークの並列アルゴリズム(内容に含めるか検討中)

 第二部の内容は難しそうに見えるかもしれませんが、導出を無視すればアルゴリズムや実装はシンプルです。説明は善処します。最終的に入れるアルゴリズムは2~3個に絞る予定です。

C++基礎課程シリーズについて




 「Vulkan入門」、「VR/AR入門」、「OpenCL 2.2入門」、「C++で自作コンパイラ」、「C++で自作OS」等の予定です。入門と基礎レベルの本の副読本を格安で提供するのが目的です。(Java並列プログラミングは本書の後に執筆予定)

 対象読者は情報技術を学ぶ高校生、高専生、専門学校生、大学生です。基礎レベルの本は値段が高すぎるので、安くて(100~500円で)ボリュームのある技術解説書を出すことが執筆の趣旨です。

 類似した格安技術書を『継続的に執筆してる』人は、Amazonでは入門レベルで10人、基礎レベルだと数人程度かと思います。(名誉を得るという目的が強いので書き手は元から少数でしたが、最近は減少傾向です)

出版延期の理由


 「C++プログラミング」の修正作業が継続的に入っており、執筆する時間がみつからない状況です。楽しみにしている方には申しわけないですが、筆者も人間として能力・精神力の限界があるので、現時点では延期とさせて頂きます。

 Amazonのシステムでは1ヶ月後の延長までしかできませんので9月10日に設定していますが、この3ヶ月は「C++プログラミング」の修正ばかりしていたので、それまでの出版は絶望的です。ですが楽しみにしている方のために最大限の努力はする予定です。不可能と判断した場合は予約販売は停止とさせて頂きます。

 学生の就職活動やインターンの時期に間に合わせたかったので、延期は非常に痛いです。最近は並列化はできて当然という風潮がありますが、学校で並列プログラミングのコースが提供されてるのであれば、いつ出版されるか分からない本書ではなく学校で単位取得をすることを勧めさせて頂きます。

2017年09月10日リリース 詳細・ダウンロードはこちら

この商品のレビュー


2017年09月10日リリース 詳細・ダウンロードはこちら

ページのTOPへ戻る