1000*1000的矩阵A、B、C,C=A*B

效率可以对比matlab

int m;
int i, j, k;
double r;
double *A, *B, *C;
m = 1000;
A = new double[m*m];
B = new double[m*m];
C = new double[m*m];
//置初值
for (i=0; i<m*m; i++) {
A[i] = 1;
B[i] = 1;
C[i] = 0;
}
int bf; // blocking factor
int jj, kk, im;
int minj, mink;
bf = 48; // 可以修改
for (jj=0; jj<m; jj+=bf)
for (kk=0; kk<m; kk+=bf)
for ( i=0; i<m; ++i) {
minj = (jj+bf)<m ? (jj+bf):m;
for (j=jj; j<minj; ++j) {
r = 0;
im = i*m;
mink = (kk+bf)<m ? (kk+bf):m;
for (k=kk; k<mink; ++k) {
r += A[im+k]*B[k*m+j];
}
C[im+j] += r;
}
}
delete[] A;
delete[] B;
delete[] C;

这个程序比matlab要慢1倍,我曾到网上搜索到一个fortran程序(分块dgemm ),其速度比matlab慢0.5倍左右,不知道有谁能写一个能与matlab媲美的程序?

时间: 2024-11-08 22:30:27

1000*1000的矩阵A、B、C,C=A*B的相关文章

c语言-int G[1000][1000]定义的位置不同会导致不同的结果?

问题描述 int G[1000][1000]定义的位置不同会导致不同的结果? 就是在C语言中定义一个int G[1000][1000]的数组 如果定义在main函数里(函数的后面还有个scanf语句) 结果一运行程序,控制台直接自动结束程序,根本没有获取我的输入 然而我将该数组定义在main函数的外面,执行程序的时候则会正常的进行 问同学说是stackoverflow?求详细的解释 解决方案 你好,我在我机子上试了没有你所说的情况.ps:while(~scanf("%d%d",&

剑指offer:顺时针打印矩阵

剑指offer上的第20题,九度OJ上测试通过. 题目描述: 输入一个矩阵,按照从外向里以顺时针的顺序依次打印出每一个数字,例如,如果输入如下矩阵: 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 则依次打印出数字1,2,3,4,8,12,16,15,14,13,9,5,6,7,11,10. 输入: 输入可能包含多个测试样例,对于每个测试案例, 输入的第一行包括两个整数m和n(1<=m,n<=1000):表示矩阵的维数为m行n列. 返回栏目页:http://www

杨氏矩阵查找

题目为: 在一个二维数组中,每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序.请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数.     例如下面的二维数组就是每行.每列都递增排序,如果在这个数组中查找数字6,则返回True:如果查找数字10,由于数组不含有该数字,则返回False. 1 2 3 4 5 6 7 8 9   输入: 输入的第一行为两个整数m和n(1<=m,n<=1000):代表将要输入的矩阵的行数和列数. 输入的第二行包括一个整数

跟我一起数据挖掘(13)——矩阵分解

矩阵分解 (decomposition, factorization)是将矩阵拆解为数个矩阵的乘积,可分为三角分解.满秩分解.QR分解.Jordan分解和SVD(奇异值)分解等,常见的有三种:1)三角分解法 (Triangular Factorization),2)QR 分解法 (QR Factorization),3)奇异值分解法 (Singular Value Decompostion). 三角分解法 三角分解法是将原正方 (square) 矩阵分解成一个上三角形矩阵 或是排列(permut

分治法-简单矩阵

输出如下所示N*N(1<=N<=10)的数学方阵 输入:6 输出: 1 20 19 18 17 16 2 21 32 31 30 15 3 22 33 36 29 14 4 23 34 35 28 13 5 24 25 26 27 12 6  7  8  9   10  11 思路:利用分治法,逐层填数,先填最外层: 1 20 19 18 17 16 2                     15 3                     14 4                    

1000台MatriMax极限矩阵游戏一体机三小时售罄

7月1日上午,1000台MatriMax极限矩阵游戏一体机三小时售罄,创造京东史上最大销售转化率,这个填补市场空白的产品着实让业界"伙呆"了一把,手慢的小伙伴也开始吐槽了:没买着怎么办?小编获悉,极限矩阵一体机为满足网友需求,深圳工厂"开夜车"紧急补货.今年5月底才放出上市消息的极限矩阵游戏电脑,是由英特尔.微星.英伟达三巨头联手打造,游戏一体机.台式机双胞共出,一时在业界引起不小波澜.其在社会化媒本的公测运动亦是风风火火,可见出品方对此品牌之看重.率先在京东上市的

1000台被抢光极限矩阵游戏一体机“非常有料”

填补市场空白的游戏一体机市场前途如何?7月1日上午,MatriMax极限矩阵游戏一体机给出一份闪亮答卷:1000台产品三小时被抢光.而且创造了京东预售史上最大转化率,证明游戏一体机产品确实瞅准了市场刚需."图像设置全开,剑灵帧数100以上,如此高配置绝对变态"."是革新也是革命"."极限的道路上就是要敢于不合群"--结合极限矩阵游戏一体机上市前,媒体和游戏顶级玩家们均给予的高度评价,我们不难预测游戏电脑领域的这一新品类,将成为一大关注热点,并为游

如何用 JavaScript 作画

本文讲的是如何用 JavaScript 作画, 因为我司给我一个在浏览器中以编程方式来实现绘图的需求,如下图 1.1 所示,我想分享一些用 JavaScript 绘画的要点.实际上,我们画啥呢?答案是任一种图像和图形. 这里有个样例,你可以直接点击 http://draw.soundtooth.cn/ 查看.并拖拽任意图片,放置到红色方框内,点击 "Process" 按钮,启动绘图方法: <iframe width="100%" height="60

TensorFlow入门指南

更多深度文章,请关注:https://yq.aliyun.com/cloud Tensorflow是一种被广泛使用的实现机器学习和其他涉及大量数学运算的算法的库.Tensorflow是由Google开发的,是GitHub上最流行的机器学习库之一.Google几乎在所有应用程序中都使用Tensorflow来实现机器学习.例如,如果您正在使用Google照片或Google语音搜索,则您间接使用Tensorflow模型,它们可以在大型Google硬件集群上工作,并且在感知任务方面功能强大. 这篇文章的