私は画像処理プログラムを書いており、OpenCLTemplate を使用して gpgpu と opencl を実装しようとしています。チュートリアルを実行した後、コードを実行する方法を理解しましたが、大きな画像で問題が発生しています。画像をチャンクに分割してコードで実行することでこれを修正しましたが、分割するチャンクの量を設定する代わりに、必要なメモリの最大量を決定し、画像を分割するようにしたいと考えています。コードを実行するための多くの部分。
私が遭遇した問題は、GPUでどれだけのメモリがスローされているか、そしてそれをどのように把握するかが正確にわからないことです。以下は私が使用しているコードです。ここでメモリがどのように処理されているかを説明したり、どこを見ればよいかアドバイスしたりできますか?
私はopencltemplateのドキュメントを調べましたが、役に立たず、どこを見ればよいかわかりません。
CLCalc.Program.Compile(openCLInvert);
CLCalc.Program.Kernel kernel = new CLCalc.Program.Kernel("Filter");
CLCalc.Program.Variable CLData = new CLCalc.Program.Variable(Data);
float[] imgProcessed = new float[Data.Length];
CLCalc.Program.Variable CLFiltered = new CLCalc.Program.Variable(imgProcessed);
CLCalc.Program.Variable[] args =
new CLCalc.Program.Variable[] { CLData, CLFiltered };
int[] test = new int[] { imageData.Width, imageData.Height };
float size = 0;
for (int x = 0; x <= 1; x++)
{
size += args[x].Size;
}
kernel.Execute(args, test);
CLCalc.Program.Sync();
上記のように、引数として使用されているサイズの量を見つけることができますが、合計メモリ使用量はまだわかりません。