数値計算におけるスピードと効率の大幅改良
パックアレーテクノロジー
Mathematica 4における最も重要なブレークスルーはパックアレーテクノロジーの導入でしょう.パックアレーはMathematica が実行可能と判断した際の大規模リスト,行列,整数,実数複素数を含む数値テンソルなどの反復操作や分類のための高速かつ効果的な方法です.(統計分析や機械工学におけるほとんどの場合そうであるように,主な制約として数が機械サイズ,つまりマシンの数浮動小数点数によって直接操作できるものだということが挙げられます.)
パックアレーテクノロジーはユーザに透過的です.Mathematica がパックアレーを使うかを内部的に決定します.ユーザが特に指定する必要はありません.もちろんユーザがDeveloper`コンテキストにあるToPackedArrayあるいはFromPackedArrayという関数を使ってこれを上書きすることも可能です.
パックアレーテクノロジーの主な利点は,メモリ効率とスピードです.Mathematica 3とMathematica 4で同じ計算をしてみるとこれはすぐに分かります.
次はMathematica 3で行った大規模計算の例です.まず,400 ラ 400の実数の乱数表を作ります.これには3百万バイト以上かかります.次にMathematica は4002 = 160000の行列要素すべてにスカラー1を加えます.それからこの行列を1000乗します.最後にMathematica は百万の乱数リストを作り,これをソートします.
この場合,Mathematica 3では行列の計算に数秒かかり,百万の乱数をソートするのに30秒以上かかっています.これと同じテストをMathematica 4のパックアレーテクノロジーを用いて行います.
ソートに要する時間はおよそ6分の1,行列指数に要する時間はおよそ20分の1です.さらに,Mathematica 4ではメモリ使用量もおよそ半分で済んでいます.これらの計算でユーザがパックアレーを使うように指定する必要がないことにもご注意ください.Mathematica が独自に判断しているのです.
パックアレーテクノロジーの2大利点 - 数値計算の高速化と大規模計算の処理能力 - は工学デザインとデータ分析のツールとしてのMathematica の有用性をさらに高めるものです.
|