GPUプログラミングとは、APIライブラリを使ってcodingするのだろうと思っていたのですがそうではなく、CかC++で書いたsourceを、シングルCPU向けにコンパイルするか、マルチCPU向けにコンパイルするかを、コンパイルオプションで切り替えるというお手軽さへと向かっているそうです.なんと便利なんでしょう.
グラボには何個ぐらいのCPUが載っているのかというと、なんと数1000個だそうです.
積和演算の1000回ループがあるとして、
for(i=0;i<1000;i++) s += a[i] * b[i];
この掛け算を1000個のCPUにforkさせるのをGPUのコンパイラがやってくれるというイメージ.確かに高速になりそうです.
a[i]やb[i]はグラボ上の高速DDRか、できればGPUキャッシュに積んでおかないと速度が出ませんから、積和演算をkickする前にメインCPUのDRAM上からPCI-expを通してa[i]b[i]をグラボに転送しなくちゃいけませんが、これが結構なボトルネックになるそうです.
GPUがどんなhardwareなのかについてわたしの予想では、「命令一発で、NxN行列の掛け算、逆行列、固有値 などを吐き出してくれるもの」なのかなーと思ってたんですけど、夢を見過ぎでした.
GPUのhardwareは「積和演算器が数千個」てな代物です.したがって掛け算や逆行列はGPUのcodeで実現するみたいです.
自分の環境でGPUを計算に使うなら、IntelのGPUです.なぜならGeforceとか持ってないから.
Intel GPUを動かすにはC for Metalを使うようです.
なのですが、対応CPUに制限があります.第5世代Broadwell以降じゃないとC for Metalが動きません.残念ながらわたしの手元で動いているマシンは、AMD、Celeron、第2世代、第4世代などであり、使えるマシンが一つもありゃしねぇ.ぎゃふん
IntelのCPUって6500とか10210とかわけわかんない数字がついてますけど、先頭文字が世代を表しているみたいですね.つまり6500は第6世代、12100は第12世代.
i3-12100なんか4coreで、オレのi7-4790(第4世代)よりもbenchmarkが2倍だっつう信じられんセカイだもう.
アキバで安い中古PCを探そうかね?
詰み~
ヤフオク、メルカリなどに、キーボードやLCDに不具合が有るゲーミングノートはJunk扱いでそこそこ出てる。
返信削除外部キーボードや外部ディスプレイ接続で問題無い用途なら安価で実用的かもね。
えーそんなの全然問題ないデス.
削除どーせLinuxインストしてtelnet接続ですもんねー
>GPUプログラミング
返信削除なんか、イメージ的には、
「SETI@home を、1台のパソコンのなかでやっている」
みたいな感じですね。ほとんど「分散コンピューティング」の世界。
※まぁ、本来は、「積和演算(コンボリューション)の高速化」の為のハードウエアなんでしょうけど。
ちなみに、イマドキのCPU(GPUではない)にも、例えば、64ビットを 8ビット×4つの領域に分けて、各々の領域ごとに並列演算する命令(これがいわゆる『MMX』と言われてる命令の実体)とか、ありますが。CPU(というか、実際はALUなんでしょうが)数千個とは、恐れ入りますね。
SETIなつかしー
削除PS3が出た頃にやってました.
さしずめ電気代のボランティアですね.
SETIを騙ってマイニングしてたらけしからんー
murasaki
返信削除演算機はそれほどたくさん入って無いですが、cudaを動かすにはGTX1650というグラボが比較的安くて良いかもです。自分はこれを買ってNVIDIA系の恩恵にあずかっております。
古いgeforce買ってもいいかなとも少し思いつつ・・・
削除murasaki
削除昔の1080ti系などはだいぶ安いかもです。
仕事で顔認識などもやっていますが、CPU演算(cuda off)とcuda onでは随分処理時間が違いますね。2080tiが入っているPCだと更に早いです。もう、何年もまえのグラボですが。
ベクトルプロセッサはエライです.
削除