私のアルゴリズム(並列マルチフロンタルガウス消去法)は、CUDAカーネル内にメモリ(ツリー構築)を動的に割り当てる必要があります。gpuocelotがそのようなことをサポートしているかどうか誰かが知っていますか?
これによると:stackoverflow-linkとCUDAプログラミングガイド私はそのようなことをすることができます。しかし、gpuocelotを使用すると、実行時にエラーが発生します。
エラー:
- カーネル内を呼び出す
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'が失敗しました。
- (ホストコード内の)mallocヒープサイズを取得または設定しようとすると:
ソルバー:ocelot / cuda / Implementation / CudaRuntimeInterface.cpp:811:virtual cudaError_t cuda :: CudaRuntimeInterface :: cudaDeviceGetLimit(size_t *、cudaLimit):アサーション `0 &&"unimplemented"'が失敗しました。
たぶん私は(どういうわけか)私がデバイスを使いたいコンパイラを指さなければなりmalloc()
ませんか?
何かアドバイス?