Exemple #1
0
        public static void Test_2(int Count, GPU myGPU)
        {
            Console.WriteLine("Initializing data...");
            myGPU.InitializeData(Count);
            var tests = 100000;

            myGPU.PrepareExecution();
            var random = new Random(123456);

            ValueIdItem[] randoms = new ValueIdItem[tests];

            for (int i = 0; i < tests; i++)
            {
                long z = random.Next(Count - 1);
                try
                {
                    randoms[i] = myGPU[z];
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            var startTime = DateTime.Now;

            for (int i = 0; i < tests; i++)
            {
                var result = myGPU.FindFirst(myGPU[i].Value);
            }
            var endTime = DateTime.Now;

            Console.WriteLine("GPU test done:");
            Console.WriteLine(tests / ((endTime - startTime).TotalSeconds) + " matchins per second !");


            Dictionary <long, long> DiRecs = new Dictionary <long, long>();

            try
            {
                for (int i = 0; i < Count; i++)
                {
                    DiRecs.Add(i, myGPU[i].Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            startTime = DateTime.Now;
            for (int i = 0; i < tests; i++)
            {
                var result = DiRecs[randoms[i].Id];
            }
            endTime = DateTime.Now;

            Console.WriteLine("CPU test done:");
            Console.WriteLine((tests / ((endTime - startTime).TotalMilliseconds + 0.0001)) * 1000 + " matchins per second !");
        }
Exemple #2
0
        public static void Test_0(int Count, GPU myGPU)
        {
            Console.WriteLine("Initializing data...");
            myGPU.InitializeData(Count);
            myGPU.PrepareExecution();
            Console.WriteLine("Running kernel...");
            for (int i = 0; i < 8; i++)
            {
                myGPU.MultiplyAsync(2);
            }

            Console.WriteLine("Copying data back...");
            myGPU.CopyToHost(); // note: usually you try to minimize how much you need to
                                // fetch from the device, as that can be a bottleneck; you should prefer fetching
                                // minimal aggregate data (counts, etc), or the required pages of data; fetching
                                // *all* the data works, but should be avoided when possible.

            Console.WriteLine("Waiting for completion...");
            myGPU.Synchronize();

            var tests  = 100000;
            var random = new Random(123456);

            ValueIdItem[]           randoms = new ValueIdItem[tests];
            Dictionary <long, long> DiRecs  = new Dictionary <long, long>();


            try
            {
                for (int i = 0; i < Count; i++)
                {
                    DiRecs.Add(i, myGPU[i].Value);
                }
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            for (int i = 0; i < tests; i++)
            {
                long z = random.Next(Count - 1);
                try
                {
                    randoms[i] = myGPU[z];
                }
                catch (Exception ex)
                {
                    Console.WriteLine(ex.Message);
                }
            }

            Console.WriteLine("all done; testing to find " + tests + " items");
            var startTime = DateTime.Now;

            for (int i = 0; i < tests; i++)
            {
                //Console.WriteLine($"{i}: {nameof(record.Id)}={record.Id}, {nameof(record.Value)}={record.Value}");
                var result = myGPU.FindFirst(myGPU[i].Value);

                //if (result < 0)
                //{
                //    Console.WriteLine("Not found");
                //}
                //else
                //{ Console.WriteLine("Found at " + result);
                //}
            }

            var endTime = DateTime.Now;

            Console.WriteLine("GPU test done:");
            Console.WriteLine(tests / ((endTime - startTime).TotalSeconds) + " matchins per second !");

            startTime = DateTime.Now;
            for (int i = 0; i < tests; i++)
            {
                var result = DiRecs[randoms[i].Id];
            }
            endTime = DateTime.Now;

            Console.WriteLine("CPU test done:");
            Console.WriteLine(tests / ((endTime - startTime).TotalSeconds) + " matchins per second !");
        }