使用可能な RAM に快適に収まるマトリックス サイズを決定します。たとえば、4 GB のマシンを使用している場合、約 800 MB を占めるマトリックスを問題なく格納できるはずです。この値を変数に格納します
Mb
。次の情報を使用して、Mb メガバイトのメモリに格納できる行列の最大次元 N を計算します。
メガバイトには
1024
キロバイトがあるキロバイトは
1024
バイト浮動小数点数は
8 bytes
.
N × N
行列にはN^2
浮動小数点数が含まれます。計算した N を呼び出します
nmax
。(b) 2 つの乱数行列
A
とB
それぞれのサイズを作成しますNmax × Nmax
。MATLAB 関数tic
とを使用しtoc
て、積 の計算にかかる時間 (秒) を決定しますAB
。Nmax × Nmax
行列と行列の積を計算するために必要な浮動小数点演算 (加算と乗算) の数を決定し(2/3)n^3.
ます。この数値を使用して、コンピューターが実行できる 1 秒あたりの浮動小数点演算 (「フロップ」) の数を推定します。これをフロップレートと呼びます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
。私は何を間違っていますか?