Văn Đợi Trương Ответов: 1

Как рандомизировать число с помощью cudafy?


Дорогие все,
Я хочу создать случайное число в потоках ядра cudafy из 0-1 (аналогично ".NextDouble()" в C#) и из 0-18 (аналогично ".Next(0,18)" в c#). Но у меня нет идеи создать генератор Куранда, я уже искал этот вопрос, но не вижу упоминания об этом.
Это первый раз, когда я использовал Cudafy для программирования GPU. Пожалуйста, помогите мне и дайте мне простой пример, чтобы сделать это.
Большое вам спасибо!

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

using System;
using Cudafy;
using Cudafy.Host;
using Cudafy.Translator;

using Cudafy.Maths.RAND;

namespace CudafyByExample
{
    public class RandomNumber 
    {
        const ulong a = 30000;
        const int b = 10;
        public static void Execute()
        {
            CudafyModule km = CudafyTranslator.Cudafy();
            GPGPU gpu = CudafyHost.GetDevice(CudafyModes.Target, CudafyModes.DeviceId);
            gpu.LoadModule(km);

            GPGPURAND gPGPURAND = GPGPURAND.Create(gpu, curandRngType.CURAND_RNG_PSEUDO_XORWOW);
            gPGPURAND.SetPseudoRandomGeneratorSeed(a);

            float[] r = new float[b];
            float[] d_r = gpu.Allocate<float>(r);
            gPGPURAND.GenerateUniform(d_r);
            gpu.CopyFromDevice(d_r, r);
            gpu.Free(d_r);
        }

        public static void random(float[] x)
        {
            Console.WriteLine(" element of array");
            for (int i = 0; i < x.Length; i++)
            {
                Console.WriteLine($"x[{i}] = {x[i]}");
            }
        }
    }
}


и у меня есть проблема, техническая деталь:
System.DllNotFoundException: Unable to load DLL 'curand64_70': The specified module could not be found. (Exception from HRESULT: 0x8007007E)
   at Cudafy.Maths.RAND.CURANDDriver64.curandCreateGenerator(RandGenerator& generator, curandRngType rng_type)
   at Cudafy.Maths.RAND.CURANDDriver64.CreateGenerator(RandGenerator& generator, curandRngType rng_type) in C:\Users\CHAMP-12\Desktop\LBMCA_Cudafy2\Cudafy.Math\RAND\CURANDDriver.cs:line 245
   at Cudafy.Maths.RAND.CudaDeviceRAND..ctor(GPGPU gpu, curandRngType rng_type) in C:\Users\CHAMP-12\Desktop\LBMCA_Cudafy2\Cudafy.Math\RAND\CudaDeviceRAND.cs:line 34
   at Cudafy.Maths.RAND.GPGPURAND.Create(GPGPU gpu, curandRngType rng_type, Boolean host) in C:\Users\CHAMP-12\Desktop\LBMCA_Cudafy2\Cudafy.Math\RAND\GPGPURAND.cs:line 126
   at CudafyByExample.RandomNumber.Execute() in C:\Users\CHAMP-12\Desktop\LBMCA_Cudafy2\CudafyByExample\LBMCA\RandomNumber.cs:line 20
   at CudafyByExample.Program.Main(String[] args) in C:\Users\CHAMP-12\Desktop\LBMCA_Cudafy2\CudafyByExample\Program.cs:line 45


Как это исправить? и после этого я хочу создать 2D массив random

1 Ответов

Рейтинг:
0

Richard MacCutchan

Вам нужно получить копию библиотеки, в которой находится Куранд: cuRAND :: документация CUDA Toolkit[^]


Văn Đợi Trương

Извините, сэр, не могли бы вы подробно проинструктировать меня о местонахождении Куранда ???? чтобы ????

Richard MacCutchan

Перейдите по ссылке выше.