おいも貴婦人ブログ

生物系博士課程満期退学をしたAIエンジニアのブログ。

2015-10-01から1ヶ月間の記事一覧

2次元イジングモデル

ホップフィールドネットワークのプログラムを書いたので、2次元イジングモデルのプログラムも書いてみました。イジングモデルは磁性体を表したモデルです。磁性体は磁石だと考えてもらって結構だと思います。磁石は、熱を与えるとその磁性を失います(つまり…

続:ホップフィールド(Hopfield Network)

大昔にHopfield Networks(HN:この略し方に一般性はありません。)についてのPythonプログラムを書いたが、あまりにも酷かったので書きなおしてみました。HNは連想記憶モデル、言い換えると、教師あり型のパターン認識方法の一種だと考えられます。教師あり型…

Gromacs5.0.6のdistanceを使って、特定のCa原子間距離を計算する

Caの原子番号を取得する gmx make_ndx -f filename.gro コマンドライン上で3のCa選ぶ。quitすると、index.ndxが出力される。 そのファイルの[ C-alpha ]の部分だけを残し、知りたい原子間のみを残す(偶数個でないとダメ)。以下は例 [ C-alpha ] 1 2 原子間の…

素人によるCUDAのお勉強。7

参考にしている本の翻訳版が出てました…。高い...。でも買う価値は大いにあると思います。CUDA C プロフェッショナル プログラミング (impress top gear)作者: John Cheng,Max Grossman,Ty McKercher,森野慎也,株式会社クイープ出版社/メーカー: インプレス…

素人によるCUDAのお勉強。6

cudaプログラミングの時間の計測。sys/time.hのgettimeofdayを使って、CPU上でGPUの実行時間を計測します。グリッドの次元に上限があるため #include <cuda_runtime.h> #include <stdio.h> #include <sys/time.h> #define CHECK(call)\ {\ const cudaError_t error = call;\ if (error != cudaSucc</sys/time.h></stdio.h></cuda_runtime.h>…

素人によるCUDAのお勉強。5

簡単な例としてベクトルの足し算を行います。CPUで同じ計算を実行し、その結果とGPUで計算をした結果があっているか確かめます。 #include <cuda_runtime.h> #include <stdio.h> #define CHECK(call)\ {\ const cudaError_t error = call;\ if (error != cudaSuccess)\ {\ printf("Err</stdio.h></cuda_runtime.h>…

素人によるCUDAのお勉強。4

同期について cudaでカーネル関数を実行している間は、同期を取らない限り、グリッド上で実行されているスレッドが終了しているとは限りません。明示的に同期を取るならば以下の関数があります。 cudaError_t cudaDeviceSynchronize(void); 一方で、暗に同期…

素人によるCUDAのお勉強。3

blockサイズをhost側から制御する方法。 include <cuda_runtime.h> #include <stdio.h> int main(int argc, char **argv){ int nElem = 1024; dim3 block (1024); dim3 grid ((nElem+block.x-1)/block.x); printf("grid.x %d block.x %d \n",grid.x,block.x); block.x = 512; grid.x =</stdio.h></cuda_runtime.h>…

覚えられない単語。ステガノグラフィ

ステガノグラフィが覚えられません。ですので、接頭辞(prefix)を調べてみました。その前に簡単な説明。 クリプトグラフィ(cryptography) 暗号化すること、データを読めないようにする。 ステガノグラフィ(steganography) データを隠してしまうこと。例:電子…

非リボソームペプチド

セントラルドグマの第2の異端者? 細胞の中のタンパク質は、DNA->RNA->タンパク質の順で合成されるのが普通です。その流れを一般的にセントラルドグマ(根本となる概念)といい、このRNA->タンパク質の過程で重要となるのがリボソームです。リボソームは、D…

素人によるCUDAのお勉強。2

CUDAプログラミングを始める前のお話 CUDAのプログラムはGPU上でスタンドアロンで実行されるのではなく、CPUとGPUの両方を使っていることを念頭に置く必要がある。(それゆえ、CUDAプログラミングでは、GPUのアーキテクチャを深く理解しないといけない。)そ…

素人によるCUDAのお勉強。

どうして並列計算をするのか 現在のCPUのクロック周波数は、ほぼ頭打ちです。クロック周波数を増やそうとすると、発熱が起こり、その熱を処理できないためだそうです。では、これからは計算速度をどのように向上させるのかというと、その答えの一つが並列化…

C言語でMPIを使ってみよう。

MPIを勉強していきます。理研や大学の講習会に出たことがあるのですが、自分で凝ったMPIのプログラムを書くことがないので忘れてしまいました。余談ですが、MPIは主にノード間並列をするときに用いる技術です。もちろんノード内の並列も可能ですが、そのコー…

Pythonのmultiprocessingを使って、行列の積を計算しよう。

multiprocessingの使い方を学ぶために、行列の積を計算しました。結果は、絶望的に遅いです。そもそもプログラムに問題があるかも知れません。60x60の行列の積でも数秒かかってしまいます。 以下、コードを部分的に説明していきます。 必要なモジュールのイ…

gmxとMDAnalysisのrmsfの計算結果が合いません...。

この間、紹介したMDanalysisを使って、RMSFを求めてみたところ、やけに大きな値が出てたのでずっと疑問に思っていました。念のために gmx rmsf -f trajectory.file -s toplogy.file で計算した結果と比べてみると明らかに異なってました(10倍くらい...。)(…

Gromacsの解析にMDAnalysisを使ってみよう。

gromacsの計算結果から、MDAnalysisを使ってRMSFを求めてみる。非常に簡単!!! #!/usr/bin/env python import MDAnalysis from MDAnalysis.analysis.rms import RMSF topology='md_0_1.gro' ## PSF,CRD,PDB,GRO trajectory='md_0_1.trr' ## DCD,XTC/TRR unive…

Djangoでアプリを作成する際のバグについて

django-admin.py startapp mysite を実行して、以下のようなエラーが出る場合。 Traceback (most recent call last): File "/home/vagrant/.virtualenvs/py27/bin/django-admin.py", line 5, in <module> management.execute_from_command_line() File "/home/vagran</module>…

easy_installをユーザーモードで使う方法。

wget https://bootstrap.pypa.io/ez_setup.py -O - | python - --user これで、PATHに /home/name/.local/bin を追加するだけ。 ## 使い方 pipをインストールする export PYTHONPATH="/home/name/.local/lib/python3.5/site-packages" easy_install-3.5 -d /…

フィボナッチ数列をマルチプロセッシングで計算する。

前回は、threadingモジュールを使ってフィボナッチ数列を計算しました。今回は、multiprocessingを使いたいと思います。 #!/usr/bin/env python3 import sys, time, random, re, requests import concurrent.futures from multiprocessing import Process, c…

Python3でmultiprocessingを使ってみる。

pythonの並列プログラミングを修得するために、今回はmultiprocessingを使いたい思います。コードは至って簡単。関数1で乱数生成し他のプロセスにデータ送り、そのデータを他のプロセスで生成された関数2が表示します。17.2. multiprocessing — プロセスベ…

Pythonのプログラムをメモリ管理する。

Pythonってメモリ使いすぎる...。てことで、標準モジュールのresourceを使って、使用メモリのサイズを制限しましょう。 #!/usr/bin/env python # coding:utf-8 import resource rsrc = resource.RLIMIT_AS soft, hard = resource.getrlimit(rsrc) ## Memory …

numpyのarrayからwhereを使って、指定した2つ以上の条件の要素を取り出す方法。

まずは、nnumpyp.whereの紹介。 mat =\ [[ 0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 28 29] [30 31 32 33 34 35 36 37 38 39] [40 41 42 43 44 45 46 47 48 49] [50 51 52 53 54 55 56 57 58 59] [60 61 62 63 64 65…

フィボナッチ数列を複数のスレッドを使って実行する。

Python3で並列計算をする場合、multiprocessingを使うことになると思います。このモジュールは、threadingの発展系でAPIが非常に似ているようです。今回は、multiprocessingを理解する前に、threadingモジュールを使ってフィボナッチ数列をスレッド化したい…

numpy.arrayによる2次元配列から任意の列を抽出する方法

2次元配列を扱っていると、ある列だけ取り出したいことはよくあることです。そんなときに、np.arrayを使いましょう。 対象と成る配列は以下のようになります。 mat =\ [[ 0 1 2 3 4 5 6 7 8 9] [10 11 12 13 14 15 16 17 18 19] [20 21 22 23 24 25 26 27 2…