2013-06-27 3 views
1

내 프로젝트에서 cuda는 예를 들어 __constant__ 메모리를 사용할 때 파일 범위 연결을 가지고 있음을 알고 있습니다. 즉, 내가 동일한 파일 내에서 상수 메모리를 사용해야한다는 것을 의미합니다. cudaMemcpyToSymbol. 다른 저장 장치/메모리 유형을 위해 cuda는 파일 범위 연결을 사용합니까? 나는 그것도 texture에 사용한다고 생각한다. 하지만 __shared__ 메모리는 무엇입니까?cuda 및 파일 범위

답변

2

첫 번째 요점은 기존 CUDA 컴파일 모델에서 범위 요구 사항이 이고 모두 장치 기호가 translation unit 범위 인 것입니다. 그리고 모두가 적어도

  1. __global__ 기능
  2. __device__ 기능을
  3. __shared__ 메모리 선언
  4. __constant__ 메모리 개체를 __texture__
  5. 통근
  6. __device__ 기호

이이 모든 의미 동일한 번역 단위에서 정의 됨 w 여기서는 런타임이 올바르게 작동하기 위해 사용됩니다. 근본적인 이유는 위의 목록에있는 모든 객체가 모든 것이 작동하는 동일한 CUDA 모듈 (드라이버 API 개념)에 방출되어야한다는 것입니다.

CUDA 5는 효과적으로 정적 연결 모델 인 별도의 컴파일 모드를 도입합니다. 즉, 기호는 동일한 번역 단위에서 정의 할 필요가 없으며 앞으로 선언 할 수 있으며 링커는 장치 코드 연결 통과 중에 기호 일치를 처리합니다.