cuda 加法并行计算
CUDA 加法 并行计算
2023-09-14 09:09:25 时间
#include <math.h>
#include <stdio.h>
#include <iostream>
using namespace std;
const double EPSILON = 1.0e-15;
const double a = 1.23;
const double b = 2.34;
const double c = 3.57;
void __global__ add(const double *x, const double *y, double *z, const int N);
void check(const double *z, const int N);
int main(void)
{
const int N = 10000001;
const int M = sizeof(double) * N;
double *h_x = (double*) malloc(M);
double *h_y = (double*) malloc(M);
double *h_z = (double*) malloc(M);
for (int n = 0; n < N; ++n)
{
h_x[n] = a;
h_y[n] = b;
}
double *d_x, *d_y, *d_z;
cudaMalloc((void **)&d_x, M);
cudaMalloc((void **)&d_y, M);
cudaMalloc((void **)&d_z, M);
cudaMemcpy(d_x, h_x, M, cudaMemcpyHostToDevice);
cudaMemcpy(d_y, h_y, M, cudaMemcpyHostToDevice);
const int block_size = 128;
const int grid_size = (N + block_size - 1) / block_size;
add<<<grid_size, block_size>>>(d_x, d_y, d_z, N);
cudaMemcpy(h_z, d_z, M, cudaMemcpyDeviceToHost);
check(h_z, N);
for (int n = 0; n < N; ++n)
{
//cout<<h_z[n]<<endl;
cout<< "hz"<< "["<<n<<"]"<<h_z[n]<<endl;
}
free(h_x);
free(h_y);
free(h_z);
cudaFree(d_x);
cudaFree(d_y);
cudaFree(d_z);
return 0;
}
void __global__ add(const double *x, const double *y, double *z, const int N)
{
const int n = blockDim.x * blockIdx.x + threadIdx.x;
if (n < N)
{
z[n] = x[n] + y[n];
}
}
void check(const double *z, const int N)
{
bool has_error = false;
for (int n = 0; n < N; ++n)
{
if (fabs(z[n] - c) > EPSILON)
{
has_error = true;
}
}
printf("%s\n", has_error ? "Has errors" : "No errors");
}
nvcc add3if.cu -o a3
./a3
相关文章
- CUDA核心数直接腰斩,老黄40系「花式命名」被骂上知乎热搜!
- ubuntu完全卸载CUDA
- Windows系统查看CUDA版本号
- .deb版本cuda安装。
- 【CUDA】cuda安装 (windows版)[通俗易懂]
- AlphAction编译不通过问题:error: command ‘:/home/yst/cudas/cuda-10.0/bin/nvcc‘ failed with exit status 1「建议收
- cuda卸载与安装
- 关于电脑有独立显卡但torch.cuda.is_available()运行出现为False的问题解决方法
- 【BBuf的CUDA笔记】二,解析 OneFlow BatchNorm 相关算子实现
- 更新太快,CUDA 12.0工具包正式发布啦
- 从头开始进行CUDA编程:Numba并行编程的基本概念
- 从头开始进行CUDA编程:流和事件
- ubuntu17.10 安装CUDA详解程序员
- 阿里云HPC升级 tensorfow 1.0之cuda、cudnn、glibc、libcxx详解大数据
- 调试Linux系统中的CUDA程序(linuxcuda调试)
- Linux下 CUDA 编程体验(cudalinux编程)