【发布时间】:2021-02-15 04:19:06
【问题描述】:
我尝试学习 CUDA。太像了 C.
我尝试在我的 GPU 中运行一些代码。
但我认为这并不快,我认为这与我的代码有关。
我想只有我的 __global__ void func(ull* num1, ull* num2, ull* sum) 在 GPU 上工作。
这就是我要的。但这并不快。我该怎么办。
typedef uint64_t ull;
#define E1 1
#define E2 5000000000000000
__global__ void func(ull* num1, ull* num2, ull* sum)
{
for (ull i = *num1; i <= *num2; i++)
{
sum[0] += i;
}
}
int main()
{
ull n1 = E1;
ull n2 = E2;
ull sum = 0;
ull* d_n1;
ull* d_n2;
ull* d_sum;
cudaMalloc(&d_n1, sizeof(ull));
cudaMalloc(&d_n2, sizeof(ull));
cudaMalloc(&d_sum, sizeof(ull));
cudaMemcpy(d_n1, &n1, sizeof(ull), cudaMemcpyHostToDevice);
cudaMemcpy(d_n2, &n2, sizeof(ull), cudaMemcpyHostToDevice);
cudaMemcpy(d_sum, &sum, sizeof(ull), cudaMemcpyHostToDevice);
func <<<1,1000>>> (d_n1, d_n2, d_sum);
cudaMemcpy(&sum, d_sum, sizeof(ull), cudaMemcpyDeviceToHost);
std::cout << sum << std::endl;
cudaFree(d_n1);
cudaFree(d_n2);
return 0;
}
【问题讨论】: