Как рандомизировать число с помощью 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