| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 474 人关注过本帖
标题:求教编程中的错误
取消只看楼主 加入收藏
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
结帖率:91.43%
收藏
已结贴  问题点数:40 回复次数:1 
求教编程中的错误
自己用CUDA语言写了一个矩阵乘法,我自己找不出错误,但是结果全是-431602080

#include<stdio.h>
#include<iostream>
#include"cuda_runtime.h"
#define N 10//计算c=a*b
    __global__ void mult(float *dev_a,float *
图片附件: 游客没有浏览图片的权限,请 登录注册
dev_b,float*dev_c,int n);


int main(void)
{
    int i,j;
    float *a,*b,*c,*dev_a,*dev_b,*dev_c;
    a=(float*)malloc(sizeof(float)*N*N);
    b=(float*)malloc(sizeof(float)*N*N);
    c=(float*)malloc(sizeof(float)*N*N);
    cudaMalloc((void**)&dev_a,sizeof(float)*N*N);
    cudaMalloc((void**)&dev_b,sizeof(float)*N*N);
    cudaMalloc((void**)&dev_c,sizeof(float)*N*N);
    for(i=0;i<N;i++)
        for(j=0;j<N;j++)
        {
            a[i*N+j]=i;
            b[i*N+j]=i*i;
        }
        cudaMemcpy(dev_a,a,sizeof(float)*N*N,cudaMemcpyHostToDevice);
        cudaMemcpy(dev_b,b,sizeof(float)*N*N,cudaMemcpyHostToDevice);
        cudaMemcpy(dev_b,b,sizeof(float)*N*N,cudaMemcpyHostToDevice);
        dim3 blocks(1,1);
        dim3 threads(10,10);
        mult<<<blocks,threads>>>(dev_a,dev_b,dev_c,N);
        cudaMemcpy(c,dev_c,sizeof(float)*N*N,cudaMemcpyDeviceToDevice);
        for(i=0;i<N;i++)
        {
            for(j=0;j<N;j++)
                printf("%f\t ",c[i*N+j]);
            printf("\n");
        }
        system("pause");
        free(a);
        free(b);
        free(c);
        cudaFree(dev_a);
        cudaFree(dev_b);
        cudaFree(dev_c);
        return 0;
}

__global__ void mult(float *dev_a,float *dev_b,float*dev_c,int n)
{
    int x=threadIdx.x;
    int y=threadIdx.y;
    float temp=0;
    int i;
    for(i=0;i<N;i++)
        temp+=dev_a[y*n+i]*dev_b[i*n+x];
    dev_c[x+y*n]=temp;
}
搜索更多相关主题的帖子: include 
2013-07-27 23:38
lyl930130
Rank: 3Rank: 3
等 级:论坛游侠
帖 子:323
专家分:111
注 册:2013-5-13
收藏
得分:0 
回复 2楼 love云彩
我已经找到了,cudaMemcpy(c,dev_c,sizeof(float)*N*N,cudaMemcpyDeviceToDevice)
应该是cudaMemcpy(c,dev_c,sizeof(float)*N*N,cudaMemcpyDeviceToHost)
谢谢啊
2013-07-28 02:40
快速回复:求教编程中的错误
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033485 second(s), 9 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved