gpt4 book ai didi

c++ - C/CUDA程序输出

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:03:48 26 4
gpt4 key购买 nike

以下是一个 CUDA 编程示例,它基本上是 C 语言,但其中包含 NVidia CUDA 函数。我一直在尝试解释这个代码示例并弄清楚它试图做什么。我的问题是这个程序编译得很好,但是它需要什么参数?例如,这个 CUDA 程序正在 linux 模拟器中运行,但是在运行 ./program 时它返回:

用法:./程序号段错误

程序输入参数是什么。谢谢。

#include <assert.h>
#include <stdio.h>

//#define N 100000

__host__ void saxpy_host(int length, float alpha, float * x, float * y)
{
for (int i = 0; i < length; ++i)
y[i] = alpha*x[i] + y[i];
}

__global__ void saxpy (int length, float alpha, float * x, float * y)
{
int i;
i = blockIdx.x*blockDim.x + threadIdx.x;
if (i < length) y[i] = alpha*x[i]+y[i];
__syncthreads();
}

int main(int argc, char* argv[]) {

if (argc != 2) {
printf("Usage: %s number\n", argv[0]);
return -1;
}

int N = atoi(argv[1]);

// host data
float alpha = 0.5;
float x[N], xback[N];
float y[N], yback[N];

int size;
int i;
int blocks;

// determining size
size = sizeof(float)*N;


// device data
float * dxp, * dyp;


// fill host data
for (i = 0; i < N; i++) {
x[i] = (float) (rand () % 128);
y[i] = (float) (rand () % 256);
}


// Allocating and Moving data to device
cudaMalloc((void**) &dxp, size);
cudaMalloc((void**) &dyp, size);
cudaMemcpy (dxp, x, size, cudaMemcpyHostToDevice);
cudaMemcpy (dyp, y, size, cudaMemcpyHostToDevice);

// size of thread blocks
blocks = (N + 31)/32;
saxpy <<< blocks, 32 >>> (N, alpha, dxp, dyp);

// bring back data
cudaMemcpy (xback, dxp, size, cudaMemcpyDeviceToHost);
cudaMemcpy (yback, dyp, size, cudaMemcpyDeviceToHost);

// Calculating host SAXPY
saxpy_host (N, alpha, (float *) &x, (float *) &y);

// checking computation on host matches computation on GPU
for (i = 0; i < N; i++) {
assert (yback[i] == y[i]) ;
//printf ("%i %f %f \n", i, yback[i], y[i]);
}


// free device data
cudaFree(dxp); cudaFree(dyp);

return 0;
}

最佳答案

int N = atoi(argv[1]);

该程序将单个整数作为命令行参数。 (例如,尝试将其称为 ./program 5。)

然后它计算一个 SAXPY(一个源自早期 BLAS 实现的旧术语,但它被卡住了。它的意思是“单个(精度,又名 float )实数 alpha x 加 y”。)具有维度为 N 的 vector 。 .

关于c++ - C/CUDA程序输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15441130/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com