問題タブ [pycuda]
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.
cuda - 私のかなり些細なCUDAプログラムが特定の引数で間違っているのはなぜですか?
練習用の簡単なCUDAプログラムを作成しました。ある配列から別の配列にデータをコピーするだけです。
ただし、次のエラーが発生します。pycuda._driver.LogicError: cuLaunchKernel failed: invalid value
カーネル関数の2番目の引数double* e
を削除し、引数なしでカーネルを呼び出すとe
、エラーはなくなります。何故ですか?このエラーはどういう意味ですか?
cuda - リソース不足で起動
次の単純な CUDA カーネルを作成しました。
変数は Python で次のように割り当てられます。
を使用して変数を転送gpuarray.to_gpu
し、次の行で Tesla C2070 のカーネルを呼び出しています。
どこ:
エラーメッセージが表示されます:
これは、ブロックサイズを のように減らしても発生し(8, 1, 1)
ます。ブロックサイズが の GPU で他の CUDA プログラムを実行できる(512, 1, 1)
ので、これは GPU 構成の問題によるものではないと確信しています。
私は何を間違っていますか?助けてくれてありがとう。
cuda - Cudaでの演算子のオーバーロード
次のようにして、2つのfloat4の間にoperator+を作成しました。
ただし、さらにuchar4のoperator +が必要な場合は、uchar4で同じことを行うと、次のエラーが発生します。「エラー:オーバーロードされた関数「operator+」の複数のインスタンスに「C」リンケージがあります」
同じ名前で引数が異なる複数の関数を宣言すると、同様のエラーメッセージが表示されます。だから、2つの質問:
- ポリモーフィズム:Cudaで同じ名前と異なる引数を持つ複数の関数を持つことは可能ですか?もしそうなら、なぜこのエラーメッセージが表示されるのですか?
- float4のoperator+:この機能は「cutil_math.h」を含めることですでに含まれているようですが、それを含めると(
#include <cutil_math.h>
)、そのようなファイルやディレクトリがないと文句を言います...特に何かする必要がありますか?注:Python用のcudaであるpycudaを使用しています。
ありがとう!
cuda - この CUDA エラーをどのように解釈すればよいですか?
私はpyCUDAでCUDAを教えています。この演習では、1024 個の float の単純な配列を GPU に送信し、共有メモリに格納します。以下の引数で指定するように、このカーネルを 1024 スレッドの 1 つのブロックだけで実行します。
奇妙なことに、このエラーが発生しています。
GPU に送信する要素のタイプを変更して、このエラーをデバッグしようとしました (たとえば、float64 の代わりに float32 を使用します)。また、ブロックとグリッドのサイズを変更しようとしましたが、役に立ちませんでした。
何が間違っている可能性がありますか?デッドコンテキストとは?アドバイスやアイデアをいただければ幸いです。
cuda - アレイが設定されないのはなぜですか?
私は自分自身にCUDAを教えようとしています。これは今のところ簡単ではありませんが、私も簡単に諦めません:)
非常にシンプルなプログラムを作成しました。GPUから値を返すだけです。
ただし、私のプログラムが出力する値はです5.387879938e-315
。それは確かにのようには見えません8.0
。GPUから間違った値が返されるのはなぜですか?
私はブロックサイズを変更しようとしましたが、これは何もすべきではないと思います(しかし誰が知っていますか)。また、送信するデータ型(float64)がカーネルと一致することも確認しました。
pycuda - pycudaを使用して2次元配列をカーネルにフィードするにはどうすればよいですか?
形状のあるfloat32の多数の配列を作成し、(64, 128)
それをGPUに送信したいと思います。それ、どうやったら出来るの?カーネル関数はどの引数を受け入れる必要がありますか?float** myArray
?
配列をそのままGPUに直接送信しようとしましたが、pycudaはオブジェクトがアクセスされていると文句を言います...
cuda - CUDAカーネルがアレイを変更しないのはなぜですか?
私は自分自身にCUDAをゼロから教えています。2D配列内の関連する各要素に1を追加するこの単純なカーネルを作成しました。2D配列の要素は、画像の赤チャンネル(zebra.jpg)に由来します。
しかし、このプログラムを実行すると、次の結果が得られます。
元の合計が新しい合計と同じなのはなぜですか?新しい合計はもっと大きくすべきではありませんか?
これがzebra.jpgです。
cuda - gpu_array の分散を計算するにはどうすればよいですか?
2D gpu_array の分散を計算しようとしています。リダクション カーネルは良いアイデアのように思えます。
http://documen.tician.de/pycuda/array.html
ただし、このドキュメントは、リダクション カーネルが 2 つの配列を 1 つの配列にリダクションするだけであることを暗示しています。単一の 2D 配列を単一の値に縮小するにはどうすればよいですか?
cuda - CudaCの加算代入演算子
CudaCで加算代入演算子の問題が発生しています。次のエラーが発生します。
私のコードは:
私の希望する出力はc=[0,1.1,0.4,0.3,0,0,0,0]です。誰かが解決策を提案できますか?
cuda - 配列の正規化に関する Cuda カーネルの最適化
次のように配列を正規化しようとしています。
- 配列の最初の 2 つの要素を選択し、合計を見つけて、その合計を使用してそれらを割ります。
- 残りの要素についても同じことを行います。
それは正常に動作します。しかし、配列の次元を増やすと、時間の複雑さが明らかになります。以下にコードを示します。
d の結果は [0.33333334 0.66666669 0.75 0.25 0.40000001 0.60000002 0.666666669 0.33333334] です。コードを最適化するためのアイデアを提案できる人はいますか?