我是一个业余爱好者,想利用我的GPU为我的个人项目。 我已经得到了安装和工作Alea的GPU封装。
下面这将产生相同的输出:
Dim y(10) As Integer
For i = 0 To 10 - 1
y(i) = i
Next
Dim y2(10) As Integer
Array.Copy(y, y2, y.Length)
Parallel.For(0, y.Length - 1, Sub(i) y(i) += i)
Debug.WriteLine(y.Aggregate(Function(now, future) now + future))
Alea.Gpu.Default.For(0, y2.Length - 1, Sub(i) y2(i) += i)
Debug.WriteLine(y2.Aggregate(Function(now, future) now + future))
两种方法都返回90.这是最基本的,但我需要的是多了很多。
我想我的其他资源较多的parallel.foreach循环转换成GPU.Default.For,所以我可以利用我的电脑的全部功能。
请记住,这一切都工作得十分完美的parallel.foreach循环。 代码的其余部分目前注释掉,这是防止它工作的东西。
Gpu.Default.For(0, Inventory.ItemsInventory.Count - 1,
Sub(i)
Dim Level_1 = Inventory.ItemsInventory.ElementAt(i) 'Exception on this line, doesn't happen if commented out.
end sub)
“广告资源”是一个自定义类,其中“ItemsInventory”是一个字典(字符串,InventoryItem)“InventoryItem”也是一个自定义类。
我得到的例外是:
ArgumentException的抛出:在Alea.dll附加信息“的System.Exception”:无法获得域“$ VB $当地库存”。
接下来,我试图定义“InventoryItem”的数组因为这是我所感兴趣的是这个特定的循环。
Dim ItemsArray() As InventoryItem = Inventory.ItemsInventory.Select(Function(f) f.Value).ToArray
Gpu.Default.For(0, ItemsArray.Length - 1,
Sub(i)
Dim Level_1 = ItemsArray(i)
end sub)
这就是我得到现在:
抛出异常:“System.Exception的”在Alea.dll其他信息:非blittable阵列MyApp.MainWindow + InventoryItem []传送是不允许的,则可以通过的app.config改变这一点。
但我不知道怎么的部分看起来像,说我“可以”添加到app.config文件,我还没有发现任何在线解决这个问题。