을 사용하여 큰 벡터로 배열 된 동일한 길이의 복수 블록 을 줄이는 방법을 찾고 있습니다. 하나의 큰 배열로 배열 된 N 개의 하위 배열 (인접 요소)이 있습니다. 각 하위 배열의 크기는 고정되어 있습니다. 그래서 전체 배열의 크기는 다음과 같습니다. N * K큰 벡터로 배열 된 동일한 길이의 여러 블록 감소 CUDA
내가하고있는 일은 커널을 N 번 호출하는 것입니다. 난이 (의사 코드)처럼 그것을 할 것입니다
for(i=0;i<N;i++){
thrust::device_vector<float> Vec(subarray, subarray+k);
float sum = thrust::reduce(Vec.begin(), Vec.end(), (float)0, thrust::plus<float>());
printf("sum %f\n",sum);
}
순수 CUDA에 대한 : 나는 큰 벡터에 포함 된 모든 하위 어레이를 반복합니다 : 각 시간에는 다음과 같은 배열의 감소를 계산
for(i=0;i<N;i++){
reduction_kernel(subarray)
}
한번에 인접한 서브 어레이의 축소를 수행하는 다른 해결책이 있습니까? 순수한 CUDA 또는 추력을 사용하여
이 일을 예를 들어, 씨 로버트 감사합니다 여기에
는 가공 한 예이다. 난 그냥 질문 : 그것은 순수한 CUDA를 사용하여 구현할 수 있습니까? 지금 가지고있는 지식에 기반하여 중첩 된 커널을 사용할 것이므로 좋은 생각입니까? 또는 다른 최적의 방법이 있습니다. @Robert Crovella – alae순수 CUDA를 사용하여 구현할 수 있습니다. 추력은 GPU에서 실행될 때 순수한 CUDA를 사용하고 추력은 오픈 소스입니다. 순수 CUDA를 사용하여 구현하지 않았기 때문에 중첩 커널이 좋은 아이디어인지는 알 수 없습니다. –
구현 방법에 대해 알고 계시나요? 또한 나는 똑같은 시간에 1000 개의 커널을 시작하려고 생각하면서 각자 100 개의 시퀀스에 대한 감소를 계산합니다. @ 로버트 크로벨 라. 또한 CUDA 및 병렬 처리에보다 편하게 할 수있는 몇 가지 참조 정보를 알고 있는지 궁금합니다. 실제로는 병렬 처리가 내 분야가 아닙니다. 미리 감사드립니다. Robert – alae