問題タブ [jocl]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
max - OpenCL (JOCL) - カーネル内の 2 つの配列に対する 2D 微積分
OpenCL の仕組みは理解できたと思ったので、ここで質問していますが、理解できないことがいくつかあると思います。
私がやりたいことは、2 つの配列のすべての値の差を取得し、hypot を計算して、最後に最大 hypot 値を取得することです。
次に、hypot(dx(i), dy(i)) に基づいて各hypotを計算します。これらの値がすべて取得されたら、hypotの最大値を取得します。
したがって、次のカーネルが定義されています。
この場合、定義された GWG サイズは (100, 100, 0) で、LWI サイズは (10, 10, 0) です。
したがって、この例では、両方の配列のサイズが 10 で、GWG と LWI は次のように取得されます。
問題は、期待される値を取得していないため、より小さなカーネルに基づいていくつかのテストを行い、結果配列で返される [VARIABLE TO TEST VALUES] オブジェクトを変更することにしました。
返された値はあまり見られませんが、[VARIABLE TO TEST VALUES] が (index_a * index_b) + index_a の場合、返された配列のほぼすべての値が正しい (index_a * index_b) + index_a 値になります。つまり、次のようになります。
ただし、いくつかの値は次のとおりです。-3.350700319577517E-308....
私が正しくやっていないのは何ですか?
これがよく説明されていて、あなたが私に腹を立てるほど大きくないことを願っています....
どうもありがとう!!!!!
トムレーサー
java - OpenCL (GPU 使用) を追加するのに助けが必要
特に、ゲームに取り組んでおり、FPS が期待どおりに増加するため、CPU よりも GPU を使用することを好むことにしました。問題は、どこから始めればよいかわからないということです。JOCL または JCUDA を簡単に実装できますが、その後、CPU を使用して GPU に置き換える場所がわかりません。助けていただければ幸いです:)
opencl - 複数のデバイス (複数の GPU) に OpenCL を使用する
StackOverflow ユーザーの皆様、こんにちは。
私はこの問題を抱えています:私は取り組みたい非常に大きな画像を1つ持っています。私の最初のアイデアは、大きな画像をいくつかのサブ画像に分割し、このサブ画像を異なる GPU に送信することです。RGB値を使用しないため、Image-Objectは使用しませんが、画像を操作するために輝度値のみを使用しています。
私の質問は次のとおりです。
- すべてのデバイスで1 つ
context
を複数使用できますか?commandqueues
または、各デバイスcontext
に 1 つずつ使用する必要がありますか?commandqueue
- 各デバイスに送信するカーネル引数を設定するために inputMem-Data (サブイメージ データ) を動的に変更する方法を教えてください。(同じ入力データの送信方法しか知りません)
- たとえば、GPU 数よりも多くのサブイメージがある場合、どのようにサブイメージを GPU に分配できますか?
- それとも、別のよりスマートなアプローチでしょうか?
すべての助けとアイデアに感謝します。どうもありがとうございました。
hadoop - HADOOP マップ タスクが失敗しました: プロトコルが指定されていません
私は CDH4 を使用しており、JOCL を使用してマッパー クラスの cleanup() メソッドから GPU にアクセスしようとしています。(注: 私の通常のコード (map reduce なし) は GPU で正常に動作します)。
map-reduce コードを実行すると、エラーがスローされます (以下に指定)。
各マップ タスクは、「プロトコルが指定されていません」というエラーをスローします。これは何を意味するのでしょうか ?マッパークラスで使用されるプロトコルは何ですか?
よろしく
opencl - OpenCL カーネル機能の問題
私は Open-cl を初めて使用し、次の行列演算用のカーネル コードを記述しようとしています。
行レベルのカーネル コードを作成しました (つまり、transpose(row1) X row1 を実行できます)。これは、最初の行のみの目的を果たします。
並列処理を使用して行ごとにこれを計算し、カーネル関数内で最終的な合計を見つけるにはどうすればよいですか?
java - タスク間の OpenCL 共有メモリ
GPU ベースのコンウェイのライフ ゲーム プログラムの作成に取り組んできました。よくわからない場合は、ウィキペディアのページをご覧ください。0 が死んだセルを表し、1 が生きているセルを表す値の配列を保持することで機能する 1 つのバージョンを作成しました。次にカーネルは、セル データに基づいて画像を描画するために画像バッファー データ配列に書き込み、次にレンダリングする次の実行のためにセル配列を更新するために各セルの隣接をチェックします。
ただし、より高速な方法では、セルの値が死んでいる場合は負の数、生きている場合は正の数で表されます。そのセルの数は、隣接セルの数に 1 を加えた値を表します (0 と -0 を区別できないため、0 は不可能な値になります)。ただし、これは、セルをスポーンまたはキルするときに、それに応じて 8 つの隣接セルの値を更新する必要があることを意味します。したがって、隣接するメモリスロットから読み取るだけでよい作業手順とは異なり、この手順ではそれらのスロットに書き込む必要があります。これを行うと一貫性がなくなり、出力された配列が無効になります。たとえば、セルには 14 などの数字が含まれており、これは 13 個の隣人を示しますが、これはありえない値です。CPUで同じ手順を書いたので、コードは正しく、期待どおりに動作します。テスト後、タスクが同時にメモリに書き込もうとすると、何らかの書き込みエラーにつながる遅延があると思います。たとえば、配列データの読み取りと設定の間に遅延があり、その時点でデータが変更され、別のタスクの手順が正しくない可能性があります。私はセマフォとバリアを使用してみましたが、OpenCL と並列処理を学習したばかりで、まだ完全には把握していません。カーネルは次のとおりです。
- 配列出力は、カーネルの計算をレンダリングするために使用されるイメージ バッファー データです。
- sizeX定数とsizeY定数は、それぞれ画像バッファーの幅と高さです。
- colorMap配列には、イメージ バッファの値を適切に変更して色をレンダリングするために使用される、それぞれ黒と白の rgb 整数値が含まれています。
- newCellMap配列は、レンダリングが決定されると計算される更新されたセル マップです。
- historyBufferは、カーネル呼び出しの開始時のセルの古い状態です。カーネルが実行されるたびに、この配列は newCellMap 配列に更新されます。
さらに、ラップ機能は空間をトロイダルにします。期待どおりに動作するようにこのコードを修正するにはどうすればよいですか。また、タスクによる変更のたびにグローバル メモリが更新されないのはなぜでしょうか。共有メモリではないでしょうか?