2017-12-13 9 views
0

質問がありますが、私はgpuコアの数十を活用するopenclを使用したいと思います。数日前、私はopenclを使ってプログラムを検索していましたが、ワークグループ、作業項目、カーネル、openclのロジックと混乱しました。OpenCL:プログラムgpuマルチスレッドCPUのような

マルチコアCPUをプログラムするときと同じように、単一のgpu計算コア(または特定のコア)で実行するコードをスレッドに割り当てることはできますか?

+0

「※ノービス質問☆」かもしれませんが、投機は不要です。あなたの質問に答え、答えが何であると思いますか、そしてその結論につながるものを提供してください。また、あなたのような包括的なステートメントでは、これをすでにどのように見つけたのか、見つけたもの(何かがあれば)、そしてあなたの質問に答えることができない理由について、いくつか解説してください。 SOは本当にコードに関する問題で、何が間違っているのかの例としてコードを提供しています。 – 8protons

+0

私が作った検索はすべて、ワークグループ、作業項目、カーネルについて話しました。基本的な例は、これらの(ワークグループ、作業項目、カーネル)を念頭に置いたものであり、私の質問に記述する方法を簡単に見つけることができませんでした。 –

答えて

5

いいえ、それは動作しません。 OpenCLでは、単一の作業項目を実行するカーネルを作成します。それはメモリコピーと同じくらい簡単かもしれませんし、ソースイメージからピクセルを読み込み、それらを混ぜ合わせたり、ピクセルを出力イメージに書き込んだりすることもできます。このカーネルは、作業グループ全体にわたって実行される(例えば、出力画像全体)。ランタイムはそれを起こします。これは、各スレッドが別々の処理を行うマルチスレッドCPUコードと似ていません。それは1000人のインターンでいっぱいの倉庫を持つようなものです。それぞれには一意の従業員番号があり、倉庫内のものには数字があるので、「ボックス(あなたの番号)と(あなたの番号+ 1000)を調べて、一緒に見つけた部分を入れて新しい部分を入れる(あなたの番号に2000を加えたもの)」あなたはメガホンで一度それを言うと、1000パーツは並行して構築されます。

+0

openclは私が記述したことを許可していません。つまり、あなたの例で説明しているのは、gpuをopenclから使用する唯一の方法です。 –

+0

そうです。あなたは、APIを強制的に実行の単一スレッドのようにすることができますが、GPUを使用するには非常に非効率的な方法です。 – Dithermaster

+0

これを行う方法について、非常に基本的で簡単な例を教えてください。 (可能であれば、「通常/右」の方法で同じ例が表示されますか?) –

関連する問題