Andy__Zou 2016-01-15 13:29 采纳率: 0%
浏览 1857

用cublas库求矩阵范数,求各位大神看看代码哪里不对

void *device_numofduanyuan;
cublasHandle_t handler;
cudaEvent_t cublas_start,cublas_stop,cula_start,cula_stop;
clock_t begin,end;

begin=clock();
cudaEventCreate(&cublas_start);
cudaEventCreate(&cublas_stop);
cudaEventCreate(&cula_start);
cudaEventCreate(&cula_stop);

//cublasCreate(&handle);
cudaMalloc((void **)&device_numofduanyuan,sizeof(int));
cudaMemset(device_numofduanyuan,0,sizeof(int));

if (type==3||type==0||type==1||type==2)
{

    //float *matVt,*matMt,*matOMEGA;
    //matVt=(float *)malloc(sizeof(float)*bands*width);  //matVt  所有波段的一行数据;
    //matMt=(float *)malloc(sizeof(float)*height*width);
    //matOMEGA=(float *)malloc(sizeof(float)*bands*numofduanyuan);

    matrix_f matVt,matMt,matOMEGA;
    Init_fmatrix(matVt,bands,width);
    Init_fmatrix(matMt,height,width);
    Init_fmatrix(matOMEGA,bands,numofduanyuan);

    float *temp_data=(float *)host_data;
    float *dev_matVt,*dev_matMt,*dev_matOMEGA;
    cudaMalloc((void**)&dev_matVt,sizeof(float)*bands);
    cudaMalloc((void**)&dev_matMt,sizeof(float)*height*width);
    cudaMalloc((void**)&dev_matOMEGA,sizeof(float)*bands*numofduanyuan);

#pragma unroll
for (int i=0;i<height;i++)
{
for (int j=0;j<bands;j++)
{
for (int k=0;k<width;k++)
{
int pos=i*width+k+j*(width*height);
//float temp=host_data[pos];
matVt.mat[j][k]=temp_data[pos];
}
}
cudaMemcpy(dev_matVt,matVt.mat,sizeof(float)*width*bands,cudaMemcpyHostToDevice);
cudaMemcpy(dev_matMt,matMt.mat,sizeof(float)*height*width,cudaMemcpyHostToDevice);
cublasSnrm2(handler,bands,dev_matVt,sizeof(float),dev_matMt);

  • 写回答

1条回答 默认 最新

报告相同问题?

悬赏问题

  • ¥15 stata安慰剂检验作图但是真实值不出现在图上
  • ¥15 c程序不知道为什么得不到结果
  • ¥40 复杂的限制性的商函数处理
  • ¥15 程序不包含适用于入口点的静态Main方法
  • ¥15 素材场景中光线烘焙后灯光失效
  • ¥15 请教一下各位,为什么我这个没有实现模拟点击
  • ¥15 执行 virtuoso 命令后,界面没有,cadence 启动不起来
  • ¥50 comfyui下连接animatediff节点生成视频质量非常差的原因
  • ¥20 有关区间dp的问题求解
  • ¥15 多电路系统共用电源的串扰问题