GPUはCPUとは異なります。CPUは「タスク並列」モードで動作できますが、これはコアごとに異なるコードを実行できることを意味します。ただし、GPUは「データ並列」であり、SIMT(単一命令複数スレッド)です。
つまり、一度に実行できるカーネルは1つだけですが、そのカーネルはすべてのコアで実行され、各コアはデータのスライスで同時に動作します。
この質問とその受け入れられた回答には、SIMTを説明するさらに多くの情報があり、ここでは複製しない有用な情報がたくさんあります。
GPUでタスクの並列処理を行う唯一の方法は、実際に複数のGPU/デバイスを使用することです。
技術的には、OpenCL APIは、 clCreateCommandQueueCL_QUEUE_OUT_OF_ORDER_EXEC_MODE_ENABLE
を使用してコマンドキューを作成するときに使用して、一度に複数のカーネルを実行することをサポートします。ただし、このモードでは、カーネルが同時に実行される保証はありません。すべてのGPU OpenCL実装は、各カーネルを1つずつ実行するだけだと思います。CPUベースのOpenCL実装を使用する場合、これは当てはまらない可能性があり、カーネルが同時に実行される可能性があります(私はこれを自分で試していません)。