开源中国

我们不支持 IE 10 及以下版本浏览器

It appears you’re using an unsupported browser

为了获得更好的浏览体验,我们强烈建议您使用较新版本的 Chrome、 Firefox、 Safari 等,或者升级到最新版本的IE浏览器。 如果您使用的是 IE 11 或以上版本,请关闭“兼容性视图”。
CudaSharp首页、文档和下载 - 常用工具包 - 开源中国社区
全部项目分类
我要评价
未知
C#
Windows
分享
收藏
53 人收藏
收录时间:2014-01-16
CudaSharp 详细介绍

CudaSharp 项目的目的是让你在支持 CUDA 的 GPU 上运行 C# 程序。

示例代码:

using System;
using CudaSharp;
using ManagedCuda;

namespace CudaSharpTest
{
    static class Program
    {
        static void Main()
        {
            var ptx = CudaSharp.CudaSharp.Translate<int[]>(kernel);
            Test(ptx);
            Console.ReadKey(true);
        }

        static void store(int[] arr, int value)
        {
            arr[Gpu.ThreadX() + Gpu.BlockX() * Gpu.ThreadDimX()] = value;
        }

        // ReSharper disable once InconsistentNaming
        static void kernel(int[] 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)
        {
            const int size = 16;
            var context = new CudaContext();
            var kernel = context.LoadKernelPTX(ptxFile, "kernel");
            var memory = context.AllocateMemory(4 * size);
            var gpuMemory = new CudaDeviceVariable<int>(memory);
            var cpuMemory = new int[size];
            for (var i = 0; i < size; i++)
                cpuMemory[i] = i - 2;
            gpuMemory.CopyToDevice(cpuMemory);
            kernel.BlockDimensions = 4;
            kernel.GridDimensions = 4;
            kernel.Run(memory);
            gpuMemory.CopyToHost(cpuMemory);
            for (var i = 0; i < size; i++)
                Console.WriteLine("{0} = {1}", i, cpuMemory[i]);
        }
    }
}

大家对 CudaSharp 的评论 (全部 1 条评论)
{{repayCom.userName}}
wendal
新闻标题都写错了... CudaSharp
顶部