Calculating long-range particle interactions with numpy

乱数を使って円周率もどきを求める2

先日試した乱数を使った円周率を求める方法を
numpyを使った方法に置き換えた。

実行結果

numpy使わずにwhileで計算していたまえの処理に較べて15倍位早い結果。全て配列に収めてから処理するとさすがに早い。ただしメモリもバカ喰い。

乱数を使って円周率もどきを求める

乱数を使った円周率もどきを求めてみる

下記のような正方形と内接する円を考える。正方形の1辺は2としておく。この正方形の中にランダムに点を打った際、円の中にも入る確率は 円の面積 / 正方形の面積。つまり、確率  =  π / 4  となる。

 

 

π  =  正方形内にランダムに点を打った           際に円の中に入る確率は  ×  4  

 

 

 

ランダムに打った点が円の中に入ったかどうか?はx座標とy座標にそれぞれ0~1の乱数を与えてやり、sqrt(x^2  + y^2)  が1以下であれば円の中といえる。

 

 

この処理を実装したものが下記

実行結果

それなりに近い値かな?

centos7にてpycudaをインストール(pip3)

pycudaを下記コマンドからインストールを試したところ、、、

エラーでストップ。
pycudaのコンパイル時にcuda.hがないとのメッセージで死んでいる。

このエラーについてググるとコンパイル時のPATH/
CPATH/LIBRARY_PATH等にcudaのpathを追加で
対応可能と出てくるが自分の環境では改善せず。。

自分のところでは、gccのバージョンを上げることでエラーが消えて
インストール成功した。gccの対応バージョンがあるっぽい。

エラー時:gcc version 4.8.5 20150623
成功時 :gcc version 7.3.1 20180303

centos7にcudaをインストール

CUDAはNVIDIAが開発・提供しているGPU向けの汎用並列コンピューティングプラットフォーム。専用のC/C++コンパイラ (nvcc) やライブラリ (API) などが提供されている(wiki)。

NVIDIAのサイトからOS/アーキテクチャにあったToolkitをダウンロード。
https://developer.nvidia.com/cuda-downloads


※wget方式でのコマンドラインが指定される。


acceptと入力してEnter


とりあえず全部にチェック入れてInstall

インストールの際はUIをGUIからCUIに変更しておく(参考)。

 

インストールした結果が下記

centos7でNVIDIAドライバのインストール

centos7にてGeForce GTX 1060を使えるようにする為、
NVIDIAのドライバインストールをする。

 

現在利用可能なVGAの確認

lspci

cpuに搭載されているUHD Graphics 630とGeForce GTX 1060 6GBが認識されていることが確認できる。

 

NVIDIAのサイトから上記に対応したドライバをダウンロード
https://www.nvidia.co.jp/Download/index.aspx?lang=jp

NVIDIA_DL_SITE

 

システム起動時のUIをGUIからCUIに変更しておく
default.targetのリンク先をGUI時のgraphical.targetから
CUI用のmulti-user.targetに変更する。

 

システムに反映させて再起動させる

 

ダウンロードしたドライバをインストールする
bash NVIDIA-Linux-x86_64-470.94.run

 

インストールが完了したら下記コマンドでグラフィックカードの状態を確認することができる。

nvidia-smiの結果