2010-01-13 2 views
3

Microsoft.Accelerator를 처음 사용합니다. 다음 코드를 살펴 보자 (는 F 번호이지만 C 번호와 유사하다) : 결과 newfi 목록의 모든 요소가 dependend 켜져 있는지Microsoft Accelerator V2 - toArray2D 질문

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)) 

Basicaly 내가 FPAs의 목록을 작성하는 방식으로이를 처리 fi 목록에있는 모든 요소. Finaly 결과 fi 목록을 얻고 싶습니다. 그리고 내 질문은 : 결과 FPA 목록에있는 모든 단일 요소 (FPA)에 대해 toArray2D를 호출해야합니까? 그것은 매우 시간 소모적 인 toArray2D를 호출 할 때마다 전체 계산이 실행되는 것으로 보입니다.

도움 주셔서 감사합니다. 올드 리치

답변

2

FPA는 수행 할 계산을 나타냅니다. 그러한 계산의 두 목록, finewfi이 있습니다. 당신이 물건을 정의하는 방법 때문에, newfi의 각 요소는 값을 얻기 위해 독립적으로 실행해야하는 계산입니다. fi이라는 공통 기본 요소로 정의 되더라도 해당 사실을 활용하여 기본 fi 값만 계산하여 다시 사용할 수는 없습니다. 당신이 그 fi 계산은 단지 하나의 시간을 수행하려면 다음 중 하나를 수행해야합니다 :

  1. 이 (toArray2D를 사용하여 예)를 fi 계산의 결과를 가져 오기를하고 newfi 목록을 작성 이 계산 된 값을 기반으로합니다.
  2. 단일 배열에서 모든 newfi 값을 나타내는 단일 계산식을 작성하십시오. 이러한 계산식을 작성하는 데 조금 영리해야하지만 fi 값을 다시 계산할 필요없이 한 번에 모든 값을 계산할 수 있습니다.
+0

답장을 보내 주셔서 감사합니다. 나는 그 것을 두려워했다 ... 무엇을 의미 했습니까? : 단일 배열에서 모든 newfi 값을 나타내는 단일 계산을 만듭니다. "2D 배열의 2D 배열"을 단일 2D 배열에 넣을 수 있습니까? FPA4를 사용할 수는 있지만 4 가지 값에 제한이 있습니다. 9 개의 값이 필요합니다. 추 신 : 내가 구현하고 싶은 것은 래티스 볼츠만 모델링입니다. –