0

cudaMalloc() を使用して割り当てられたメモリは、ホストからアクセス可能ですか? 物事は今でははっきりしていますが、ホストでデバイスポインターにアクセスできない理由はまだ疑問に思っています。私の理解では、CUDA ドライバーが GPU DRAM 内のメモリ割り当てを処理します。したがって、この情報 (デバイスに割り当てられたメモリの最初のアドレス) は、ホストで実行されている OS に伝達できます。次に、このデバイス ポインタ、つまり割り当てられたデバイス メモリの最初のアドレスにアクセスできます。私の理解の何が問題になっていますか? これを理解するのを手伝ってください。ありがとうございます

4

1 に答える 1

2

GPU メモリは、PCIE バスの反対側にあります。最新の PC アーキテクチャのホスト メモリのメモリ コントローラは、CPU に直接接続されています。

したがって、アクセス方法はかなり異なります。GPU 上のメモリにアクセスする場合、トランザクションは PCIE サイクルのシーケンスとしてフレーム化する必要があります。このトランザクションを実行するように PCIE バスを設定するアクティビティは、最新の CPU の通常のメモリ フェッチ サイクルには組み込まれていません。

cudaMemcpyしたがって、バスの反対側にあるデータを送信またはフェッチするために PCIE バス上でサイクルをプログラムするソフトウェア シーケンスを完了するには、ソフトウェア インタラクション ( によって処理される) が必要です。

于 2013-10-05T02:36:14.927 に答える