私は2つのプログラムをゼロから作成しました.1つは積分と2つめの行列 - 行列乗算です。私がGPUカードで両方のプログラムを実行していて、グローバルサイズを1024に設定したとき、カーネルコードが1024回実行されると予想していましたが、それは正しいです。グローバルサイズを設定し、結果をコード化して出力することは重要ではありませんでした。 同じコード私はCPUで実行しようとしましたが、カーネル関数がグローバルサイズと同じ時間を実行していないのを見たときに私はショックを受けました。 グローバルサイズ= 2048、ローカルサイズ= 1、 カーネル関数の実行は2048回、2048, ですが、グローバルサイズ= 2048、ローカルサイズ= 16の場合それは256回実行されます... それは正常ですか? openClでCPUとの作業がGPUと異なるのはなぜですか?ユーザー側でどのデバイスを使用するかは問題ではなく、同じコードが異なるデバイスで同じように動作するはずです。私は間違っていますか?OpenCL GPUとCPUは同じアルゴリズムですが、OpenClはこれらの2つのデバイスで異なって動作します
ありがとうございました!
問題の[最小、コンパイル可能な例(http://stackoverflow.com/help/mcve)]が必要です。したがって、いくつかのコードを投稿して、どのようにエンキューするのか(そしてOpenCLドライバなど)一般的に、ドライバはグリッド全体が実行されることを保証します。 – einpoklum
グローバルスレッドIDとグループIDとローカルスレッドIDの間違った傍受が必要です。あなたはどのように処刑の回数を確認していますか? –
@huseyintugrulbuyukisikカーネルコードのグローバル変数に+ = 1を追加するだけで、カーネルが何回実行されたかを確認できます。 – Gzyniu