私はCUDAプログラミングに不慣れで、パフォーマンス上の理由から、ほとんどの場合、ブロックごとに共有メモリを使用しています。現在のプログラムの構造では、1つのカーネルを使用して共有メモリをロードし、別のカーネルを使用して事前にロードされた共有メモリを読み取ります。しかし、私が理解しているように、共有メモリは2つの異なるカーネル間で永続化することはできません。
私は2つの解決策を念頭に置いています。私は最初のものについてはよくわかりません、そして2番目は遅いかもしれません。
最初の解決策:2つのカーネルを使用する代わりに、1つのカーネルを使用します。共有メモリをロードした後、カーネルはホストからの入力を待機し、操作を実行してから、値をホストに返す場合があります。カーネルがホストからのシグナルを待つことができるかどうかはわかりません。
2番目の解決策:共有メモリをロードした後、共有メモリの値をグローバルメモリにコピーします。次のカーネルが起動したら、値をグローバルメモリから共有メモリにコピーして戻し、操作を実行します。
2つのソリューションの実現可能性についてコメントしてください。