私のプログラム Cuda / Optix で計算された変数のテキスト ファイルを作成できるかどうかを知りたかったのです。つまり、変数は私の .cu ファイルにあるため、CPU によって書き込むことはできません。
6 に答える
私の知る限り、CUDA カーネルからファイル I/O を実行することはできません。cudaMemcpy
データを使用してホスト メモリにコピーする必要があり、そこから値をファイルに書き込むことができます。
私は Optix の経験はありませんが、私の知る限り、CUDA からファイルに書き込む方法はありません。値をファイルに保存するには、値をホストにダウンロードする必要があります。
を使用cudaMemcpy( dstPointer, srdPointer, size, cudaMemcpyDeviceToHost);
して、デバイス (GPU) からホスト (CPU) にデータをコピーできます。参照: NVIDIA CUDA ライブラリ: cudaMemcpydstPointer
データを保存するのに十分な大きさである必要があることに
注意してください。
optix では、バッファを使用してすべてのデータをホストに戻すことができます。データがホスト メモリにダウンロードされたら、データを csv または txt 形式に簡単に変換できます。
前の回答が示唆するように、CUDA カーネルを介してファイルにデータを書き込むことはできません。コードに複数のループが含まれる場合、プログラムが各ループでデータを転送および書き込むのにどれだけ時間がかかるかを考えているかもしれません。その場合は、指定した回数のループの後にデータ転送を行う必要があります。つまり、ループごとではなく、複数のループのチャンクでファイルを書き込みます。