저는 CUDA 프로그래밍이 처음이었고 실행 시간의 차이를보기 위해 다른 간단한 커널을 테스트했습니다. 최적화 및 얻을 없애 내가 -g -G와 함께 컴파일mod 대신 bitwise shift를 사용하는 동안 CUDA의 중요한 시간 차이
__global__ void mathKernel4(float *c)
{
int tid = blockIdx.x * blockDim.x + threadIdx.x;
float ia, ib;
ia = ib = 0.0f;
int itid = tid >> 5;
if (itid & 0x01 == 0)
{
ia = 100.0f;
}
else
{
ib = 200.0f;
}
c[tid] = ia + ib;
}
:
__global__ void mathKernel2(float *c)
{
int tid = blockIdx.x * blockDim.x + threadIdx.x;
float ia, ib;
ia = ib = 0.0f;
if ((tid/warpSize) % 2 == 0)
{
ia = 100.0f;
}
else
{
ib = 200.0f;
}
c[tid] = ia + ib;
}
다른 하나
은 나를 위해 동일한 작업을 수행 개의 커널을 가지고 :
mathKernel2 <<< 8192 32 >>> elapsed 0.000259 sec
mathKernel4 <<< 8192 32 >>> elapsed 0.000103 sec
왜 큰 차이가 있습니까?
밀리 초보다 적습니다. 정말 중요합니까? – Moira
정수 모듈러스 연산자가 GPU에서 느린 것으로 알려져 있습니다. – talonmies
@ 1blustone이이 경우에는 아닐 수도 있지만, 차이가 있습니다. –