1. 概要

概要
本ページではPython[1]を用いて科学技術計算系のシミュレータを高速化する技術について、 簡単なサンプルプログラムとともに説明します。

配列指向プログラミング
Pythonでは配列計算を単純なforで記述しただけでは大幅に遅くなります。 そこで配列指向プログラミングの考えが必要になります。

NumPy
Pythonの数値計算用の標準的なライブラリです。 NumPyは豊富な機能を持ち、 NumPyで記述したプログラムはCと同等の速度になり、 さらに自動的にマルチスレッド化されます。

Numba
NumPyで記述することが難しいアルゴリズムに対しては、 JIT(Just In Time)コンパイラー技術を使用するNumbaを使用することができます。 Numbaは並列化機能も持っています。

MPI for Python
並列計算の別の方法として MPI for Python (mpi4py) を用いることができます。 CのMPIと同様に記述することができます。

Numba for CUDA GPUs
GPUを用いて高速に計算するために Numba for CUDA GPUs を用いることができます。 CのCUDAと同様に記述することができます。

CuPy
NumPyで記述されたCPU用のプログラムを簡単な移植作業でGPUに対応させることができます。 GPUで高速に計算することができます。