22:42:24 @uaa@social.mikutter.hachune.net
icon

WSL2/A770の方が異様に遅い…
uaa@DESKTOP-251U0UF:~/LPCNet/build.opencl/src$ time cat ~/test.out | ./lpcnet_dec -s > /dev/null
direct split VQ
dec: 3 pred: 0.00 num_stages: 4 mbest: 5 bits_per_frame: 52 frame: 30 ms bit_rate: 1733.33 bits/s
64 1 1 16 128 1152 160 160 160 160
ftest cols = 2002

real 146m16.882s
user 34m56.194s
sys 49m39.194s
uaa@DESKTOP-251U0UF:~/LPCNet/build.opencl/src$

21:06:56 @uaa@social.mikutter.hachune.net
icon

OpenCL* 1.2 の活用: インテル® プロセッサー・グラフィックスでバッファーコピーを最小限に抑えてパフォーマンスを向上する方法 (2014/12/19) isus.jp/products/opencl/opencl

Web site image
OpenCL* 1.2 の活用: インテル® プロセッサー・グラフィックスでバッファーコピーを最小限に抑えてパフォーマンスを向上する方法
20:54:24 @uaa@social.mikutter.hachune.net
icon

同じコードをビルドしなおしても当然結果は変わんない…LinuxからHD630叩いてこの時間なんだけど、WSL2からA770叩いてる方はまだ処理が終わんない…

uaa@emeraude:~/LPCNet/build.opencl/src$ time cat ~/test.out | ./lpcnet_dec -s > /dev/null
direct split VQ
dec: 3 pred: 0.00 num_stages: 4 mbest: 5 bits_per_frame: 52 frame: 30 ms bit_rate: 1733.33 bits/s
64 1 1 16 128 1152 160 160 160 160
ftest cols = 2002

real 9m27.472s
user 5m46.797s
sys 4m29.678s
uaa@emeraude:~/LPCNet/build.opencl/src$

20:17:21 @uaa@social.mikutter.hachune.net
icon

結果としては残念だけど、自分の手でデバイス動かしてる!って感じはあるので全然おっけーです。

20:16:46 @uaa@social.mikutter.hachune.net
icon

LPCNet(OpenCL)、WSL2/Windows11上で動かしてみたけどあんましGPUが仕事してない感じ。でもこうやって動いてるのが可視化できるのは便利。

Attach image
19:42:16 @uaa@social.mikutter.hachune.net
icon

あー、ビルドし直しだこれ(無理やり-lOpenCL突っ込んでビルドしたからそれを再度やるのは面倒すぎる…CMake周りの整備しないとダメっすかそうですかマジやりたくない…)

19:40:06 @uaa@social.mikutter.hachune.net
icon

AVX最適化入れて、i3-13100で4秒未満(i7-7700でも7秒切り)。

15:36:26 @uaa@social.mikutter.hachune.net
2023-05-11 18:47:46 はゆるふ/PizzaPartyENDの投稿 hayulf@misskey.design
icon

このアカウントは、notestockで公開設定になっていません。

14:33:55 @uaa@social.mikutter.hachune.net
icon

Pコア/Eコアの考え方って、ARMのbig.LITTLEだよねえぶっちゃけた話…ヘテロなコアなんて管理面倒じゃーんと思っていたのだけど、OSが頑張ってくれるおかげでその辺もどうにかなってるということなんだろうか。

14:24:12 @uaa@social.mikutter.hachune.net
icon

でもイマドキのi3って一昔前のi7と同じ、4C8Tだし…(震え声

14:23:14 @uaa@social.mikutter.hachune.net
icon

i7-13700KですらRTX4090を回しきれてないって、どんだけのCPU持ってくれば良いんですか…? pc-builds.com/ja/bottleneck-ca

Core i7-13700K と GeForce RTX 4090 は、一般的なタスクに組み込まれています | ボトルネック計算 | PC Builds
14:19:44 @uaa@social.mikutter.hachune.net
icon

ボトルネック計算機…どの程度信用できるかは分からないけど pc-builds.com/ja/bottleneck-ca i3-13100+RX6400だとグラボが弱い、RTX3060はちょうどよい塩梅という表示になってる。RTX3080だとプロセッサが弱い。

ボトルネック計算機 | PC Builds
13:58:25 @uaa@social.mikutter.hachune.net
icon

フレームバッファにBitBLTエンジンが付いてた程度の時代から、随分進歩しましたよねえ…

13:57:22 @uaa@social.mikutter.hachune.net
icon

拡張性を犠牲にして性能爆上がり、という未来は見てみたいけど(けど、ってところにフクザツな感情がにじんでる)

13:56:52 @uaa@social.mikutter.hachune.net
icon

x86でもオンチップメモリなCPUとか出てきてもおかしくなさそうだけど、PC/AT的にそれってどーなんという気がしなくもない。最終的には市場が決めるんだろうけど(M1/M2に限らず、Arm系SoCってオンチップメモリな物はまあまああるし…)。

13:55:03 @uaa@social.mikutter.hachune.net
icon

そもそもASRockからまだ返事来てないし!

13:54:43 @uaa@social.mikutter.hachune.net
icon

なんかArc A770の一件からGeForceに乗り換えよっかなとか考えてしまっていた部分があるけど、意外とグラボ入れない or A380辺りにスペックを下げてもいいのではって気になってきたな…確かに高速な計算機を手にするというロマンはあるんだけど。(時間はまだ少しあるのでのんびり考えます)

13:45:40 @uaa@social.mikutter.hachune.net
icon

処理の内容がGPU向きなのでGPUに任せる(データも何もかもGPU側に預ける)という現状な訳だけど…CPUでもできるようになる、なら別にGPU要らなくね?って流れになるんじゃないかなーって。

13:42:50 @uaa@social.mikutter.hachune.net
icon

あれかなー、NPUがCPUに内蔵って言われてるけど、性能次第ではStable Diffusionみたいな生成AIもCPUだけで(グラボ無しで)やれる時代もそんなに遠くなかったりするんだろうか。

13:38:53 @uaa@social.mikutter.hachune.net
icon

iGPUもうまく活かせば計算機資源として活用できるのにね、とは思うんだけどなかなか難しいのが現実なんだろうなあ。i7-7700上でCPU版のdistributed.netとOpenCL版のを同時に動かすとちょっとスコアが(iGPU分だけ)上積みできるとか…って、GeForce/RADEON載せた方が全っ然速いじゃん、ではあるんだけど。

13:30:03 @uaa@social.mikutter.hachune.net
icon

NPU内蔵CPUってAppleのBionic内蔵~とかあるから大分歴史があると思うんだけど、今後も増えてくんだろうなあ。

13:27:18 @uaa@social.mikutter.hachune.net
2023-08-16 13:25:23 redbrick@HyZERO3強制解約済みの投稿 redbrick@social.mikutter.hachune.net
icon

このアカウントは、notestockで公開設定になっていません。

13:26:26 @uaa@social.mikutter.hachune.net
icon

GPU買うならOpenCLに触ってみるか…そういやLPCNet(ニューラルネットワークを使った音声CODEC)を以前AVX→SSE化したけどこれはGPUで速くなるんだろうか?という疑問があったので愚直にそれを実行してみたという訳です。

ここまで遅くなるとは、と逆に驚いちゃったけど…GPUに演算をさせる場合にどういうところが問題になるのか、というのは少しわかった気がする。

13:08:18 @uaa@social.mikutter.hachune.net
icon

g: VRAM→メインメモリ p:メインメモリ→VRAMで見てみたけど、これは粒度が細かすぎて(転送コストが高すぎて)メインメモリ上でAVXに任せた方が速いに決まってる案件なのかも。

g 1024
g 128
g 1536
g 192
g 2048
g 3072
g 4608
g 512
g 64

p 1024
p 11348
p 1224
p 128
p 1536
p 157184
p 192
p 197120
p 2048
p 3072
p 3264
p 34816
p 416
p 4608
p 479232
p 512
p 576
p 594432
p 64
p 66048
p 98496

11:05:02 @uaa@social.mikutter.hachune.net
icon

uaa@emeraude:~/LPCNet/build.opencl/src$ time cat ~/test.out | ./lpcnet_dec -s > /dev/null
direct split VQ
dec: 3 pred: 0.00 num_stages: 4 mbest: 5 bits_per_frame: 52 frame: 30 ms bit_rate: 1733.33 bits/s
64 1 1 16 128 1152 160 160 160 160
ftest cols = 2002

real 9m30.642s
user 5m33.714s
sys 4m47.241s
uaa@emeraude:~/LPCNet/build.opencl/src$

実装ミスってる可能性もある。

10:57:56 @uaa@social.mikutter.hachune.net
icon

うーん、徒労に終わったか。CPUの方が遥かに速い。

08:04:53 @uaa@social.mikutter.hachune.net
icon

OpenCL側のコードは実行時にコンパイルされるから、.clなファイルをエディタでいじる→a.out実行で反映という…なんというかスクリプト言語的な扱いで試せるのが驚き。

08:00:08 @uaa@social.mikutter.hachune.net
icon

w += hint[i].w_offset + n;ではだめで、w += hint[i].w_offset + (n+2);では動くのは何故だ?

06:41:32 @uaa@social.mikutter.hachune.net
icon

でもなんかOpenCL越しに何かが動いてる、ってことだけは確かっぽい。

06:40:38 @uaa@social.mikutter.hachune.net
icon

ズレてる…?
sparse_sgemv_accum16..............: fail
0 0.000000 1.000000
1 1.000000 2.000000
2 2.000000 0.000000
3 3.000000 1.000000
4 4.000000 2.000000
5 5.000000 3.000000
6 6.000000 4.000000
7 7.000000 5.000000
8 8.000000 6.000000
9 9.000000 7.000000
10 10.000000 8.000000
11 11.000000 9.000000
12 12.000000 10.000000
13 13.000000 11.000000
14 14.000000 12.000000
15 15.000000 13.000000
16 80.000000 74.000000
17 83.000000 77.000000
18 86.000000 80.000000
19 89.000000 83.000000
20 92.000000 86.000000

06:35:54 @uaa@social.mikutter.hachune.net
icon

ベクタエンジンの初期化を実行してなかったのでQueueの作成に失敗してた。sgemv_accum16は動いてるけどsparse_sgemv_accum16に失敗してるな

06:25:35 @uaa@social.mikutter.hachune.net
icon

CL_INVALID_COMMAND_QUEUE(-36)ぅ?

06:06:08 @uaa@social.mikutter.hachune.net
icon

計算結果については分からないけど、なんか動き出したことは分かった。テストコードに組み込んでみて、動くかどうかを確認しても良いかもな…