public static void ShowTableStatic(Image <Gray, float> _data, string Title) { TableForm form = new TableForm(); if (form.checkBox1.Checked) { return; } form.Text = "Table - " + Title; // Create the output table. DataTable d = new DataTable(); // Loop through all process names. for (int i = 0; i < _data.Width; i++) { // Add the program name to our columns. d.Columns.Add(i.ToString()); } for (int i = 0; i < _data.Height; i++) { d.Rows.Add(); for (int j = 0; j < _data.Width; j++) { // Add the program name to our columns. d.Rows[i][j] = ((Gray)_data[i, j]).Intensity.ToString(); } } form.dataGridView1.DataSource = d; for (int i = 0; i < _data.Width; i++) { form.dataGridView1.Columns[i].Width = 50; } form.ShowDialog(); }
/// <summary> /// Multiply an array by a constant value /// </summary> internal static void Multiply() { try { CLError err = new CLError(); //Allocate memory float[] arr = new float[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 }; GCHandle arrGC = GCHandle.Alloc(arr, GCHandleType.Pinned); CLMem bufferFilter = OpenCLDriver.clCreateBuffer(ctx, CLMemFlags.ReadWrite | CLMemFlags.CopyHostPtr, new SizeT(arr.Length * sizeof(float)), arrGC.AddrOfPinnedObject(), ref err); //set parameters unsafe { OpenCLDriver.clSetKernelArg(kernel_mult, 0, new SizeT(sizeof(CLMem)), ref bufferFilter); } //Define grid & execute err = OpenCLDriver.clFinish(comQ); SizeT[] localws = { 5, 1 }; SizeT[] globalws = { 10, 1 }; CLEvent eventObj = new CLEvent(); err = OpenCLDriver.clEnqueueNDRangeKernel(comQ, kernel_mult, 2, null, globalws, localws, 0, null, ref eventObj); CLEvent[] eventObjs = new CLEvent[1]; eventObjs[0] = eventObj; OpenCLDriver.clWaitForEvents(1, eventObjs); // read buffer err = OpenCLDriver.clEnqueueReadBuffer(comQ, bufferFilter, CLBool.True, 0, 10 * sizeof(float), arrGC.AddrOfPinnedObject(), 0, null, ref eventObj); TableForm.ShowTableStatic(arr, "OpenCL Test"); } catch (Exception exc) { MessageBox.Show(exc.ToString()); } }