2011-12-16 3 views
0

필자는 Finite Element discretization에서 스파 스 매트릭스를 어셈블하기 위해 OpenCL 코드를 작성하고 있으며 커널 코드에서이 매트릭스를 어셈블하는 데 사용할 수있는 영리한 구조와 관련하여 팁을 주시면 감사하겠습니다! 커널에서 임의의 행렬 위치에 액세스해야합니다.커널에서 OpenCL 스파 스 매트릭스 액세스

+0

필자는 유한 요소 이산화에별로 관심이 없지만 GPGPU.org [http://gpgpu.org/index.php?s=sparse%20matrix&searchbutton=Search]에는 스파 스 행렬에 관한 많은 기사가 포함되어 있습니다. –

답변

0

큰 데이터 세트에 무작위로 액세스하면 GPU에 과세됩니다. 이 아니라면 모든 커널이 하나의 마스터 테이블에 무작위로 쓸 수 있습니다. 그러면 직렬 CPU보다 성능이 저하 될 수 있습니다.

대신, 나는 각 커널에 작업 할 메모리 덩어리를 줄 것이다. 어쩌면 각각은 (행, 열, 값) 튜플로 작은 좌표 목록을 사용하여 행렬의 일부를 어셈블해야합니다. 각 커널은 행렬 데이터를 어셈블 할 때 자신의 메모리 덩어리에서 작동해야합니다. 그런 다음 데이터를 다시 CPU로 가져 와서 정렬하고보다 효율적인 형식으로 재구성합니다.

정렬 된 행렬 데이터에 대한 추가 작업이 필요한 경우 두 번째 커널을 만드는 것이 가장 좋습니다. 커널은 간단한 작업에서 가장 잘 실행됩니다.

관련 문제