使用可能な 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。私は何を間違っていますか?