static float[] MultiplyMatrix(OpenCL.Net.Environment env, float[] A, float[] B) { var len = (uint)A.Length; var bufferA = env.Context.CreateBuffer(A, MemFlags.ReadOnly); var bufferB = env.Context.CreateBuffer(B, MemFlags.ReadOnly); var bufferC = env.Context.CreateBuffer(SourceZeroMatrix(), MemFlags.WriteOnly); var kernel = new Kernel.MultiplyMatrix(env.Context); kernel.Compile("-cl-opt-disable"); kernel.Run(env.CommandQueues[0], bufferC, bufferA, bufferB, n, n, len); // WTF: We should wait for run var results = new float[A.Length]; env.CommandQueues[0].ReadFromBuffer(bufferC, results); return(results); }
static float[] MultiplyMatrix(OpenCL.Net.Environment env, float[] A, float[] B) { var len = (uint)A.Length; var bufferA = env.Context.CreateBuffer(A, MemFlags.ReadOnly); var bufferB = env.Context.CreateBuffer(B, MemFlags.ReadOnly); var bufferC = env.Context.CreateBuffer(SourceZeroMatrix(), MemFlags.WriteOnly); var kernel = new Kernel.MultiplyMatrix(env.Context); kernel.Compile("-cl-opt-disable"); kernel.Run(env.CommandQueues[0], bufferC, bufferA, bufferB, n, n, len); // WTF: We should wait for run var results = new float[A.Length]; env.CommandQueues[0].ReadFromBuffer(bufferC, results); return results; }