zoukankan      html  css  js  c++  java
  • CUDA矩阵乘法计算验证

    前面讲了使用CUDA进行矩阵乘法,如何判断计算是否正确呢,因为矩阵很大。这里采用的方法时将一部分数据采样出来输出到文本中查看结果

    在矩阵乘法函数中加入如下测试:

    extern "C" void MatrixMultiplication_CUDA(const float* M,const float* N,float* P,int Width)函数中加入如下代码,注意加在显卡设备数据复制到内存后。

     1 //测试计算结果用
     2     FILE* file1 = fopen("test_M.txt","w");
     3     FILE* file2 = fopen("test_N.txt","w");
     4     FILE* file3 = fopen("test_P.txt","w");
     5     for(int i=0;i<1024;i++) //输出前1024个元素
     6     {
     7         fprintf(file1,"%f ",M[i]); //输出M第一行
     8         fprintf(file2,"%f ",N[i*1024]); //输出N第一列
     9         fprintf(file3,"%f ",P[i]);
    10         if(0==(i+1)%5)
    11         {
    12             fprintf(file1,"\n");
    13             fprintf(file2,"\n");
    14             fprintf(file3,"\n");
    15         }
    16     }
    17     fclose(file1);
    18     fclose(file2);
    19     fclose(file3);

    为了方便测试,将需要计算的矩阵M和N每个元素都赋1.5。

    结果如下:

    可以计算下数组P的元素大小:1.5*1.5*1024=2304。因此由测试可知使用GPU设备计算时准确的。但GPU设备只不支持double数据,如果对精度要求很高的话,可能会有点问题。

  • 相关阅读:
    汽车过沙漠问题【学习笔记】
    极值问题
    双色汉诺塔【分离型】
    二分查找(递归与非递归)
    t2712:字符串移位包含问题
    酒瓶和瓶盖换购新酒
    反转诗句
    字符串的展开
    回文子串[输出所有回文子串]
    最长最短单词
  • 原文地址:https://www.cnblogs.com/Romi/p/2506886.html
Copyright © 2011-2022 走看看