値に対して、何らかの処理を実行する必要があります。演算子を指定し、各スレッドからの部分和を合計しています。プラグマを追加したコードを示します。専門用語は分からなくてもかまいません。重要なのは、このループには深刻なループの依存性があるものの、その依存性を制御することで並列化が可能であるという点です。使用することで容易に行えます。従来の明示的なスレッド化モデルによって行うこともできます。場合シーケンシャル・アルゴリズムは、シリアルコードを並列化する上で最も大きな課題です。その名のとおり、シーケンシャル・アルゴリズムは正しい結果を得るために特定の順序で処理する必要があります。その典型的な例がハフマン・エンコーディングです。これはコーデックで一般的に使用されていて、エンコードされたコンテンツのビットレートを抑えるために、現在のフレームは前のフレームに依存します。コードを並列化する上で、これは深刻な問題となります。特定のアルゴリズムではこれを克服する方法がありますが、ここでは本題から外れるため取り上げません。作業を容易にするために、シーケンシャル・アルゴリズムをスレッド化する場合は、アルゴリズムをより並列化しやすいものに変更するか、ほかの並列化手法を検討してみてください。関数全体がホットコードということもよくあります。繰り返し呼び出される場合、あるいはほかのホットな関数から独立している場合は、機能分割により並列化できる可能性があります。その関数を実行させ、親スレッドは処理を継続します。この典型的な例が、ワープロの自動スペルチェック機能です。ワープロはユーザーからの入力を待機するためにループを実行します。入力を受け取ると、ループ内の別のスレッドが入力ワードのスキャンを開始し、親スレッドは継続して入力を受け付けます。並列化に適した処理はその他にも多数あります。知っておいたほうが良いことがあります。シリアルコードには、その必要がないのに、タスクがシーケンシャルに実行されている場所がよくあります。そこに注目してみると良いでしょう。まとめ多くの場合、シリアルコードには多数の並列処理の可能性があり、コードをスレッド化することでパフォーマンスが大幅に向上します。このような可能性を見つけて活用するには、並列化の概念、並列化を実装するためのさまざまなプログラミング手法、およびこれらの可能性を特定する方法を理解する必要があります。ようなプロファイリングおよびスレッド化ツールを使用することで、シリアルコードにあるスレッド処理の可能性を迅速に見つけることができます。スレッド化手法により素早くコードを並列化できます。シリアルコードの並列化には課題が伴いますが、それらは効率的な手法やスレッド化手法を用いて克服することができます。結果として、きめ細やかにチューニングされたハイパフォーマンスな並列アプリケーションが得られます。サイトを参照してください。同じ課題に取り組んでいるほかの人々と情報を共有することは、何かを学ぶ上で最良の方法といえます。ほかの開発者と共有してください。(あるいは、あなたがほかの開発者を支援することができます)。最新のドキュメント、ツールに加えて、ソフトウェア業界のブログやフォーラムなどのコミュニティー・リソースを提供しています。ソフトウェア・ライフサイクル全体を通して効率的にスレッド化し、コーディングと最適化のプロセスを合理化します。ソフトウェア・ネットワークにより厳選された技術文献のリストがあります。ソフトウェア・ネットワークで公開されているウィキで、コミュニティーの情報共有を利用して語彙を強化できます。マイクロプロセッサーにおけるアプリケーション・パフォーマンスの最適化に取り組んでおり、特にラピッド並列開発とマイクロアーキテクチャーのチューニングを専門としています。趣味は山登りで、オフの時間はたいていどこかの山の上にいます。