using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Threading;
namespace Orbit_Dynamic_Workload_Manager
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public static double CPUtime;
public static double GPUtime;
public static double total;
public static double b;
public static float gpu2;
public static float cpu2;
public static int z = 0;
public static int s = 0;
public static int gpudec2;
public static int f = 0;
public static int o = 0;
public static int p = 0;
Thread a2 = new Thread(new ThreadStart(GPUthread));
Thread b2 = new Thread(new ThreadStart(GPUthread2));
Thread c2 = new Thread(new ThreadStart(GPUthread3));
Thread d2 = new Thread(new ThreadStart(GPUthread4));
Thread e2 = new Thread(new ThreadStart(GPUthread5));
Thread f2 = new Thread(new ThreadStart(GPUthread6));
Thread g2 = new Thread(new ThreadStart(GPUthread7));
Thread h2 = new Thread(new ThreadStart(GPUthread8));
Thread i2 = new Thread(new ThreadStart(GPUthread9));
Thread j2 = new Thread(new ThreadStart(GPUthread10));
Thread k2 = new Thread(new ThreadStart(GPUthread11));
Thread l2 = new Thread(new ThreadStart(GPUthread12));
Thread m2 = new Thread(new ThreadStart(GPUthread13));
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
public static void GPUthread()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread2()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread3()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread4()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread5()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread6()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread7()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7;
v8 = v6 - v7;
v8 = sqrt( v8 );
v9[0]++;
}
v11[0]++;
}
}";
OpenCLTemplate.CLCalc.InitCL();
OpenCLTemplate.CLCalc.Program.Compile(new string[] { orbit });
OpenCLTemplate.CLCalc.Program.Kernel VectorSum = new OpenCLTemplate.CLCalc.Program.Kernel("orbit");
int n = 1000000;
float[] v1 = new float[n], v2 = new float[n], v3 = new float[n], v4 = new float[n], v5 = new float[n], v6 = new float[n], v7 = new float[n], v8 = new float[n], v9 = new float[1], v10 = new float[1], v11 = new float[1], v12 = new float[1], v13 = new float[1];
for (int i = 0; i < n; i++)
{
v1 = RandomClass.Next(1000, 100000);
v2 = RandomClass.Next(200000, 10000000);
v3 = 6378140 + v2;
}
v13[0] = s;
v9[0] = s;
v10[0] = gpu2;
v11[0] = o;
v12[0] = p;
OpenCLTemplate.CLCalc.Program.Variable varV1 = new OpenCLTemplate.CLCalc.Program.Variable(v1);
OpenCLTemplate.CLCalc.Program.Variable varV2 = new OpenCLTemplate.CLCalc.Program.Variable(v2);
OpenCLTemplate.CLCalc.Program.Variable varV3 = new OpenCLTemplate.CLCalc.Program.Variable(v3);
OpenCLTemplate.CLCalc.Program.Variable varV4 = new OpenCLTemplate.CLCalc.Program.Variable(v4);
OpenCLTemplate.CLCalc.Program.Variable varV5 = new OpenCLTemplate.CLCalc.Program.Variable(v5);
OpenCLTemplate.CLCalc.Program.Variable varV6 = new OpenCLTemplate.CLCalc.Program.Variable(v6);
OpenCLTemplate.CLCalc.Program.Variable varV7 = new OpenCLTemplate.CLCalc.Program.Variable(v7);
OpenCLTemplate.CLCalc.Program.Variable varV8 = new OpenCLTemplate.CLCalc.Program.Variable(v8);
OpenCLTemplate.CLCalc.Program.Variable varV9 = new OpenCLTemplate.CLCalc.Program.Variable(v9);
OpenCLTemplate.CLCalc.Program.Variable varV10 = new OpenCLTemplate.CLCalc.Program.Variable(v10);
OpenCLTemplate.CLCalc.Program.Variable varV11 = new OpenCLTemplate.CLCalc.Program.Variable(v11);
OpenCLTemplate.CLCalc.Program.Variable varV12 = new OpenCLTemplate.CLCalc.Program.Variable(v12);
OpenCLTemplate.CLCalc.Program.Variable varV13 = new OpenCLTemplate.CLCalc.Program.Variable(v13);
OpenCLTemplate.CLCalc.Program.Variable[] args = new OpenCLTemplate.CLCalc.Program.Variable[] { varV1, varV2, varV3, varV4, varV5, varV6, varV7, varV8, varV9, varV10, varV11, varV12, varV13 };
int[] workers = new int[1] { n };
sw.Start();
while (f < gpudec2)
{
VectorSum.Execute(args, workers);
f++;
v9[0] = s;
}
varV4.ReadFromDeviceTo(v4);
varV5.ReadFromDeviceTo(v5);
varV6.ReadFromDeviceTo(v6);
varV7.ReadFromDeviceTo(v7);
varV8.ReadFromDeviceTo(v8);
sw.Stop();
GPUtime = sw.Elapsed.TotalSeconds;
}
public static void GPUthread8()
{
Random RandomClass = new Random();
f = 0;
System.Diagnostics.Stopwatch sw = new System.Diagnostics.Stopwatch();
string orbit = @"
__kernel void
orbit(__global float * v1,
__global float * v2,
__global float * v3,
__global float * v4,
__global float * v5,
__global float * v6,
__global float * v7,
__global float * v8,
__global float * v9,
__global float * v10,
__global float * v11,
__global float * v12,
__global float * v13)
{
int i = get_global_id(0);
while (v11[0] < v12[0])
{
v9[0] = v13[0];
while (v9[0] < v10[0])
{
v4 = v3 / (2 * 398600500000000 / (v3 * (v1 * v1)) - 1);
v5 = v3 * (v1 * v1) / 398600500000000 - 1;
v6 = v4 / (1 + v5);
v7 = v5 * v6;
v6 = v6 * v6;
v7 = v7 * v7