저는 취미 생활을하며 개인 프로젝트에 GPU를 활용하고 싶습니다. Alea 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로 변환하려고하므로 내 PC의 모든 기능을 활용할 수 있습니다.
이 모든 것이 완벽하게 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'배열을 정의하려고했습니다.
예외가 발생 : 'System.Exception'을 Alea.dll 에 추가 정보 :
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)
이
내가 지금 무엇을 얻을 비 blittable 배열 MyApp.MainWindow + InventoryItem의 []를 전송은하지 않습니다 허용 된 경우 app.config로이를 변경할 수 있습니다.
하지만 그 부분이 어떻게 생겼는지는 모르지만 app.config 파일에 추가 할 수 있습니다.이 문제를 해결하기 위해 온라인에서 아무 것도 찾지 못했습니다. 나는 Alea.Settings
유형에 대한 문서를 확인, 독서 후
http://www.aleagpu.com/release/3_0_2/doc/faq.html
:
두 번째 예외와 관련하여
왜이 C#을 표시인가? – MickyD
@MickyD vb 이후 제안 된 태그 중 하나였습니다.그물과 C#은 매우 유사하여 같은 문제를 가진 누군가가 잠재적으로 해결책을 찾을 수 있습니다. 그게 그걸로 갈 방법이 아니라면, 내가 태그를 제거해야합니까? – VampireMonkey
첫 번째 오류 메시지는 'Inventory'가 멤버 변수이고 해당 컨텍스트에서 지역 변수 만 지원된다고 제안하는 것으로 보입니다. 필드라고 가정하면 로컬을 선언하고 필드 값을 할당 한 다음 람다에서 필드 값을 사용하십시오. 그러한 제한의 이유는 필드가 다른 곳에서 변경 될 수 있기 때문일 수 있습니다. – jmcilhinney