nCore logo and header

コースの概要

このコースでは、C/C++ を使ったマルチコア プロセッサのプログラミングに関する概念やアプローチを紹介します。並列化のメリットの解説から、マルチスレッド プログラミング、マルチスレッド対応アルゴリズムの設計まで、幅広い内容について学習します。同期化、マルチスレッド ライブラリ、プロセッサ キャッシュ、共有メモリ、OpenMP やインテル スレッディング ビルディング ブロックのような先進技術を使った特殊なマルチスレッド プログラミングなどを扱います。

コースの特長

  • 幅広い内容をワークショップ形式で学習します。基本概念を詳しく解 説した後、最新の手法を使った C/C++ マルチコア プロセッサ プログ ラミングのトレーニングを行い、実際のプログラミングで役立つヒン トを紹介します。
  • ソフトウェアのパフォーマンス向上を図る上で必要なスキルを身に付 けることができます。また、マルチコア プロセッサに対応した高性能 並列アプリケーションを正しい方法で設計開発するためのスキルを網 羅し、専門ツールの使い方を学びます。
  • ラボセッションを使って実践演習を行います。セッションでは、マル チスレッド プログラムの記述とデバッグ、レガシー ソフトウェアの並列化を実習します。また、ウォークスルー形式の演習により、マルチ スレッドに関する理解をさらに深めることができます。

コースの目的

  • マルチコア プロセッサのアーキテクチャ、並行プログラミング、並列プログラミングの概念と特徴など、背景理論を詳しく解説します。
  • 暗黙並列性化と明示並列性化、アトミック性、同期化、共有メモリ、キャッシュ コヒーレンシ、アムダールの法則、フリンの分類、リトルの法則など、重要な概念を詳しく解説します。
  • 最適な並列化について考察します。また、スレッドによる並行処理のメリットを、さまざまな分析手法、複合的なアプローチ、並列処理設計パターンを用いて説明します。
  • 枯渇、デッドロック、ライブロック、データレースなど、同期化で発生する可能性のある問題を回避する方法を紹介します。
  • 並列アルゴリズムの実装とチューニングの方法を紹介します。
  • ミューテックス/クリティカル セクションと条件変数など、さまざまな同期制御機能とその使い方を説明します。
  • オペレーティング システムとのインタラクションと、共有メモリとスレッドの関係について説明します。
  • オペレーティング システムがプログラミングに与える影響、共有メモリを効率的に利用する方法、CPU の選定、各 CPU のスレッドバインディング、各スレッドに関するデータおよびカーネル レベルでのスケジューリングについて説明します。
  • C/C++ およびインテル コンパイラーを使った各種テクノロジーやプログラミング手法 (Windows API、POSIX Pthreads、インテルTBB、OpenMP) において、スレッドの機能とその活用方法を解説します。
  • インテル コンパイラーの実践演習とケース スタディを通じて、マルチスレッド プログラムの作成と実行を学びます。
  • マルチスレッド アンセーフ ライブラリの使用上のベストプラクティスと、スレッド セーフ ライブラリを新しく記述する方法を紹介します。

受講対象者

このコースは、マルチコア プロセッサ対応ソフトウェアに関する理解を深め、効率的な実装を目指すソフトウェア設計者、ソフトウェア開発者、ソフトウェア部門のチームリーダーおよびマネージャを対象とします。また、受講の前提条件として、C++ プログラミング言語の知識と C++ でのソフトウェア開発の経験が必要です。