gpt4 book ai didi

f# - Microsoft Accelerator V2 - toArray2D 问题

转载 作者:行者123 更新时间:2023-12-02 02:35:21 24 4
gpt4 key购买 nike

我是 Microsoft.Accelerator 的新手。看看下面的代码(它是 F# 但它类似于 C#):

type FPA = Microsoft.ParallelArrays.FloatParallelArray

let fi = List.init 9 (fun i -> new FPA(i, [|10;10|]))
let process (fi: FPA list) : FPA list = fi // complicated function
let newfi = process fi
let target = new DX9Target()
for newf in newfi do printfn "%A" (target.toArray2D(newf))

基本上,我创建了一个 FPA 列表,并以生成的 newfi 列表中的每个元素都依赖于 fi 列表中的所有元素的方式对其进行处理。最后,我想获得生成的 fi 列表。我的问题是:我应该为生成的 FPA 列表中的每个元素 (FPA) 调用 toArray2D 吗?在我看来,每次我调用 toArray2D 时都会运行整个计算,这非常耗时。

感谢您的帮助。奥尔德里奇

最佳答案

FPA 表示要执行的计算。您有两个这样的计算列表,finewfi。由于您定义事物的方式,newfi 的每个元素都是一个计算,需要独立运行才能获得其值;即使它是根据 fi 的公共(public)底层元素定义的,也没有办法利用这一事实来仅一次计算底层 fi 值并重复使用他们。如果您希望这些 fi 计算只执行一次,您需要执行以下操作之一:

  1. 获取 fi 计算的结果(例如,通过使用 toArray2D),并根据这些计算值构建 newfi 列表。
  2. 创建一个单独的计算来表示单个数组中的所有 newfi 值 - 您可能需要有点聪明才能编写这样的计算,但这可以让您一次计算所有值而无需需要重新计算 fi 值。

关于f# - Microsoft Accelerator V2 - toArray2D 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2055821/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com