2016/03/20

Raspberry Pi2で円周率の計算をやってみた

今度はRaspberry Pi2で計算してみます。(前回はここ

(1)実行環境


 マシン:Raspberry Pi2
 O S:Raspbian

(2)円周率計算プログラムについて


前回と同じく、GMPの「Compute billions of digits of π using GMP!」にあるgmp-chudnovsky.cを使用させて頂きました。

(3)GMPライブラリと円周率計算プログラムのダウンロード、コンパイル


作業フォルダ"pi"を作成し、そこにGMPライブラリと円周率計算プログラムをダウンロード、コンパイルします。

$ mkdir pi
$ cd pi
$ wget https://gmplib.org/download/gmp/gmp-6.1.0.tar.xz
$ tar xvf gmp-6.1.0.tar.xz
$ cd gmp-6.1.0/
$ ./configure
$ make -j4
$ make -j4 check
$ cd ..
$ wget https://gmplib.org/download/misc/gmp-chudnovsky.c
$ cc -Wall -static -O2 -o gmp-chudnovsky gmp-chudnovsky.c -Igmp-6.1.0 -Lgmp-6.1.0/.libs -lgmp -lm

(4)円周率計算プログラムの実行

・円周率1,000桁

円周率表示ありで0.01秒以下でした。

$ time -p ./gmp-chudnovsky 1000 1
#terms=70, depth=8
sieve   time =  0.000
...................................................

bs      time =  0.000
   gcd  time =  0.000
div     time =  0.000
sqrt    time =  0.000
mul     time =  0.000
total   time =  0.000
   P size=1334 digits (1.334000)
   Q size=1327 digits (1.327000)
pi(0,70)=
0.314159265358979 …省略
real 0.00
user 0.00
sys 0.01

・円周率100万桁

円周率表示なしの計算のみで6.15秒でした。

$ time -p ./gmp-chudnovsky 1000000
#terms=70513, depth=18
sieve   time =  0.070
..................................................

bs      time =  4.480
   gcd  time =  0.000
div     time =  0.790
sqrt    time =  0.420
mul     time =  0.300
total   time =  6.060
   P size=1455608 digits (1.455608)
   Q size=1455601 digits (1.455601)
real 6.15
user 6.06
sys 0.09

(5)pi2とB+の比較


    【条件】   
  • 円周率表示なし   
  • gmp-6.1.0   
  • 円周率プログラム https://gmplib.org/download/misc/gmp-chudnovsky.c   
  • コンパイルオプション $ cc -Wall -static -O2 -o gmp-chudnovsky gmp-chudnovsky.c -Igmp-6.1.0 -Lgmp-6.1.0/.libs -lgmp -lm
桁   Pi2  B+
=======
1e3  0.01 0.02
1e4  0.03 0.05
1e5  0.36 0.70
1e6  6.14 13.25
1e7 105.93 235.95
1e8 1,721.64 -(GNU MP: Cannot allocate memory)
・Pi2はB+に比べ2倍程度早いです。
・B+はメモリ不足で1億桁の計算ができませんでした。

【備忘録】時系列データの編集方法(R言語, tidyverse)

TimeSeries.knit 1 サンプルデータ作成 2 日付単位に集計する 2.1 月毎集計 2.2 四半期毎集計 ...