PR:この記事にはアフィリエイトリンクが含まれます。
OpenMPの本を探していると、CとC++のどちらに強い本がよいのか、GPUまで学ぶべきか迷うものです。並列処理の実装を身につけるなら、言語と学びたい範囲を手がかりにすると候補が見えてきます。
ここでは、OpenMPの基礎に加えタスクやSIMD、GPUオフロードまで扱う5冊を紹介します。出版時のOpenMP対応版や演習素材も見ながら、手元の開発環境で役立つ一冊を探してみましょう。
早見表
| 本 | 主な対象 | 扱う範囲 | 参考価格 |
|---|---|---|---|
並列プログラミング入門 | C言語 | OpenMP 4.0、OpenACC、MPIとOpenMP | 3,740円(税込) |
C/C++プログラマーのための OpenMP 並列プログラミング | C/C++ | OpenMP 3.1、同期、タスク | 4,200円(本体価格) |
The OpenMP Common Core | 初学者、C++を含む | 基本要素、データ環境、メモリモデル | $40.00 |
Using OpenMP—The Next Step | C/C++ | OpenMP 4.5、NUMA、SIMD、オフロード | $60.00 |
Programming Your GPU with OpenMP | C/C++ほか | OpenMP 5.2関連機能、GPUオフロード | $80.00 |
国内書籍の価格は円で、洋書の価格はドルで示しています。いずれも参考価格です。販売店の設定や為替によって実売額は変わるため、購入時に表示価格を確認してください。
C言語で演習したい人には東京大学出版会の本、CとC++の構文や同期を学びたい人にはカットシステムの本がおすすめです。英語で読めるなら、MIT Pressの3冊で基本から応用、GPUへと範囲を広げられます。
OpenMPとは
OpenMPは共有メモリ型のコンピューターで複数のスレッドを使うための規格です。CやC++なら、逐次プログラムに指示文を加え、ループなどを並列実行するところから始められます。
たとえば、各反復が独立した配列処理なら、#pragma omp parallel forを使って反復を複数のスレッドへ割り当てられます。コードの変更は小さく見えますが、共有データへの書き込みが重なると結果が崩れることもあります。
まず、スレッド数を増やす前に共有範囲を決めます。どの変数を複数のスレッドで使い、どれを各スレッド専用にするか。並列化の前に考えることです。データ競合を抑えたあとで性能を測る。この順序が大切ですね。
規格は版を重ねるごとに機能が増えてきました。本の対応版は学べる範囲を知る手がかりになります。ただし、機能の利用可否はコンパイラーにも左右されるため、実装環境の対応状況も確かめてください。
学習を支える基礎
並列ループでは、反復の分配方法で実行時間が変わります。各反復の仕事量がそろっていれば単純な分配で進められますが、処理時間に差があると、先に終わったスレッドがほかを待つこともあります。
複数のスレッドが同じ変数を更新すると、読み書きの順番によって結果が変わる競合が起きます。合計値にはリダクションを使い、区間ごとの処理にはスレッド別の一時領域を設けるなど、計算に合わせて共有範囲を整えます。
タスクは、反復数だけでは表しにくい仕事を並列化するときに役立ちます。木構造の探索や分割統治のように、処理中に新しい仕事が生まれるコードでは、仕事を作るタイミングと同期の位置を設計します。
SIMDは一つの命令で複数のデータを処理する仕組みで、スレッド並列とは処理の粒度が異なります。OpenMPでは両方を組み合わせられますが、データの依存関係や配置によって期待どおりにベクトル化されないこともあります。コンパイラーの結果と測定値を確認しましょう。
演習中心の入門書
片桐孝洋著『並列プログラミング入門:サンプルプログラムで学ぶOpenMPとOpenACC』は、C言語で共有メモリー並列処理の基礎を学ぶ人におすすめです。A5判216頁で、コードを試しながら学べる構成です。
OpenMP 4.0への展開のほか、OpenACC入門やハイブリッドMPIとOpenMPも扱います。サンプルプログラムと演習問題の解答をダウンロードできるため、コードを動かし、変更による結果の違いまで確かめられます。
中心はC言語です。並列処理の入口を学び、GPU計算やMPIへ範囲を広げたい人におすすめです。C++の包括的なリファレンスを探している人は、CとC++を対象にした別の本を読むとよいでしょう。
参考価格は3,740円(税込)です。国内出版社の希望小売価格を目安にした金額で、実売価格は販売店や時期によって変わります。店頭の価格も確認してください。
CとC++を学ぶ本
菅原清文著『C/C++プログラマーのための OpenMP 並列プログラミング』は、CとC++の例でOpenMPを学びたい人におすすめです。B5変型336頁で、データ属性や同期も順に解説します。
第2版ではOpenMP 3.1の機能を追加。タスク制御やアフィニティに加えて、デバッグと性能チューニングも扱います。並列ループの基本を学びながら、変数のスコープやスレッド間の同期も日本語で確認できます。
2012年刊行で、OpenMP 3.1対応です。後年の機能を網羅する内容ではありません。CとC++の基本構文やOpenMPの考え方を固める本です。新しい機能を使う際は、規格資料やコンパイラーの情報も参照してください。
参考価格は本体4,200円です。消費税を含む販売額や在庫状況は店によって異なるため、購入時の価格は販売先で確かめてください。
基本要素を学ぶ洋書
『The OpenMP Common Core: Making OpenMP Simple Again』は、並列コードの経験がない読者も対象にした英語の基礎書です。2019年刊行で、320頁のペーパーバックです。
OpenMPの基本的な21要素に範囲を絞り、並列ループやデータ環境、タスクを扱います。この21要素を順序立てて学べるため、基礎を整理したい人におすすめです。
メモリモデルや同期に加えて、C++メモリモデルも扱います。共有状態を理解したい人にもおすすめの内容です。サンプルプログラムと演習問題はオンラインで提供されるので、英語の技術書を読みつつコードも試せます。
参考価格は$40.00です。円での購入額は為替や送料、販売店の設定で変わります。購入時には表示価格と最終的な支払額を確認してください。
応用機能を扱う洋書
Ruud van der Pas、Eric Stotzer、Christian Terboven著『Using OpenMP—The Next Step: Affinity, Accelerators, Tasking, and SIMD』は、基本構文の先へ進みたい人におすすめです。2017年刊行で392頁。CとC++のコード例を中心に、OpenMP 4.5の主要機能を解説します。
主なテーマはスレッドアフィニティ、アクセラレーター、タスクです。SIMDとNUMAも扱います。さらに、スレッドをどのコアに置くか、メモリーをどの領域から使うかも説明します。こうした視点からCPUの構成と実行時間の関係を考えられます。
並列ループを動かした経験があり、性能の伸び悩みやタスク設計について学びたい人におすすめです。動作環境が本の例と異なる場合もありますが、機能の考え方を学ぶ実例として読めます。
参考価格は$60.00です。日本から買う際は、販売店や為替に加え、輸入費用も含めた支払額を確かめてください。
GPUを扱う洋書
CPUとGPUを併用する並列処理を学ぶなら、Tom Deakin、Timothy G. Mattson著『Programming Your GPU with OpenMP: Performance Portability for GPUs』がおすすめです。2023年刊行で336頁、巻末のリファレンスではOpenMP 5.2の関連機能を解説します。
中心となるテーマはGPUオフロードです。OpenMPの指示で計算をGPUへ移す考え方を扱います。C、C++、Fortranのサンプルコードをオンラインで利用でき、チュートリアル動画と講義スライドも提供されています。書籍と実例を組み合わせて学習できます。
GPU処理で性能に関わるのは、計算だけではありません。データ転送の時間やCPUとの仕事の分担も結果を左右します。GPU対応コンパイラーで検証したい人におすすめです。CPU並列の基礎を理解したあとに読むと、内容を追いやすくなります。
参考価格は$80.00です。購入時には為替や送料も含めた費用を確認してください。GPU対応環境を使う予定がはっきりしている人におすすめです。
結論
C言語で演習しながら並列処理の入口を学ぶなら、片桐孝洋著『並列プログラミング入門』がおすすめです。C++でデータ共有や同期まで学ぶ人には、菅原清文著『C/C++プログラマーのための OpenMP 並列プログラミング』をすすめます。
英語で基礎を学ぶなら『The OpenMP Common Core』。タスクやNUMA、SIMDを扱う本を探している人には『Using OpenMP—The Next Step』、GPUオフロードを学ぶ人には『Programming Your GPU with OpenMP』がおすすめです。
本に記載されたOpenMPの版と、使うコンパイラーの対応機能を照らし合わせましょう。まずは短いループで計算結果と実行時間を確認します。参考価格は購入時期によって変わるため、販売額も確かめてください。
Amazon の PC をスコア化してみた
Amazonにある8〜14インチの小型WindowsタブレットやノートPCを、スペック別にスコア化して比較・ランキング。






