kernel函数没有执行,不知道问题出在哪

u010699839 u010699839 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
小弟是初学者,刚刚上手写了一个程序,结果能编译通过但是执行的时候kernel函数根本没有执行,我的系统环境是fedora 19, cuda toolbox 6.0, IDE 是nsight eclipse,可以运行nvidia的范例程序。 后来我就写了一段简单代码看看是不是kernel调用的时候出了问题,我的代码如下:
#include <assert.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include<math.h>
#include<cuda.h>
#include<cuda_runtime.h>
#include"cu_complex_operation.cuh"
#include"chol_common.h"

__global__ void chol_kernel(
double *d_U,
const int n,
const int k )
{
const uint td=blockDim.x*blockIdx.x+threadIdx.x;


*d_U=11111;


}











void chol(
int n,
double *pR)
{

cudaError_t error;



double *d_x
double *y=(double*)malloc(sizeof(double));
double *m=(double*)malloc(sizeof(double));
error=cudaMalloc((void **) &d_x, sizeof(double));
if(error !=cudaSuccess){
printf("cudaMalloc d_U returned error code %d, line(%d)\n", error, __LINE__);
}
error=cudaMemcpy(d_x, y, sizeof(double), cudaMemcpyHostToDevice );
if(error!=cudaSuccess){
printf("cudaMemcpy U to d_U returned error code %d, line(%d)\n", error, __LINE__);
}

chol_kernel<<<1, 1>>>(d_x, n, n);
error=cudaMemcpy(m, d_x, sizeof(double), cudaMemcpyDeviceToHost );
*pR=*m;
free(y);
free(m);
cudaFree(d_x);
}

原本这个程序的kernel实现的是其他功能,现在为了简化问题我就用一个赋值的函数代替了。y是输入,m是输出,照理说m最后输出的应该是11111,但是实际上m输出之后还是0,kernel函数没有实现功能,小弟初次写cuda程序不知道是kernel写的有问题还是host端调用的时候出了问题,看了一些范例程序,也没看出来我这里的问题出在哪,困扰了好几天了。
...全文
评论 8
收藏 已收藏
分享
返回顶部
u010699839
CUDA 591 成员 2,925 内容