The process of brute force calculation by Coulomb force with multiprocessing and numpy. TEST3

Each result returned by the distributed processing is not made into a PN-sized matrix, but is placed as is. This lightens the processing.

The process of brute force calculation by Coulomb force with multiprocessing and numpy. TEST2

The split process reduced the matrix size as much as possible, but it still eats up too much memory.
Multiprocessing consumes a lot of memory.

The process of brute force calculation by Coulomb force with multiprocessing and numpy. TEST1

The small distributed matrices also eat too much memory because they are only PNxPN in size.
Too slow.

The process of brute force calculation by Coulomb force

The process of brute force calculation by Coulomb force is calculated as a matrix using numpy. In the calculation, each element is calculated in a small matrix and summed up at the end to enable parallel processing later.

Calculating long-range particle interactions with numpy (handmade mesh grid)

Too slow

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