如cuda c编程指南 http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#arithmetic-instructions中的表2所述,每个多处理器的每个时钟周期的操作数为32 -bit浮点数添加为128,而64位浮点数添加为4,即64位浮点数添加速度慢32倍.
但是,由于我使用以下代码来测试速度差异,双版本最多比浮动慢2倍(即使使用编译标志--device-debug也没有太大变化),有没有人知道原因?
#define N 100000000
typedef double Real;
// Device code
__global__ void VecAdd(Real* A, Real* B, Real* C)
{
int i = blockDim.x * blockIdx.x + threadIdx.x;
if (i < N) {
C[i] = A[i] + B[i];
}
}
// Host code
int main()
{
size_t size = N * sizeof(Real);
// Allocate input vectors h_A and h_B in host memory
Real* h_A = (Real*)malloc(size);
Real* h_B = (Real*)malloc(size);
Real* h_C = …Run Code Online (Sandbox Code Playgroud)