c# for grasshopper_grasshopper脚本的GPU加速

e8f8cbb82cd07fb8e5de8ed347cc29d6.png

在.net框架下进行gpu加速计算。只能采用.net平台的第三方库

首先在visual studio中新建一个控制台应用

3ab7fa52df08bd4fefc1f3c992a7f4b5.png

然后添加引用,在nuget中添加Alea和FSharp

d4c0ac6d2754006e0e9328ad5e3504f2.png

然后打开工程所在目录下的packagesAlea.3.0.4toolse文件夹以及packagesAlea.3.0.4libnet45文件夹

91ee88821e9c09c62ada368c5f5edf97.png

61845e32c53ab54e35335eb2e4a6c380.png

复制下图的4个dll到你的Rhino安装路径下的system目录下

a65f9504c06ea09ed9984aa4d90f4e11.png

下面两个dll的最后一个需要根据你的电脑型号决定(86位还是64位,mac还是windows等等。我是64位 windows)

8b35e44af48a30d6e8a9ebe9c64295b7.png

然后以管理员身份启动Rhino(第一次必须以管理员身份运行)

53fea5b37f08ada377e7df2d69da4809.png

打开grasshopper,拖一个c#电池,右键,添加如图的程序集

56e8783733c4dcd5213809022085f4ea.png

然后引用如图的命名空间(using FSharp这句不用写,我是添加了FSharp.dll这个程序集,这个程序集可以不要,没有添加这个dll时写了会报错):

06d6cf0f2cea06ae38b0b59f20e8a26e.png

然后我们就可以调用gpu运算了。

首先我们先测试一下:

b06aac3f1f62ab71ebab0e2257d76ba4.png

这两行代码会返回你的GPU信息。

然后运行一下,你会发现报错。没关系。第一次运行会在你的Rhino目录下生成两个文件夹,

8e0432688ea6756d8e6fe80b90bfc3b1.png

这时保存一下gh文件退出来,重新打开就行了(第一次以管理员身份运行是因为要在Rhino目录下生成这两个文件,第二次及以后打开时不需要以管理员身份运行)

0a1c7ba82bfb4fc7b3b8b7da43547c58.png

此时就返回了你的GPU信息。

一个小例子:

82da67dd1cef88615cffec67b5ced3d8.png
 var gpu = Gpu.Default;
    var array1 = Enumerable.Range(0, Length).ToArray();
    var array2 = Enumerable.Range(0, Length).ToArray();
    var result = new double[Length];

    gpu.For(0, result.Length, i => result[i] = array1[i] * (array2[i] + Math.PI));
    A = result;

gpu.For()一句,调用了gpu进行计算,并返回结果。

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值