主要探讨的有两个问题:
1、当矩阵维度为16*16,2048*2048时,可以计算出来(用全1矩阵进行测试),并且加速比大于1(GPU快),可是当矩阵维度提升到4096*4096时,此时会出错(计算不准确,显示器驱动程序已停止响应 并且已成功恢复 ),怎么解决?
2、先前测试了全1矩阵,现在改成随机数矩阵(包括小数和整数),16*16等矩阵都不能得到正确的结果,怎么办?
首先贴出多线程的矩阵乘法代码:
kernel程序:
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include <stdio.h>
#include "matrixMul.h"
#define BLOCK_SIZE 16
// 核函数
__global__ void MatrixMulKernel( double* Md, double* Nd,double* Pd,int WidthM, int WidthN)