2017-12-09 9 views
0

저는 ALEA로 시작했는데, 주어진 gpu parallel.for 내에서 다른 유형과 참조를 액세스하는 방법이 궁금합니다. 가능한 이유 : 1) 정적 필드 지원되지 않습니다 .2) 필드 형식이 지원되지 않습니다 .3) 클로저 클래스에서 필드에없는 [GpuParam] 특성입니다. "Alea GPU for 루프가 필드를 가져올 수 없습니다.

이 오류는 의미가 있지만 올바른 구현 당신은 System.Random.Next를 호출하려고

[GpuManaged] 
    public void InitPoints() 
    { 
     var gp = Gpu.Default; 
     gp.For(1, (10), (i) => 
     { 
      int pointStart = random.Next(totalPoints) + 1; 
      Pt point = new Pt(pointStart, ptAt[i]); 
      point.Process(); 
     }); 
    } 

답변

1

어떻게 될지 모르겠습니다. 이것은 .NET 라이브러리 코드이며 GPU로 컴파일 할 수 없습니다. 이 기능 뒤에 MSIL이 없으며 GPL에서 실행되도록 컴파일되고 컴파일 될 수 있습니다. 또한 System.Random.Next는 직렬 응용 프로그램 용으로 구현 된 난수 생성기입니다. Alea GPU에서도 노출되는 cuRand에서 제공되는 병렬 난수 생성기를 사용해야합니다.

+0

@Daniel에게 감사드립니다. 이 문제를 이해했는데, 혼란스러워하는 부분은 지원되지 않는 GPU 유형을 작동 시키려면 올바른 구현/인터페이스인가? 그것은 가능합니다. 당신은 cuRand가 GPU에 의해 컴파일 될 수 있다고 말합니다. 그렇지만 GPU가 내 "Pt"유형을 적절하게 컴파일 할 수있는 방법이 있습니다. 또한 GPU에 대해 지원되는 유형의 목록이 있으며 어디서 찾을 수 있습니까? 안내에 정말 감사드립니다. – skevthedev

+0

[Alea GPU] (http://www.aleagpu.com) 웹 페이지에는 많은 [samples] (http://www.aleagpu.com/gallery.html)가 있습니다. 특히 [이 샘플] (http://www.aleagpu.com/release/3_0_4/doc/samples/aleasample_cs_financeasianoptionmontecarlo.html)을 통해 작업하십시오. 필요한 것보다 더 복잡하지만 GPU를 프로그래밍 할 때 어떻게 생각해야하는지 충분히 이해할 수 있어야합니다. – Daniel