2017-11-30 16 views
0

私はここにあるコードを適合させようとしています: https://wiki.tiker.net/PyCuda/Examples/ThrustInterop ... cudaストリームを使用しています。ストリームを使用してThrustを実行するPyCuda

(Iは、C++に新たなんだ、とだけCUDAと数週間の経験を持っていることを言い訳してください。)

私の主な試みとスティッキングポイントが受信するので、同じようNVCC機能を調整するの線に沿ってきましたスラストコールへCUDAの引数としてストリーム、および供給:

nvcc_function = FunctionBody(
    FunctionDeclaration(Value('void', 'my_sort'), 
         [Value('CUdeviceptr', 'input_ptr'), 
         Value('int', 'length'), 
         Value('cudaStream_t','stream')]), 
    Block([Statement('thrust::device_ptr<float> thrust_ptr((float*)input_ptr)'), 
      Statement('thrust::sort(thrust::cuda::par.on(stream),thrust_ptr, thrust_ptr+length)')])) 

私は「宣言されていない 『cudaStream_t』」エラーを取得しています(NVCC関数の引数を参照)。

私はホストとデバイスの両方のリストに 'cuda_runtime.h'を追加しようとしましたが、役に立たなかった。

答えて

1

私はpyCUDAや推力に精通していませんが、私はCUDAに精通しています。心に浮かぶ可能性のあることの1つは、「cuda_runtime.h」が指定されているにもかかわらず含まれない理由があることです。特定のインクルードが見つからない場合、pyCUDAフレームワークがエラーを表示することは確実ですか? cudaStream_tは異なるレベルで動作runtime apiの一部であるのに対し、

また、私の注意を引いたもう一つの事は、driver apiの一部であるあなたがCUdeviceptrを使用していることです。

NVIDIAのドキュメントでは、driver api相当のタイプはCUstreamと思われます。 出典:http://docs.nvidia.com/cuda/cuda-driver-api/group__CUDA__STREAM.html#group__CUDA__STREAM

したがって、apisの機能をさまざまなレベルで混在させることに問題がある可能性があります。私が言ったように、私はあなたが使用している正確なフレームワークに精通していない、それらは役に立つかもしれないし、有用でないかもしれないいくつかの提案です。

デバッグで幸運を祈る!

+0

ありがとうございます。 まだこの全体的な問題を解決しようとしていますが、関数の引数を 'CUstream'に置き換えることは、少なくともエラーを取り除いています。 – FunkyOne

+0

うれしい – Addy

関連する問題