gpgpu

    14

    2答えて

    私はいくつかのプロジェクトでOpenCLを扱ってきましたが、カーネルを常に(たまに大きな)関数として書きました。今私はより複雑なプロジェクトに取り組んでおり、いくつかのカーネル間で機能を共有したいと考えています。 しかし、すべての例では、カーネルを1つのファイルとして表示しています(2次関数を呼び出すことはほとんどありません)。 clCreateProgramWithSource()は複数の文字列

    16

    1答えて

    GPUがCPUよりもはるかに高速な例が多くあります。しかし、並列化が非常に難しいアルゴリズム(問題)が存在します。 CPUがGPUを克服できる時にいくつかの例やテストを教えてください。 編集:提案のため ありがとう!我々は、最も人気のあるCPUと最新のCPUとgpuを比較することができます。たとえば、Core i5 2500k vs GeForce GTX 560 Tiなどです。 SIMDモデルを

    9

    5答えて

    スパースなコレスキー分解を計算するための並列アルゴリズムを誰に教えてもらえますか? GPUでの実行に適している必要があります。 CUDA、OpenCL、または擬似コードの回答は高く評価されます。

    8

    2答えて

    特定のスレッド構成に対してCUDAカーネルを呼び出すときには、メモリ空間(デバイス/ホスト)カーネルパラメータをどのタイプに置くべきであるか厳密な規則がありますか? 私はCUDAカーネルに直接 、ホスト -integer変数である整数パラメータint fooを渡すことができ、私は kernel<<<numblocks, threadsperblock >>> (/*parameters*/)

    0

    2答えて

    悪いタイトルは申し訳ありません。私はもっ​​と良いものを考え出すことができませんでした。 私がCUDAプログラムで見たすべての例には、並列化の準備ができているデータがあらかじめ定義されています。 一般的な例は、2つの行列が既に充填されている2つの行列の和です。しかし、新しい仕事を生み出すプログラムはどうでしょうか?これをCUDAでどのようにモデル化できますか?他のスレッドが処理を開始できるように、

    1

    1答えて

    私はCL_MEM_USE_HOST_PTR | CL_MEM_READ_WRITEフラグで作成されたバッファを持っています。これを1つのカーネルで使用して、バッファを作成したときにデータをホストメモリセットに戻しました(queue.enqueueReadBuffer(...))。私はCPU上でこれらのデータを変更しましたが、別のカーネルでこれらのデータを使用したいと思います。 ノンブロッキング書き

    1

    2答えて

    私の現在のプロジェクトでは、より大きなサイズの別のイメージに含まれるイメージのピクセルの正確な位置を見つける必要があります。小さな画像は決して回転または伸張されません(ピクセルごとに一致する必要があります)が、輝度が異なる場合があり、画像の一部のピクセルが歪む可能性があります。私の最初の試合はCPUでやっていたが、遅すぎた。計算は非常に平行ですので、私はGPUを使用することに決めました。私はちょう

    6

    1答えて

    あなたのカーネルをさらに最適化するためにカーネルのPTXコードを読むことをお勧めしますか? 例:私は、自動ループアンローリングが機能しているかどうかをPTXコードから知ることができます。これが当てはまらない場合、カーネルコード内で手動でループを展開する必要があります。 PTXコードの他のユースケースはありますか? あなたのPTXコードを調べますか? CUDAが私のカーネル用に生成するPTXコードを

    5

    1答えて

    NVCCはどのようにデバイスコードを最適化しますか?定数フォールディングや共通部分式削除のような最適化は何ですか?これに float a = 1/sqrtf(2 * M_PI); float b = c/sqrtf(2 * M_PI); : 例えば、それは次のように削減されます float a = 1/sqrtf(c * M_PI); float b = c/sqrtf(M_PI);

    0

    1答えて

    グーグルではあまり役に立ちませんでした。 (ダブルV = idx.x)を倍増する整数からキャスト以下のコードスニペットで は「シェーダーの作成に失敗しました」実行時エラーにつながります。 私は、restrict(direct3d)がGPUがコンパイル時に処理できないことを警告してくれたと思っていました。 pow()に代わる方法がありますか?そうするためにループを書く必要がありますか? concur