2011-09-19 10 views
4

私はいくつかのCPUコードをCUDAに移植しようとしています。私のCUDAカードはFermiアーキテクチャに基づいているため、デバイスのmalloc()関数を使用してメモリを動的に割り当てることができ、元のコードを多く変更する必要はありません。 (malloc()関数は私のコードで何度も呼び出されます)。私の質問は、このmalloc関数が十分に効率的かどうかです。私はCUDA上で自分のコードを実行するのにスピードアップをあまりしません。これはmalloc()関数の使用によって引き起こされる疑いがあります。CUDAでのMalloc機能の効率

ご提案やご意見がありましたら教えてください。私はあなたの助けに感謝します。

答えて

4

現在のデバイスmallocの実装は非常に遅いです(効率的なCUDAのダイナミックメモリ割り当てについての論文が掲載されていますが、まだリリースツールキットAFAIKでは公開されていません)。それが割り当てるメモリは、グローバルメモリに格納されているヒープから来ており、また非常に遅いです。これを行う魅力的な理由がない限り、カーネルの動的メモリ割り当てを避けることをお勧めします。全体のパフォーマンスに悪影響を及ぼします。実際にコードに多くの影響があるかどうかは、の完全な別の質問です。

+0

ありがとうございます。あなたは紙のリンクに私を指摘できますか? – xhe8

+5

論文の基礎となった論文はここにあります(https://www.ideals.illinois.edu/handle/2142/16137)。 – talonmies

関連する問題