私は6つのGPUデバイスで動作するはずのマルチスレッドプログラムを持っています。 プログラムの全期間中に再利用するために、各デバイスで6つのストリームを開きたい(合計36件)。複数のストリームを1つのGPUデバイス
私はcudaStreamCreate()cublasCreate()cublasSetStream()を使用して各ストリームとハンドルを作成しています。 私はまた、GPUメモリーモニターを使用して、各ハンドルのメモリー使用量を確認します。 しかし、各デバイスのGPUメモリ使用量を見ると、最初のストリーム作成時にのみ増加し、残りのストリームでは変更されません。
私が知る限り、使用したいストリームの量に制限はありません。 しかし、私はハンドルとストリームのメモリ使用量がGPUのメモリ使用量に現れない理由を理解できません。
各デバイスに最初のストリームを作成すると、おそらくそのデバイスのCUDAコンテキストが初期化されています。これには、顕著な/顕著な量のメモリ使用が含まれます。各デバイス上の追加のストリーム作成にはこのコンテキストの初期化が含まれないため、追加のメモリ使用量は比較して小さい(またはゼロ)です。 –