确定可以轻松放入可用 RAM 的矩阵大小。例如,如果您有一台 4 GB 的机器,您应该能够轻松地存储一个占用大约 800 MB 的矩阵。将此值存储在变量
Mb
中。使用以下信息计算可以存储在 Mb 兆字节内存中的最大矩阵维度 N。
一兆字节有
1024
千字节一千字节是
1024
字节一个浮点数是
8 bytes
。
N × N
矩阵包含N^2
浮点数。调用您计算的 N
nmax
。(b) 创建两个随机矩阵
A
,B
每个矩阵的大小为Nmax × Nmax
。使用 MATLAB 函数tic
和toc
,确定计算乘积 所需的时间(秒)AB
。Nmax × Nmax
确定计算矩阵-矩阵乘积所需的浮点运算(加法和乘法)(2/3)n^3.
的数量 使用此数字来估计您的计算机每秒可以执行的浮点运算(“触发器”)的数量。跟注这个翻牌率flops
。
% Part A
nmax = sqrt((1600*1024*1024)/8); % 8GB of RAM
% Part B
A = (nmax:nmax);
B = (nmax:nmax);
tic
prod = A*B;
prod_time = toc
flops = (2/3)*(prod).^3
一切运行良好,但我觉得我没有为值A
和B
. 我究竟做错了什么?