2012-11-05 4 views
0

병렬 컴퓨팅 (공유 메모리)을 위해 C에서 스파 스 매트릭스 (COO 형식) 프레임 워크를 구현하려고합니다. 처음에는 공간 정보의 구조체 배열을 가질 계획이었습니다.병렬 배열 또는 구조 배열

typedef struct { 
    unsigned int rowIdx; \\ Row Index 
    unsigned int colIdx; \\ Col Index 
    unsigned int dataVal; \\ Value 
    } entity, *spMat; 

병렬 배열은 어떻게 동일하게 수행됩니까?

+0

내가 무엇을 묻고 있는지 잘 모르겠다. –

답변

1

이것은 주로 솔루션을 구현하려는 방법에 따라 다릅니다. CPU 또는 GPU의 데이터 병렬 기능을 이용하려면 구조체 배열보다 배열 구조체로 구현하는 것이 좋습니다.

typedef struct { 
    unsigned int* rowIdxs; 
    unsigned int* colIdxs; 
    unsigned int* dataValues; 
} entity, *spMat; 

이렇게하면 CPU 컴파일러의 벡터 추출기 또는 GPU의 컴파일러가 효율적으로 사용할 수있는 코드를 쉽게 작성할 수 있습니다. 그래서이 경우 배열의 구조체를 먼저 사용하고 데이터 병렬 (네스)을 최적화합니다.

이는 구현이 얼마나 좋은지에 달려 있다고합니다. 두 가지 접근법 중 하나를 사용하여 성능이 좋지 않은 구현을 작성할 수 있습니다.