|
 |
プロセッサの処理能力は, 数年前と比べるとかなり向上しています.
しかし, 数値計算などといったプロセッサの能力を多く必要とする分野では,
まだ不満は残ります. だから, できる限りプロセッサの持つポテンシャルを最大限に利用したいと誰もが考えます. またVisualC++ではC言語で書いたプログラムをSIMDに自動で変換してくれないので,
本来プロセッサが持っている能力を最大限に発揮できていないのです.
そこで, このサイトではこういった要求に少しでも応えられるよう研究をしていきたいと考えています.
開発はVisualC++のC言語, インラインアセンブリ,
IA32アーキテクチャに基づいて行います.
またProcessor packを導入済みとします. |
|
|
|
|
 |
| ハンドルネーム |
yosirin-hello |



|
|
| ICQ# |
153658528  |
| 年齢 |
20歳 |
| 経歴 |
1983年1月20日生まれる
2001年3月 工業高校を卒業する
現在 大学に通っている
|
| メッセージ |
アセンブリ言語の勉強を始めたばかりなので効率的なコードになっていない所もあると思うので,
アドバイスをしてもらえたら嬉しいです.
まだまだスキル不足を感じているので日々勉強をして数値計算の研究をしていきたいと考えています. |
| 現在の研究内容 |
SSE2による擬似乱数生成の高速化(Mersenne TwisterのSSE2化), ルンゲクッタ法のSSE化, 常微分方程式のベクトル化,
数学関数をSSE化するプログラム(簡易コンパイラ),
prefetch命令とStreaming Storeに関する研究 |
|
|
|
 |
・SSEによる単精度の数値積分の高速化
SSEで行列の計算の高速化する記事はよくありますが,
SSEで数値積分を高速化させようと試みる記事がないので考えてみることにしました.
結果的に, C言語のものと比べて約4倍以上の高速化に成功しました.
|
|
・重積分におけるモンテカルロ法の有効性
重積分は次元が高くなればなるほど,
高速なコンピュータでさえ重大な計算時間が必要になります.
この問題を解決する1つの方法として,
モンテカルロ法というものがあります.
この記事では, カマボコ形の物体の体積をモンテカルロ法で求めてみる実験をして,
結果をまとめています.
|
|
・SSEによる常微分方程式の並列計算(オイラー法)
SSEで常微分方程式が並列計算することができれば面白いだろうなと思い,
研究することにしました. この方法は, 並列計算させる対象が独立していて,
互いに影響しない単純な場合にのみ有効です.
ゲームなどで, 背景のちょっとした飾りのシミュレーションに向いているかもしれません.
|
|
・SSEによる常微分方程式の並列計算(ルンゲクッタ法) (未完成 : 03/21/2002(木) PM6:00 更新)
オーラー法は実装は簡単ですが, 計算精度が低いことが問題です.
そこで実用で使われているルンゲクッタ法を,
オイラー法の時と同じく, 並列計算させてみようとおもいます.
|
|
・SSEによる単精度の数値積分の高速化(改良版) (未完成 : 04/04/2002(木) PM5:00 更新)
へるみさんのアドバイスで最終的に数値積分は,
C言語でコンパイラの最適化をオンにして比較しても,
SSEを使った方が約15倍高速に動作するようになりました. この数値積分の高速化の研究で,
並列計算のコツが少しわかったような気がします.
|
|
|
|
|
 |
・read-time stamp counter (RDTSC)命令の利用方法
このRDTSC命令を利用すれば, 関数が消費したクロック数を知ることができます.
VTuneなどといったプロファイラを持っていない人にとっては,
プログラムのチューニングをする際に, この命令は欠かすことができないとおもいます |
|
・CPUのクロックの計測
プログラムを実行しているマシンのCPUのクロック数を知ることができれば,
そのマシンの性能がおおよそ知ることができます.
だから, これを応用すればプログラムを実行している環境によって”このプログラムは1GHz以上のCPUで実行されることを推奨します”などといったメッセージを伝えることもできます. |
|
・CSVフォーマットによる計測データのファイル出力
CSVフォーマットを使えば, 計測したデータをある程度構造的にファイル出力することができます.
大量の計測データをファイルにしておきたい場合に便利です.
実際にMicrosoft ExcelでCSVフォーマットで出力したファイルが正しく読み込めるかを試しています.
|
|
・Visual C++のカスタムビルドでNetwide Assembler(NASM)を使用する方法( 03/31/2002(日) AM1:15 完成)
Visual C++のカスタムビルドの機能を使えば,
NASMとVisual C++を連携さけることができ, アセンブリ言語とC,
C++における開発環境をよりよくすることができます. また,
NASMは, Linuxのオブジェクトファイルのフォーマットにも対応しているので,
今後Linuxへ移植を考えている方にとってもNASMは強力な味方になってくれるに違いありません.
|
|
・アラインメントを合わせてメモリーを動的に確保する(08/22/2003)
動的に確保したメモリーブロックをSSEやSSE2
でパフォーマンスを低下させずに使うためには,
ちょっとした工夫が必要です. そこで, 今回はそのテクニックを紹介します
|
 |
|
|
|
 |
|
|
|
 |
 |
|
最終更新日 : 08/22/2003
アラインメントを合わせてメモリーを動的に確保するを追加しました
全ページのリード数が55000hitを超えました(08/22/2003)
     |