0

私のアルゴリズム(並列マルチフロンタルガウス消去法)は、CUDAカーネル内にメモリ(ツリー構築)を動的に割り当てる必要があります。gpuocelotがそのようなことをサポートしているかどうか誰かが知っていますか?

これによると:stackoverflow-linkとCUDAプログラミングガイド私はそのようなことをすることができます。しかし、gpuocelotを使用すると、実行時にエラーが発生します。

エラー:

  1. カーネル内を呼び出すmalloc()と、次のエラーが発生します。
    (2.000239)ExternalFunctionSet.cpp:371:アサーションメッセージ:PTXから外部ホスト関数を呼び出すにはLLVMが必要です。
    ソルバー:ocelot / ir / Implementation / ExternalFunctionSet.cpp:371:void ir :: ExternalFunctionSet :: ExternalFunction :: call(void *、const ir :: PTXKernel :: Prototype&):アサーションfalse'が失敗しました。
  2. (ホストコード内の)mallocヒープサイズを取得または設定しようとすると:
    ソルバー:ocelot / cuda / Implementation / CudaRuntimeInterface.cpp:811:virtual cudaError_t cuda :: CudaRuntimeInterface :: cudaDeviceGetLimit(size_t *、cudaLimit):アサーション `0 &&"unimplemented"'が失敗しました。

たぶん私は(どういうわけか)私がデバイスを使いたいコンパイラを指さなければなりmalloc()ませんか?

何かアドバイス?

4

1 に答える 1