CUDA는 재귀를 지원합니까?
CUDA는 재귀를 지원합니까?
2.0 및 CUDA 3.1을 지원하는 NVIDIA 하드웨어에서 수행됩니다.
CUDA C / C ++에 추가 된 새로운 언어 기능 은 다음 과 가능 합니다.
함수 포인터 및 재귀 지원으로 기존의 많은 알고리즘을 Fermi GPU로 쉽게 이식 할 수 있습니다.
http://developer.nvidia.com/object/cuda_3_1_downloads.html
재귀 : NVIDIA 웹 사이트에서 코드 샘플을 수 없습니다 포럼에서 누군가 다음을 게시합니다.
__device__ int fact(int f)
{
if (f == 0)
return 1;
else
return f * fact(f - 1);
}
예, NVIDIA CUDA 프로그래밍 가이드를 참조하십시오 .
장치 함수는 기능이있는 2.0의 장치 용으로 사용할 수있는 장치 코드의 재귀만을 지원합니다.
사용하신 비용은 Fermi 카드가 필요합니다.
특정 칩에 대한 재귀 만 지원하지만 "에뮬레이트 된"재귀를 피할 수 있습니다. CUDA 레이트 레이서에 확인 타임 재귀를 어떻게 사용했는지 확인하십시오 .
CUDA 4.1 릴리스에서 CUDA는 __device__ 함수에 재 함수 귀를 지원하고 __global__ 함수에 지원하지 않습니다.
호환 장치에서 2.0 기능이있는 이후에만
물론 그렇습니다.하지만이를 Kepler 아키텍처가 필요합니다. 고전적인 빠른 정렬에 대한 최신 예를 확인하십시오.
http://blogs.nvidia.com/2012/09/how-tesla-k20-speeds-up-quicksort-a-familiar-comp-sci-code/
내가 아는 한 최신 Kepler GK110만이 동적 메시지 처리를 지원할 때 종류의 재귀 호출과 내에서 새 이름 생성이 가능합니다. Kepler GK110 이전에는 불가능했습니다. 모든 Kepler 아키텍처가이를 지원하는 것은 GK110 만 지원합니다.
재귀가 필요한 경우 Tesla K20이 필요할 것입니다. 나는 Fermi가 그것을 지원하는지 확실하지 않습니다. : \하지만 케플러는 확실합니다. =)
모든 재귀 알고리즘은 스택과 루프로 구현할 수 있습니다. 훨씬 더 고통 스럽지만 재귀가 필요하면 효과가 있습니다.
CUDA 3.1은 재귀를 지원합니다
알고리즘이 많은 재귀를 포함하는 경우 지원 여부에 관계없이 GPU 용으로 설계되지 않은 사건 발생 알고리즘을 재 설계하거나 더 나은 CPU를 얻을 수 있습니다. 어느 쪽이든 더 좋을 것입니다 (많은 경우에, 규모가 더 좋습니다). 그런 다음 재귀를 수행하십시오. GPU.
예, 실제 버전에서 지원됩니다. 하지만 재귀의 실제 깊이를 알기 위해 스택 귀의 메모리 할당을 예측할 수 있습니다. 따라서 스택 귀하의 목적에 충분하지 않을 수 있고 대규모 기본 스택 크기를 수동으로 증가시킬 수 있습니다.
예, 재귀를 지원합니다. 그러나 GPU에서 재귀를 수행하는 것은 좋은 생각이 아닙니다. 각기가 그것을 할 것이기입니다.
1.1 기능 기능을 NVIDIA GPU로 PC에서 방금 시도했습니다. 재귀가 아직 지원되지 않는다. 따라서 가동과는 관련이 없지만 하드웨어 자체는
참조 URL : https://stackoverflow.com/questions/3644809/does-cuda-support-recursion
'ProgramingTip' 카테고리의 다른 글
ElementTree 노드 부모 노드에 액세스 (0) | 2021.01.07 |
---|---|
C ++는 재귀 깊이를 제한 깊이? (0) | 2021.01.07 |
예외 발생없이 우수한 스택 추적 인쇄 (0) | 2021.01.07 |
node.js 소스 파일을 이용하는 방법이 있습니까? (0) | 2021.01.07 |
폴더 계층 구조에서 모든 git 콘텐츠를 한 수준 위로 이동해야합니까? (0) | 2021.01.07 |