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