Member 12087553 Ответов: 1

Я хочу взять результирующее значение из opencl


Здравствуйте, я просматривал библиотеку OpenCL в C# для того, что будет использоваться в моем проекте.

Но я не знаю, как получить вычисленные данные из библиотеки OpenCL.
public static void RunGPU()
{
    try
    {
        EasyCL cl = new EasyCL()
        {
            Accelerator = AcceleratorDevice.GPU
        };

        int[] WorkSet1 = new int[100];
        int[] WorkSet2 = new int[100];
        int[] WorkSet3 = new int[100];

        for (int i = 0; i < 100; i++)
        {
            WorkSet1[i] = i;
            WorkSet2[i] = i + 1;
            WorkSet3[i] = i + 2;
        }

        cl.LoadKernel(IsPrime);
        cl.Invoke("dd", 0, 1, WorkSet1, WorkSet2, WorkSet3);    //OpenCL uses a Cache. Real speed after that

        int a = 0;
        a++;
    }
    catch (Exception ex)
    {

        Console.WriteLine(ex.ToString());
    }

}

static string IsPrime
{
    get
    {
        return @"
        kernel void dd(global int* message1, global int* message2, global int* message3) 
        {
            for(int i = 0; i<100; i++)
            {
                *(message1 + i) = message2[i] + message3[i];
                printf(""%d %d %d\n"", message1[i], message2[i], message3[i]);
            }
        }
        ";
    }
}

в этом коде метод RunGPU вызывает IsPrime.

затем добавляются message2 и message3 и сохраняются в message1

и покажите значения message1 в текстовом поле консоли.

но метод IsPrime не может повлиять на WorkSet1 в RunGPU

Я надеюсь, что результирующее значение(добавлять) в Workset1 в RunGPU.

Но я не знаю, как это сделать.

message1 не удалось сохранить в Workset1.

Как message1 может быть сохранен в Workset1?

Что я уже пробовал:

Я пытался получить его. и сделайте тестовую программу из, Чтобы получить значение результата из OpenCL

1 Ответов

Рейтинг:
1

Richard MacCutchan

Скорее всего, вы получите более быстрый ответ по адресу Обзор OpenCL - The Khronos Group Inc[^]