TinyMT CUDA Implementation (Japanese)

English Version

READ ME FIRST

ここで紹介するのは、TinyMTをNVIDIA の GPGPU 環境であるCUDA で実行できるようにしたものです。

このプログラム、TinyMTのCUDA版は、MTGPおよびCURANDに比較して低速です。 それでも、このプログラムはCUDAユーザの役に立つと信じています。

必要環境

このプログラムをコンパイルおよび実行するには、以下の環境が必要です。

以下のものは必要ありません。

オリジナルのC版のTinyMTを使わない場合、tinymtdcの出力結果は TinyMT DATAのページにあります。

Download

TinyMT-cuda-src-1.0.tar.gz

FILES

以下のファイルはユーザの書いたカーネルプログラムに#includeして使うことを 念頭に作られています。また、CUDAの1スレッドにつき、1つのパラメータを使用し、1つの 疑似乱数系列を生成します。

以下のファイルはユーザの書いたホストプログラムとリンクして使うことを念頭に 作られています。

Sample Files and a tool

以下のファイルは、tinymt32_kernel.cuh や tinymt64_kernel.cuh の 関数を呼び出すサンプルカーネルプログラムです。 サンプルプログラムは、サポート対象外であり、また、ユーザはサンプルプログラムが、 私たちの著作権のもとにないと見なして構いません。

以下のファイルは、sample32_kernel.cuやsample64_kernel.cuにある カーネルプログラムを呼び出すサンプルホストプログラムです。

以下のファイルにはcuda 関数を呼び出すホストプログラムのためのユーティリティ 関数が入っています。このファイルはテスト専用です。このファイルの中の エラーハンドリング処理は注意深く設計されていません。

Make executable files of samples and execution

make allとタイプすると以下の4つの実行ファイルが作られます。

doxygenがあれば, make doc とタイプすることによってドキュメントが作れます。

以下のグラフはsample32-testとsample64-testを使って、gnuplotで 作成したグラフです。1億個のfloatおよびdoubleを生成するのに かかった時間をミリ秒で表しています。縦軸はミリ秒、横軸はブロック数です。

graph of tinmt32 output
graph of tinmt64 output