2014年6月20日金曜日

OpenCLによるGPGPU入門④_GPUの計算ミスについて。

汎用のグラフィックのGPUでは、歩留りを改善する為に、
計算にミスがあってもグラフィックの表示に問題が無ければ出荷するらしい。

GPU 仮想化による自動冗長計算システムの開発

によると、
「コンシューマ向けGPU ではまれに計算ミス
が発生することがわかっている。2009 年に長崎大学の
濱田らが行った研究では、使用した421 枚のGPU の内
およそ1 割にあたる41 枚で計算ミスが発生した。」

とあり、結構な頻度で(計算機として扱うには)不良品が混じっているようだ。

他にも、GPUを長時間駆動すると、熱でメモリーエラーを起こして計算ミスをする、
など、実際に計算機として扱うには少々難しい側面があるようだ。

熱暴走は冗長化、或いは計算ミスしないような温度などの環境が必要だが、
初期不良については何とか見つけ出しておきたい。
単純にGPUのすべての演算器で全ての種類の計算させて、
CPUの検算結果と突き合わせれば分かるのだろうが、
問題は、どうしたら、全ての演算器で全ての演算をした、と見なせるか、だ。
最大並列化数で計算させたらいいのかな……(そんなパラメータあったかな???)


その他の参考URL
retardeeの日記: GPUってわからない
GPGPUで激安スーパーコンピューターを自作する方法

2014年6月19日木曜日

OpenCLによるGPGPU入門①_2

OpenCLのプログラムを書くには、
OpenCLによるGPGPU入門①で示したOpenCLプログラミングの流れ、
から分かるように、
1.でプラットフォームを選択し、
2.でデバイスを選択している。

1.のプラットフォームを選択する、とは、即ち、
どこのメーカーの提供しているソフトウェアを使用してハードをコントロールするのか、
という話で、例えばAMDのATI Streamでは、(Intelも含む)CPUとAMDのGPUを操作できる事が、
(OpenCLプログラムを書いて、情報を取得する事で、)分かる。

間違ってIntelのプラットフォームを選択すると、AMDのGPUは制御できないし、
NVIDIAのプラットフォームを選択しても、AMDのGPUは制御できない。

2.のデバイスの選択では、
先程説明したように、AMDなどのプラットフォームでは複数のデバイス(CPUとGPUなど)が認識されるので、
どのデバイスを使用するのか選択する必要がある。
当然GPUを複数挿している場合は、ここで複数のGPUが認識されると思われるので、
必要に応じて選択する。

以下、実装。

OpenCLによるGPGPU入門③_二次元配列による計算。

DirectShowで取得した画像をOpenCLで画像処理するプログラムを書いた。
(……といっても、まだ、カラーを白黒に変換するだけのテストプログラム。
GPGPU入門といっても、DirectShowを使っている部分は全く別の話(記事)になるのだが、
global_work_sizeに限度がある事に気が付かずに手間取ったついでに、
OpenCLでの二次元配列の扱いについてメモしておく。)

始めは画像を一次元配列として扱い「global_work_size」を「0~1980*1080-1」で回そうとしたのだが、
global_work_sizeが大きすぎるとエラーを吐くので、結局二次元配列として扱い処理した。
(基本的にはglobal_work_sizeに制限は無いのだが、程度問題、という事で。。。)


以下OpenCLでの二次元配列の扱い方&ソースファイル。

2014年6月15日日曜日

周波数変調(FM)に関するメモ。

周波数変調

搬送波Vcは、
Vc = Vcm * sin( ωc * t )
(fc = 2*π*ωc、fc:中心周波数)
とすると、

被変調波Vは、
V = Vcm * sin( ωc * t + Δω * sinωs * t )
   = Vcm * ( n = - ∞ → ∞ )ΣJn(m) * cos( ωc + n * ωs )t

(fs = 2*π*ωs、fs:変調信号の周波数)

J()はベッセル関数(良く分かっていない……)
……ただ、要するに、0~∞の範囲に渡って周波数成分が広がる事を意味する。

2014年6月13日金曜日

初めての音声合成・その②

waveファイルの読み書きについて、

以下のリンクでwaveのファイルフォーマットについて詳しく説明されている。

Waveファイルを入出力してみる

WAV ファイルフォーマット

まずはsin波を出力するコードを書いてみた。
以下ソースコード(環境win7 64bit VC++2012)

初めての音声合成・その①

歌唱合成ソフトは
ALT(これは使えないのでノーカウントかな?)やAquesTone、CeVIO、Sinsy、UTAU、VOCALOIDなど、
少し調べただけでも数多く存在する。

ちょっと自分でもやってみたくなったので、めも。
(その幾つまで続くのやら……。)

Internet Explorer11が起動できない。

どうしようか迷いながらIEをアップデートした結果起動できなくなった。

二回ほどアンインストールとインストールを繰り返してみても変わらず。

結局原因はグラフィックの処理にあって、

2014年6月4日水曜日

デバッグ技術

何処かで読んだデバッグ技術の情報を探していたら、
http://marupeke296.com/Debug_main.html
の情報だった。忘れても良いようにめも。

ブレークポイントの設定 F9

ステップイン     F11
ステップオーバー F10
ステップアウト   Shift + F11

_ASSERT

デバッグウィンドウ(出力ウィンドウ)
OutputDebugString関数

メモリウィンドウ
デバッグ中に、「デバッグ→ウィンドウ→メモリ→」
で表示できる。

コマンドラインビルドによる関数のテストの自動化、の話もあったが、
たぶん使わないのでパス。