ジュリアのCUDArtパッケージを使用してGPUコンピューティングを管理し始めました。私は必要な計算がすべて実行される前にgpuから(例えばto_host()
を使用して)データを取得するようにする方法を知りたいと思っています。Julia CUDArtと同期するには?
特定のCudaArrayが更新されている間、若干の実験を通して、to_host(CudaArray)
が遅れているようです。だから、おそらくこれを使って安全性を確保するだけで十分でしょうか?しかし、ちょっとばかげているようです。
今はdocumentationのように、launch()
関数を使用してカーネルを実行しています。
CUDArtのドキュメントではJuliaの@sync
マクロを使用した例がありますが、これは美しいかもしれません。しかし、@sync
の目的のために私は自分の「仕事」を終え、カーネルがlaunch()
で開始されるとすぐに移行する準備が整いました。私がlaunch()
の操作を理解している限り、この機能を変更する方法はありません(「起動する機能の出力を受け取るのを待つ」など)。
どのように同期を行うことができますか?
良い点。私は 'device_synchronize'はまだ多くの設定で役に立つと思います。 1. CUBLAS、CUSPARSEなど、ストリームを引数として取らない他の関数とともに使用することができます。また、1つのGPUで作業しているだけであれば、ストリームを必要としない場合もあります。したがって、 'device_synchronize'は少し単純なアプリケーションにつながります。 –