CudaSharp项目的目的是让你在支持CUDA的GPU上运行C#程序。
示例代码:
usig System;usig CudaSharp;usig MaagedCuda;amespace CudaSharpTest{ static class Program { static void Mai() { var ptx = CudaSharp.CudaSharp.Traslate<it[]>(kerel); Test(ptx); Cosole.ReadKey(true); } static void store(it[] arr, it value) { arr[Gpu.ThreadX() + Gpu.BlockX() * Gpu.ThreadDimX()] = value; } // ReSharper disable oce IcosistetNamig static void kerel(it[] arr) { var tid = Gpu.ThreadX() + Gpu.BlockX() * Gpu.ThreadDimX(); var val = arr[tid]; if (val != 0) store(arr, val + 3); } static void Test(byte[] ptxFile) { cost it size = 16; var cotext = ew CudaCotext(); var kerel = cotext.LoadKerelPTX(ptxFile, "kerel"); var memory = cotext.AllocateMemory(4 * size); var gpuMemory = ew CudaDeviceVariable<it>(memory); var cpuMemory = ew it[size]; for (var i = 0; i < size; i++) cpuMemory[i] = i - 2; gpuMemory.CopyToDevice(cpuMemory); kerel.BlockDimesios = 4; kerel.GridDimesios = 4; kerel.Ru(memory); gpuMemory.CopyToHost(cpuMemory); for (var i = 0; i < size; i++) Cosole.WriteLie("{0} = {1}", i, cpuMemory[i]); } }}
评论