2012-01-05 2 views
1

일부 유체 시뮬레이션 용도로 CUDA를 사용하여 GPU에 입자 코드를 구현하는 데 관심이 있습니다.CUDA 코드로 입자를 표현하는 가장 좋은 방법

내 입자에는 위치, 질량, 운동량, 위치 및 기타 물리적 매개 변수와 같은 정보가 있어야합니다. 모든 시뮬레이션에서 N 개의 입자가있을 것입니다. N> = 10^5

제 질문은이 입자에 대한 데이터를 표현하는 가장 효율적인 방법은 무엇입니까?

내가 대량 [N], 모멘텀 [N], positionx [N] 같은 여러 배열을 통해 물리량을 표현합니까 .... 아니면 내가 다음

struct particle 
{ 

mass M; 

pressure p; 
. 
. 

} 

및 배열을 생성 생성 할 이 구조체들. 제발 조언.

답변

4

구조체 배열을 사용하는 것보다 별도의 배열을 사용하는 것이 좋습니다. 각 수량에 연속 메모리를 사용하면 메모리 병합이 가능하지만 임의 크기의 구조를 읽는 것은 불가능합니다. 일반적으로 튜플 (위치 또는 속도 구성 요소라고 함)으로 읽혀지는 일부 수량은 GPU 내장 벡터 유형 (float2, float4) 중 하나를 사용하여 저장하고 단일 메모리 트랜잭션으로 읽는 것이 가장 좋습니다. 이렇게하면 메모리 처리량이 극대화됩니다.

관련 문제