C#通过OpenCL调用显卡GPU做高效并行运算

本文提供了一篇C#调用OpenCL进行GPU并行运算的入门教程,包括下载OpenCL.Net库,创建C#工程,设置上下文,选择设备,创建命令队列,编译OpenCL代码并调用Kernel。通过实例展示了如何利用GPU的强大运算能力进行高效计算。
摘要由CSDN通过智能技术生成

GPU的并行运算能力远超CPU,有时候我们会需要用到超大数据并行运算,可以考虑用GPU实现,这是一篇C#调用GPU进行运算的入门教程.

1: 下载相关的库:

https://sourceforge.net/projects/openclnet/
看起来已经N久没更新了, 不过没关系,这只是API声明和参数,opencl本身是有在更新的.
481370-20171025164234379-1797966716.png

里面有源码也有DLL,可以引用DLL,也可以直接把源码添加到工程使用.(建议直接添加代码...)
*** 需要注意的是 ***:自己建立的工程有个默认的Program类,要改成别的名字,不然会和这里面一个同名的类冲突....

2:建立工程

打开VS建立一个C#控制台工程,Program类改名为MainProgram,添加OpenCL.Net源码引用
481370-20171025175420566-829423315.png

项目属性里改为[允许不安全代码]:
481370-20171025164645082-958429553.png

3:在MainProgram里声明引用:

using OpenCLNet;
using CL = OpenCLNet;

4:在项目里添加一个Extend类,内容如下

public static class Extend
{
    /// <summary>
    /// 取指针
    /// </summary>
    /// <param name="obj"></param>
    /// <returns></returns>
    public static unsafe IntPtr ToIntPtr(this int[] obj)
    {
        IntPtr PtrA = IntPtr.Zero;
        fixed (int* Ap = obj) return new IntPtr(Ap);
    }
}//End Class

5:在MainProgram把一段运行在GPU的代码放在C#的字符串里:

#region OpenCL代码
private static string CLCode = @"
__kernel void vector_add_gpu(__global int* src_a, __global int* src_b, __global int* res)
{
    const int idx = get_global_id(0);
    res[idx] =src_a[idx] + src_b[idx];
}

__kernel void ve
  • 1
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值