インテル® C++ コンパイラー 19.0 デベロッパー・ガイドおよびリファレンス

インテル® Cilk™ Plus

データ並列処理とタスク並列処理をサポートする C/C++ 言語拡張のインテル® Cilk™ Plus は、インテル® ソフトウェア開発ツールのバージョン 2018 で廃止予定です。インテル® C++ コンパイラーでは、今後 2 年間は古い機能 (非推奨) として残されます。OpenMP* やインテル® スレッディング・ビルディング・ブロック (インテル® TBB) などの標準の並列モデルへの移行を開始することを強く推奨します。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」 (英語) を参照してください。

インテル® Cilk™ Plus はインテル® C++ コンパイラーに含まる機能で、新規および既存の C/C++ プログラムを並列化します。

特に記載がない場合、情報はすべてのプラットフォームに適用されます。

インテル® Cilk™ Plus 機能についての説明は、「インテル® Cilk™ Plus」セクションを参照してください。

対象ユーザー

インテル® Cilk™ Plus を使用するためには、C/C++ プログラミングの知識が必要です。C/C++ プログラミングの専門知識があれば最適です。

インテル® Cilk™ Plus は古い機能 (非推奨) です。代わりに、OpenMP* またはインテル® TBB を使用してください。詳細は、「インテル® Cilk™ Plus の代わりに OpenMP* またはインテル® TBB を使用するためのアプリケーションの移行」 (英語) を参照してください。

はじめに

インテル® Cilk™ Plus を使用することで、C/C++ プログラムに細粒度のタスクを実装し、新規および既存のソフトウェアを簡単に並列化して、マルチプロセッサーおよび新しい CPU で利用可能なベクトル命令を効率良く活用できます。インテル® C++ コンパイラーにより実装される C および C++ 言語にデータとタスクの並列化を表現する簡単な言語拡張を提供します。

インテル® Cilk™ Plus には、3 つの主要な機能があります。

インテル® Cilk™ Plus は、さまざまなアルゴリズムに利用できますが、特に「分割統治」アルゴリズムに適しています。この手法では、問題を独立して処理することができる小さな問題 (タスク) に分割し、結果を結合します。再帰関数は分割統治アルゴリズムでよく使用され、多くの場合良い結果をもたらします。

タスクは独立した関数やループの反復に実装することができ、キーワードにより並列に実行できる関数呼び出しやループを指示します。タスクは効率よく実行するために、ランタイムに利用可能なプロセッサーにスケジュールされます。

以降のセクションで、ワーカーという用語は、オペレーティング・システムのスレッドがプログラムにおけるタスクを実行する、という意味で利用されています。