アクセラレーションする関数を特定し、全体的なアクセラレーションの目標を設定したら、次にその目標を達成するにはどのレベルの並列処理が必要なのかを判断します。
前述の工場のたとえを使用して、カーネル内でどのような並列処理が可能なのかを説明します。
たとえば、組立ラインを使用すると、入力を段階的に同時処理できます。ハードウェアでは、このような並列処理は「パイプライン処理」と呼ばれます。組立ラインの工程数は、ハードウェア パイプラインの段数に相当します。
カーネル内での並列処理には、複数のサンプルを同時に処理できるという利点もあります。これは、ベルトコンベヤーに 1 つだけではなく、同時に複数サンプルを置くようなものです。これを実現するには、組立ラインで複数のサンプルを並列処理できるようにカスタマイズします。これは、カーネル内のデータパスの幅を効率的に定義することに相当します。
パフォーマンスは、組立ラインの数を増やすことでさらに向上できます。これは、工場に複数の組立ラインを設置したり、1 つまたは複数の組立ラインを含む同じ工場を複数建設したりすることで達成できます。
開発者は、どの並列手法を組み合わせるとアクセラレーションの目標を最も効率的に達成できるのかを特定する必要があります。