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 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog