MP C コンパイラによって、並列化しても安全であると判断されたループに対する並列コードが生成されます。通常、これらのループは、独立して実行可能な繰り返しを持っています。このようなループに対しては、繰り返しの実行される順番や、並列に実行するかどうかといったことなどは、実行結果に影響しません。すべてではありませんが、ほとんどのベクトル処理用ループはこのような種類のループです。
C では別名が存在する (複数の変数が同一の実体である、または実体を指す) 可能性があるため、並列化の安全性を判断することは困難です。コンパイラの作業を容易にするために、MP C には別名の情報をコンパイラに渡すためのプラグマおよびポインタ修飾子が用意されています。
以下の例では、MP C コンパイラを使用して、並列化を制御する様子を示しています。ターゲットのプログラムを並列化するためには、「-xautopar 」の -xautopar オプションを以下のように使用します。
% cc -fast -xO4 -xautopar example.c -o example
これを実行すると、example という実行可能ファイルが生成されます。ユーザーは通常の方法でこのファイルを実行することができます。
マルチプロセッサ上で実行する場合には、以下のように環境変数を設定することが必要になります。
% setenv PARALLEL 2
この設定によって、プログラムが 2 個のスレッド上で実行されるようになります。ターゲットのマシンに複数の CPU が装備されていれば、この設定によって、それぞれのスレッドがそれぞれの CPU にマップされます。
% example
プログラムを実行すると、2 個のスレッドが生成され、各スレッド上でプログラムの並列化された部分が実行されるようになります。
MP C ではキーワード _Restrict を使用することができます。詳細については、「_Restrict」の項を参照してください。