AleaGpu を使用して配列の GPU メモリを解放するにはどうすればよいですか? (GPU カード上)
関数/サブ内で、配列 dOutputs、dInputs の GPU メモリを解放したい場合、どうすればよいですか?
1/ 「dOutputs.Dispose (); dInputs.Dispose ( ) ;」GPUメモリを解放しますか?
2/ GPU 用の「GC.Collect()」は存在しますか? それは必要ですか ?
3/ AleaGpu では、GPU メモリを完全に解放するコマンドはありますか?
private void button3_Click(object sender, EventArgs e)
{
textBox3.Text = "";
var worker = Worker.Default;
const int rows = 10;
const int cols = 5;
var rng = new Random();
var inputs = new double[rows, cols];
for (var row = 0; row < rows; ++row)
{
for (var col = 0; col < cols; ++col)
{
inputs[row, col] = rng.Next(1, 100);
}
}
var dInputs = worker.Malloc(inputs);
var dOutputs = worker.Malloc<double>(rows, cols);
var lp = new LaunchParam(1, 1);
worker.Launch(Kernel, lp, dOutputs.Ptr, dInputs.Ptr, rows, cols);
var outputs = new double[rows, cols];
dOutputs.Gather(outputs);
Assert.AreEqual(inputs, outputs);
dOutputs.Dispose();
dInputs.Dispose();"
}
3/ GPU カードのメモリは限られているため、double の代わりに Single/Int16/Int32 を使用する必要があります。私は試した :
var inputs = new Single[rows, cols];
var dOutputs = worker.Malloc<Single>(rows, cols);
var inputs2 = new Int16[rows, cols];
しかし
worker.Launch(Kernel, lp, dOutputs.Ptr, dInputs.Ptr, rows, cols);
取らないでください。「無効な引数があります」というエラーが表示されます。
worker.Launch(Kernel, lp, ...) に Int16,Int32 と single を持たせるにはどうすればよいですか?