#c# #parallel-processing #gpu #aleagpu
Вопрос:
www.aleagpu.com не работает, и в пакете NuGet практически нет учебных пособий, поэтому мое последнее средство-спросить и подождать.
Я хочу измерить время, необходимое для завершения работы одного ядра в цикле Alea Gpu.Default.For ().
Пример:
using Alea;
using Alea.Parallel;
int[] a = Enumerable.Range(0, 1 << 10).ToArray();
int[] b = Enumerable.Range(0, 1 << 10).ToArray();
int[] c = new int[1 << 10];
// double array to store execution times of each kernel
double[] kernelMilliseconds = new double[1 << 10];
Gpu.Default.For(0, 1 << 10, i =>
{
DateTime start = DateTime.Now;
c[i] = a[i] * b[i];
DateTime end = DateTime.Now;
kernelMilliseconds[i] = (end - start).TotalMilliseconds;
});
Насколько я знаю, Alea не работает со статическими элементами или свойствами объектов и временем даты.Теперь, оказывается, и то, и другое, но по какой-то причине можно получить доступ к этому статическому свойству. Однако поле самого свойства не может быть использовано, так как System.Exception: 'val(clrobj(DateTime)):_O_[0] is not a reference value
при попытке доступа к нему возникает исключение. Попытка сохранить объект DateTime в массиве, доступ к которому возможен за пределами ядра, также не работает, так как сохранение объекта приводит к этой ошибке: System.Exception: 'Building failed on IL instruction
Я также пытался использовать объект секундомера из системы.Пространство имен диагностики, но при создании экземпляра класса возникает System.Exception: 'Constant variable is immutable
исключение.
Я не знаю, есть ли у Alea встроенная функция для этого, потому что я не могу получить доступ к их веб-сайту, как указано выше.
Если кто-нибудь сможет решить эту проблему, свяжите меня с рабочей и актуальной документацией пакета Alea NuGet или даже со ссылкой на соответствующий учебник по Alea, тогда я буду очень рад.
Редактировать: После загрузки этого поста я попытался использовать среду.Количество галочек для подсчета пройденных миллисекунд, но оно возвращает одно и то же значение для всех ядер, поэтому я не думаю, что это работает.