Simon Green이 작성한 NVIDIA 백서 Particle Simulation with CUDA을 읽었습니다.CUDA의 텍스처 메모리 : 성능을 보여주는 개념과 간단한 예제
SDK 입자 예제 및 사용 된 알고리즘에 대해 설명합니다.
코드의 성능을 논의하면서 저자는 입자의 위치와 속도의 전역 메모리 배열이 텍스처에 "결합"되어 있다고 말합니다.
이제 텍스처 메모리의 개념에 대해 매우 혼란 스럽습니다. NVIDIA CUDA 프로그래밍 가이드는 어떤 예제도없이 정말 피곤하고 어려운 설명을 거칩니다.
누군가가/줄 (인형에 대 한 텍스처 메모리) 정말 간단한 날을 참조 할 수 있습니다 질감이 및 성능을 향상 사용하는 방법의 예 :
는 그러므로 나는이 개 질문이 있습니다.
페이지의 40 페이지의 CUDA 프로그래밍 가이드 4.0에는 "텍스처는 선형 메모리 또는 CUDA 어레이의 모든 영역이 될 수 있습니다"라고되어 있습니다. 이제 (말한대로) 텍스처 메모리가 전역 메모리보다 더 나은 성능을 제공한다면 왜 전체 전역 메모리를 텍스처 메모리에 "바인딩"하지 않을까요?
텍스처 메모리가 전역 메모리에 액세스하는 다른 방법 일 뿐인가요? 작품의 맥락에서 각 입자에 대해 빠른 이웃 검색을 수행하기 위해 GPU에서 octree를 만드는 데 관심이 있습니다. 시뮬레이션에서 각 스레드가 하나의 입자에 대한 계산을 수행한다고 가정합니다. octree 데이터 구조는 벡터입니다. 나무를 가로 지르는 동안, 모든 스레드는 트리를 "걸어 내려 가서"각각의 이웃을 찾습니다. 그렇다면 옥트리 벡터가 텍스처 메모리에 바인딩되면 트리 트래버스가 더 빨라질까요? – smilingbuddha
NVIDIA GPU의 텍스처 하드웨어는 완전한 유형으로 만 작동합니다. 일반적인 옥트리 트리 구조는 텍스처에 바인딩 될 수 없습니다. – talonmies
단 정밀도 부동 소수점 값도 포함되지 않습니까? CUDA의 40 페이지 4.0 프로그래밍 가이드 그것은 말합니다 "텍스처 참조는 * texture texref * 유형의 변수로 파일 범위에서 선언됩니다. * DataType *은 텍스처를 가져 오는 동안 데이터 형식을 정의하고 * Type *은 기본 정수 및 단 정밀도 부동 소수점 형식으로 제한 ..... " –
smilingbuddha