2013-01-02 2 views
2

나는 N ×의 N 두 차원 배열을 가지고, 내가 할 그것의 매 분기 평균하려면 다음과 같이 같은 번호 :평균 분기

matrix = [ 1 2 4 6 
      6 7 1 1 
      9 8 3 6 
      4 7 9 2 ] 

및 적용 CUDA 후 커널을 사용하면 결과는 다음과 같습니다 :

result = [ 4 4 3 3 
      4 4 3 3 
      7 7 5 5 
      7 7 5 5 ] 

어떻게 C CUDA 커널로 구현할 수 있습니까?

+0

관심있는 문제 크기는 무엇입니까? – talonmies

+0

하나의 매우 큰 매트릭스 또는 더 작은 매트릭스에서이 조작을 수행합니까? – hexist

+0

문제 크기는 크기가 [4000 × 4000] 인 약 하나의 매트릭스입니다. –

답변

2

이런 종류의 작업을 수행하는 데 특별한 문제는 없습니다. 당신이 평균

  • 할 각 행렬

    1. 라벨 레이블이있는 각 지역에 접두사 합을 수행하고
    2. 레이블이있는 각 지역을 기입 수단에 결과 금액을 변환 즉시 떠오르는 접근 방식은 다음과 같을 것 해당 평균값.

    CUDA 툴킷과 함께 제공되는 추력 템플릿 라이브러리에는이를 구현하는 데 필요한 대부분의 알고리즘이 포함되어 있습니다. 필요한 유일한 사용자 코드는 각 하위 행렬에 레이블을 붙이는 펑터가 될 것입니다. 이것은 작성하는 것이 매우 간단합니다.

  • +0

    내가 직면하고있는 실제 문제는 픽셀의 평균 필터이며,이 필터는 동적 크기를 가지고있어서 필터의 지정된 크기 내에서 이웃하는 픽셀 값의 평균을 구합니다. –

    +0

    @SamehKamal : 이것이 "진짜 문제"라면, 왜 완전히 다른 문제인지 물어 봄으로써 모든 사람의 시간을 낭비 했습니까? – talonmies

    +0

    이 간단한 질문을 풀면 실제 문제의 해답을 얻을 수 있습니다. 서브 매트릭스 (2 차원 배열)의 평균을 구하는 데 도움이 필요합니다. 그리고 내가 묻는 것은 –