대역폭을 테스트하기 위해 일부 커널을 만들었지 만 유용한 계산이 아닙니다. 변수 "x"를 설정했지만 CUDA에서 사용하지 않는 변수 유지하기
을 사용한 적이 커널은 신속하게 실행 : 최소한의 예를 들어 내가 컴파일 할 때, 나는 (당연한)경고를
__global__ void testKernel(float* a) { unsigned int i = blockIdx.x*blockDim.x + threadIdx.x; float x; x = a[i]; }
입니다 빈 커널로 :
__global__ void donothing() { }
이것은 [i]의 읽기가 선택되었음을 나타냅니다. 밖으로 imized.
내가 시도 트릭은
volatile float x; if(x); (void)(x;)
과 그들이 경고를 억제하지만, 커널은 여전히 너무 빨리 완료됩니다.
쓸데없는 명령어가 실제로 실행되도록하려면 어떻게해야합니까?
옵션 CU_JIT_OPTIMIZATION_LEVEL을 (를) 찾았지만 Google에서 주로 설명서 링크를 제공하고 사용 방법은 제공하지 않습니다. 이 옵션이 도움이 되겠습니까? 어떻게 사용합니까? 변수를 저장하는 브랜치 도입
저는 항상 이러한 것들을 유용하게 만들었으므로 그것을 제거 할 수 없습니다. 이것이 당신을위한 선택입니까? – Patrick87
시도 x = a [i] + 0 –
@Pavan 도움이되지 않습니다. x는 아직 사용되지 않습니다. – stardt