結局C++とRustってどっちが良いの? 7traits

■ このスレッドは過去ログ倉庫に格納されています
2023/08/31(木) 12:16:53.23ID:dCL063sE
C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」

っていう雑談スレ。

前スレ: 結局C++とRustってどっちが良いの? 6traits
http://mevius.5ch.net/test/read.cgi/tech/1690610746/

関連スレ(マ板): Google&Microsoft「セキュリティバグの70%はC/C++のメモリ管理ミス。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
2023/09/11(月) 08:49:44.02ID:6xpAyPC+
あなたが何を言おうがWebでRustが流行ることはないからいいんじゃないかな
君の脳内だけでは流行っているようだけど
2023/09/11(月) 08:52:08.60ID:6xpAyPC+
そもそもGC言語であればメモリ安全

メモリが潤沢に存在するWeb環境でなぜわざわざ非GC言語を選択する必要があるの?
マゾとしか言いようがないな

目的と手段が入れ替わった馬鹿

Rustが低レイヤ専用言語という事実をいうと発狂するのは、自分がそれらに携わることが決してないWeb屋だからだろうw
効いちゃった?w
2023/09/11(月) 09:17:00.45ID:54D6Lwwp
>>257
複オジ以上に無知ですね
TypeScriptやGoが使われるようになった理由くらいの一般常識は最低限勉強してからWeb開発について語ってください
2023/09/11(月) 09:24:20.93ID:p7LeL6Qu
メモリ安全とはメモリが少なくても大丈夫ではない
2023/09/11(月) 09:28:56.91ID:6xpAyPC+
自分がWeb屋で低レイヤを一切触ったことがないがこれからはRustだと勝手に妄想を膨らませて無駄に勉強しちゃったけど、Webでは絶対流行らない低レイヤ専用言語だという事実を指摘されて発狂してID変えまくって書き込むアホw

お前は無駄な努力してたんだよw
意味のない努力だよ
2023/09/11(月) 09:36:01.63ID:CzWM7Xpm
用語の意味すら知らないのはカコワルイ
266デフォルトの名無しさん
垢版 |
2023/09/11(月) 09:42:20.49ID:PxJKmT2P
自分で技術選定したことないから表面的なことしか分からないんだな
267デフォルトの名無しさん
垢版 |
2023/09/11(月) 10:01:23.49ID:lXcI/Ajd
>>238
禿堂
2023/09/11(月) 10:01:28.48ID:6xpAyPC+
だからお前のいうWeb開発でRustを採用している企業ってあるの?聞いたことがないんだけど
AWSやCloudflareがお前が勤められるような一般的なWeb企業ではないからな
269デフォルトの名無しさん
垢版 |
2023/09/11(月) 10:02:52.41ID:lXcI/Ajd
>Rust支持者は、現状認識が間違っていて、妄想が激しい。
これは一理ある
270デフォルトの名無しさん
垢版 |
2023/09/11(月) 10:06:46.41ID:lXcI/Ajd
>Rustは難しいとか、Cより安全とかいうことを言っている連中は、残念ながら経験不足
Rustの経験不足か、webの経験不足であるのは間違いないが、なによりプログラマーとしての経験が足りてない

これも一理ある
271デフォルトの名無しさん
垢版 |
2023/09/11(月) 10:08:43.00ID:lXcI/Ajd
>>254
5chって今もSJIS使ってるんだっけ
もうUTF8のDATとかHTML返してくれるようになった?
272デフォルトの名無しさん
垢版 |
2023/09/11(月) 12:53:14.26ID:h3RiCxz0
とりあえず現状行列ライブラリをRustで実装するのは止めてる。理由はsimd命令周りの対応が微妙すぎるから。
今はC言語で行列ライブラリを実装している。Rustへの移植性を考えたデータ構造にはしてある。とりあえず1000×1000の行列積をシングルスレッドで0.034秒で実行できるようになった。手元のIntelMKLと大体同じくらいの速度。まだ、試してない最適化がいくらかあるのでそこら辺を実装したら0.025秒台くらいは目指せそう。行列積の実装で大分スキルがついてきたので固有値問題とか逆行列の計算も実装していきたい。ここら辺のことが一通り終わったらGitHubにソースコードを挙げようと思う。
2023/09/11(月) 13:33:50.47ID:e0SgkFmy
>>272
そのCライブラリをRustアプリから呼べるようにはしないの?
頑張ってね
274デフォルトの名無しさん
垢版 |
2023/09/11(月) 13:38:06.05ID:h3RiCxz0
>>273
今、どうするか検討中。内部の行列積を計算するとことろなどのsimdやアセンブラを直接叩くところ以外は最終的にRust純正を目指していきたい。
2023/09/11(月) 14:56:21.77ID:ph9tsm2Y
>>271
自分で調べろ
https://mevius.5ch.net/tech/dat/
2023/09/11(月) 16:03:47.99ID:lXcI/Ajd
>>275
https://paiza.io/projects/qaPwuRKbL8hEk-wHDWIqXg?language=python3

import requests

urls = [
('https://mevius.5ch.net/tech/dat/', 8),
('https://mevius.5ch.net/tech/dat/1693451813.dat', 54),
('https://mevius.5ch.net/test/read.cgi/tech/1693451813/', 45)]

for (url, l) in urls:
resp = requests.get(url)
ct = resp.headers['Content-Type']
print(f"{url} : {ct}")
tx = resp.text[-l:]
print(f"{tx.encode('latin1') if ct == 'text/plain' else tx}")


https://mevius.5ch.net/tech/dat/ : text/html
</html>

https://mevius.5ch.net/tech/dat/1693451813.dat : text/plain
b'\x8e\xa9\x95\xaa\x82\xc5\x92\xb2\x82\xd7\x82\xeb <br> https://mevius.5ch.net/tech/dat/ <>\n'
https://mevius.5ch.net/test/read.cgi/tech/1693451813/ : text/html; charset=Shift_JIS
5ちゃんねる<br><br><br><br></footer></body></html>

ほんとうにありがとうございました
2023/09/11(月) 17:53:54.58ID:/kk+oPKa
メモリ関係に自信があるわりにはFirefoxでamebaTVを見ると
メモリリークが発生して落ちる件、修正されませんよね
かれこれ一ヶ月くらい経過するのに
2023/09/11(月) 18:31:28.11ID:Xp4QPw8N
それはamebaTVの問題やろ
プロファイリングしろ
2023/09/11(月) 18:48:13.64ID:d+PRxn/f
JavaScript処理系の問題と区別できないレベルの
人がいるんだ
2023/09/11(月) 19:00:36.49ID:ECkhuLcp
Rustを庇うつもりはないが総本山のfirefoxでも
RustよりC/C++の方がステップ数は多いんだよ
更に言うとJavaScriptのステップ数はもっと多い
Rustが原因とは限らない
281デフォルトの名無しさん
垢版 |
2023/09/11(月) 19:05:21.90ID:zwAMgEJb
>>226
スレタイ読み返したら?
282デフォルトの名無しさん
垢版 |
2023/09/11(月) 19:12:24.81ID:zwAMgEJb
スレタイはC++とRustなのに、何故かGoとかJavaScript等とRustの話にすり変わってC++が影に隠れてしまう不思議。
2023/09/11(月) 20:16:38.03ID:MZ4x1aOt
このスレのスレタイは「Rustレスバ会場 ワ無し」だよ
284デフォルトの名無しさん
垢版 |
2023/09/11(月) 20:24:08.02ID:ECkhuLcp
「Rustはこの先生きのこれるか」かと思ってた
2023/09/12(火) 00:56:45.92ID:h9tsc2mb
C++派だが、別にいいんだ
氏んでもRust使わないってまで言ってないんだ、動向は気になるにきまってるので
286デフォルトの名無しさん
垢版 |
2023/09/12(火) 01:43:18.48ID:OkyJ0X+a
AVX512で行列ライブラリ開発するのは止めたわ。発熱がでかくて使えば使うほど性能が低下して全然安定しない。1000×1000の行列積なんてシングルスレッドで100回平均で0.034秒だったのが10000回平均だと0.039秒まで落ちる。
2023/09/12(火) 02:19:08.34ID:k1dOXU9O
質問です
https://play.rust-lang.org/?version=stable&mode=release&edition=2021&gist=ca6d9b3fd1af156c71cc0615ba06ee70
よろしくおながいしまつ
2023/09/12(火) 03:25:57.16ID:t8zMJnwJ
スレチだが、AVX512がすべての命令に対応しているわけじゃないし発熱は命令のせいじゃないしSIMDの話で急にスレッドの話が出てくるのも意味不明だし
一行にバグ詰め込みすぎだろw
2023/09/12(火) 08:42:02.94ID:ApNREiLC
>>287
reqwestのbodyがStringか&'static strを要求するのは
非同期処理が終わるまで送信データが存在することを保証するためだろうから
blockingで処理が終わるまでStringが存在することを外から保証できるなら
&str(&String.as_str())を&'static strにtransmuteすればbodyに使えるはず
本当に安全かは分からん
2023/09/12(火) 11:18:20.04ID:VdHLMOad
>>287
現実の使われ方はどちらかしかない

(1)毎回値が変わる
値が変わるのだからStringを使えばよくて値が変わるのだからcloneは出て来ない

(2)毎回値が同じ
値がずっと同じならば&'static strを使えばよくてcloneは出て来ない

後者にする場合の具体的なコード変更点はこうなる
let j: String = 略;
let j: &'static str = j.leak();
for _i in 0..2 {
 test_client(j)?;
ずっと同じ値を使い続けるならリークさせてもよいわけでStringを&'static strへ安全に変換できる

あとは呼び出し関数側も&'static strに変える
fn test_client(j: &'static str) -> Result<(), Box<dyn Error>> {
291デフォルトの名無しさん
垢版 |
2023/09/12(火) 12:38:51.25ID:OkyJ0X+a
>>288
プログラムとしては正常に動作してるんだよ。これは出力結果をテストして確認もしている。ただ、AVX256に比べてCPUの温度変化を監視すると明らかに温度上昇が確認されるんだよね。自分のPCがそろそろ3年目に突入するってのもあるかもしれないけど、明らかにCPUに良くない影響を及ぼしてる兆候は確認できたし。実際AVX256ベースのプログラムにすると10000回1000×1000の行列積を回してもほとんど100回平均の時と平均実行時間に差がなかった。
292デフォルトの名無しさん
垢版 |
2023/09/12(火) 12:44:50.45ID:OkyJ0X+a
IntelのAVX256ベースに絞ればRustの安定版でも行列ライブラリが開発できそうではあるので、AVX512に対応するかいなかは結構重要な分岐なんですよ。まあ、Armのsimd命令拡張セットにはRustは安定版では対応してないし。AMDに関してはx86アーキテクチャだった気がするのでもしかしたらRustの安定版でも行けるかもしれんけど。
2023/09/12(火) 15:00:04.98ID:Q9fCm6fi
🔥は予想通りだった
294デフォルトの名無しさん
垢版 |
2023/09/12(火) 18:20:02.75ID:9gzYBW0v
>>293
どんな予想?
2023/09/12(火) 20:54:22.07ID:XeofXrcc
>>294
前スレ969ですか?
>mojoを持ちつつPythonを嗜み
2023/09/12(火) 21:46:29.14ID:kYbrMwgz
次のようなトレードオフが異なります。

(1) プリプロセッサ(Cプリプロセッサ、Lex / YACなど)は、おそらく最も重い扱いです。それらは完全に一般的ですが、開発者の経験とツールの統合の点で最悪です。

(2) 一部の言語(LispやRustなど)は、マクロ拡張機能をサポートしており(時には「衛生的」)、構文の拡張と定型的な削減を可能にし、ツールの統合をいくらか改善します。

(3) C ++のようないくつかの古い言語には、ランタイム言語のデュアルである非常に大きく複雑なメタプログラミング言語(テンプレート)があります。これらは習得が著しく難しく、コンパイル時間とエラーメッセージが不十分です。
297デフォルトの名無しさん
垢版 |
2023/09/12(火) 21:54:52.19ID:uAwiXx2o
テンプレートメタプログラミング楽しいよ!
2023/09/12(火) 23:37:42.92ID:Ez0KcXtp
>>296
ChatGPTやん
やっぱ複オジと似てるよな
2023/09/12(火) 23:38:22.02ID:Pu8riC7w
>>296
どういう質問でこの回答出てきたのかぬ
2023/09/12(火) 23:59:02.76ID:q0VrB5Vz
複オジ節

・当たり障りのない事
・周知の客観的事実
・一解釈、不確かな一説
・自説、自分の思い込み
・流布したい嘘

が全て断言調なところ

徐々に自説、嘘を織り込んで行く、
絶対儲かりますと畳み込む詐欺師と区別がつかない
最悪そのものかも知れない

なお上記は複オジ節で書かれている、テンプレ推奨
2023/09/13(水) 00:05:40.15ID:1hA9kn3L
>>296はmojo公式ページ
2023/09/13(水) 00:54:47.03ID:PItzFlj9
機械翻訳の不自然な日本語と同カテゴリだったのかw
2023/09/13(水) 01:01:32.82ID:8tIdE0x0
>>301
faqかなんか?原文かURL おねがいしてイイかぬ
2023/09/13(水) 01:15:01.57ID:vv+/T9XN
>>303
301じゃないけど

https://docs.modular.com/mojo/programming-manual.html#parameterization-compile-time-metaprogramming

>>301が、話のコンテキスト、(4)(5)を意図的に省いたのは?だな

NimはZigと同じ(5)方式っぽい
2023/09/13(水) 01:16:45.03ID:vv+/T9XN
>>304
省いた犯人は>>296
2023/09/13(水) 01:19:32.96ID:vv+/T9XN
これも貼っておきます

We’ve raised $100M to fix AI infrastructure for the world's developers
August 24, 2023
Modular Team
https://www.modular.com/blog/weve-raised-100m-to-fix-ai-infrastructure-for-the-worlds-developers
>led by General Catalyst and filled by existing investors GV (Google Ventures), SV Angel, Greylock, and Factory.

modularは$130m集めた責任ある企業だから嘘大げさはやらないよネ!
2023/09/13(水) 01:23:34.03ID:vv+/T9XN
最新ですね

https://docs.modular.com/mojo/why-mojo.html#a-member-of-the-python-family
>We also benefit from tremendous lessons learned from other languages
>(such as Rust, Swift, Julia, Zig, Nim, etc.)
2023/09/13(水) 01:55:28.58ID:do5ALmVA
トランスパイラは夢がある Cに変換されるやつは人間も読みやすく現実的
2023/09/13(水) 04:44:50.56ID:8tIdE0x0
>>304
ありがとぬ
2023/09/13(水) 10:17:22.08ID:GmHSIqMf
>>298
>>300
mojo公式に対して複オジ呼ばわりワロタ
2023/09/13(水) 10:40:20.50ID:mm/SnZpQ
"複オジ"は、traitなのですよ
2023/09/13(水) 12:53:51.86ID:Ie8e0Rot
翻訳のクソ度がよく似てたんだろ
機械翻訳でももう少しまともなのあるだろうに
2023/09/13(水) 14:32:47.21ID:IHxW8owo
1行目から間違ってるもんな
2023/09/13(水) 21:42:52.00ID:HljQ0S6H
https://docs.modular.com/mojo/notebooks/Matmul.html
> 180.14895626059092 GFLOP/s, a 77052.192096131941 x speedup over Python

行列積のGFLOPS数値があるけど
>>272,286の感想は?
315デフォルトの名無しさん
垢版 |
2023/09/14(木) 10:07:25.21ID:/LryAq71
>>314
このベンチマークはシングルコアではないよね?多分4コア8スレッドとかそんな感じ?
手元のOpenBLASはシングルスレッド計測だと大体60GFLOPSだったよ。自分がAVX512でやってるやつもは65GFLOPS。AVX512なんで、もう少しチューニングすればマックスで80とか90GFLOPSまでは期待できるかもしれない。
316デフォルトの名無しさん
垢版 |
2023/09/14(木) 10:08:17.83ID:/LryAq71
>>315
あと、あくまでもシングルスレッドでのGFLOPSであることには留意してね。
2023/09/14(木) 10:29:06.74ID:iBoAtJWG
>>314は単精度

>>315は倍精度で出している?
318デフォルトの名無しさん
垢版 |
2023/09/14(木) 11:25:47.47ID:/LryAq71
>>317
倍精度。
2023/09/14(木) 12:22:56.03ID:JjtV6D+W
>>318
やはり
単精度マルチスレッドでやると分かるけど
mojoであってもちょっと書いたくらいでは
凄く遅いという事ね

こちらはnumpy openblasで1020GFLOPS位
mojoは150GFLOPS位だった
2023/09/14(木) 12:55:47.67ID:JjtV6D+W
単精度シングルスレッドは
numpyで140GFLOPS位、mojoは40GFLOPS位だったかな
(どっちも1000x1000 float32)

もともと遅いしマルチスレッドの伸びも良くない印象だった

>>315のシングルスレッドは単精度に引き直すと
結構頑張っていると思う
321デフォルトの名無しさん
垢版 |
2023/09/14(木) 13:59:54.79ID:3ROssfnr
このスレ的にはZigはどうなんだに?
2023/09/14(木) 15:09:10.16ID:Y5/q5uFG
Zigもありなんだけどバージョン1.0予定の2025年も遅れるだろうし
便利なC言語という需要がどこまであるのかわからん
正反対な方向のZigとRustだが企業がZigを選ぶのはレアケースだろう
323デフォルトの名無しさん
垢版 |
2023/09/14(木) 18:02:30.25ID:/LryAq71
>>320
AVX512というチートに手を染めててこのGFLOPSは個人的には不満。ただ、自分のノートパソコンのzmmレジスタが16本しかなくて制約がキツすぎて困ってる。512bit長のsimdであればレジスタは最低でも32本は欲しい。16本だとパイプラインハザードの回避がかなりキツイ上ロード命令と置換命令に対して十分に演算命令を積めないのでかなり苦労している。というかAVX512をレジスタ16本はキツイのでAVX256の方で普通にOpenBLASを目指そうかどうかを検討している。
2023/09/14(木) 18:47:08.14ID:fFI/ZuLN
>>323
zmm レジスタは 32本有るはずだが。
2023/09/14(木) 22:26:51.45ID:GWshkXO+
激震のためRust製のゲームエンジンAmethystが注目されてるらしい
https://amethyst.rs/

激震

基本無料のソシャゲ終了のお知らせ。Unity「インストールするならお金払ってね。リセマラも都度料金徴収するから」
https://greta.5ch.net/test/read.cgi/poverty/1694588878/

全ゲーム業界に暗雲 「UNITY税」が始まる事を受け販売中のゲームを削除するとアナウンスするメーカーが出始める
https://greta.5ch.net/test/read.cgi/poverty/1694620134/
2023/09/14(木) 23:17:48.22ID:4BMiRrnl
ふと試したBLISが良い感じ

単精度
OpenBLAS: 1.940ms 1030.853 GFLOP/s
BLIS: 1.983ms 1008.616 GFLOP/s
MKL: 2.654ms 753.593 GFLOP/s

倍精度
OpenBLAS: 4.139ms 483.190 GFLOP/s
BLIS: 3.584ms 557.981 GFLOP/s
MKL: 4.818ms 415.121 GFLOP/s

MKL倍精度は100回毎のサブ平均が350~550で安定していなかった
MKL単精度は安定して遅かった
OpenBLASとBLISが安定して速かった
(1000x1000 10000回平均 マルチスレッド AVX2)

>>323
AVX512はチートと言う程じゃないけど普及度はかなり下がるね
2023/09/15(金) 01:00:20.84ID:ufqLCMQd
>>325
Amethystはだいぶ前に開発止まったはず

アンチOSSの人はこういう激震が好きなんだろうか
2023/09/15(金) 03:25:46.95ID:/EFfpw9T
いい機会なので復活したりするのかもね
https://github.com/amethyst/amethyst

まあ、びっくりしたUnity側が条件変えてくるでしょ
金を生まないインスタンスが想像以上に多いらしい
2023/09/15(金) 09:51:13.34ID:qQe5d8DA
希望的観測を語るのは勝手にすればいいが
実際に注目を集めているのはGodotとUnrealなのであった
330デフォルトの名無しさん
垢版 |
2023/09/15(金) 13:52:46.64ID:mLvjl0rN
>>324
何か調べると自分のPCは16本っぽい。何か最初期のPCはZMMレジスタが32本あったんだけど、途中から発熱のせいで16本になって今ではサーバー用のやつ以外は基本16本って何かに書いてあった気がする。これは勘違い?
2023/09/15(金) 18:05:36.94ID:TsgRoiWh
>>330
一応、EVEX prefix では 32 種類の zmm レジスタ
を区別できるようにはなっているが。
2023/09/15(金) 18:39:42.09ID:ZacIwhCh
この記事ではシリコンダイ上の実体(レジスタファイル)は(1コアあたり)152(144+8)個みたいだよ
https://chipsandcheese.com/2022/06/07/sunny-cove-intels-lost-generation/

AVX512FのISA上で名前で呼び分けるのが32個(zmm0~zmm31)で実行のスケジュール段階で
144個のレジスタファイルに上手く割り振りながらアウトオブオーダー実行しているイメージです

>>323,330
>何か調べると
これの方が興味あるので差し支えなければリンクを...
333デフォルトの名無しさん
垢版 |
2023/09/16(土) 10:27:42.31ID:NyIUl8mq
zmmレジスタが16本しかないやつは極一部のやつらしい。確認したら自分のPCは32本あった。
ところで、zmm0レジスタにdouble型がロードされてるときこれの2番目の要素をzmm1レジスタにブロードキャストすんのって最低でどれくらいのレイテンシーがいるか教えて欲しい。IntelのSimd命令マニュアルとにらめっこしながらやってるけど、命令の内容があまり書いてないので結構困ってる。レイテンシーとかは書いてあるけど。
2023/09/16(土) 21:12:54.47ID:DZ7YkFqT
>>326の計測に使ったblasバインディングがgemmとgemvしか参照していなかったので
行列積素朴実装をgemmの形にしてdllにしたらそのまま計測出来た(gemvは呼び出されていなかった)

f32 NAIVE
ST
3484.623ms 0.616 GFLOP/s
3540.897ms 0.606 GFLOP/s
3567.409ms 0.602 GFLOP/s
MT
178.104ms 12.057 GFLOP/s
178.895ms 12.004 GFLOP/s
177.376ms 12.107 GFLOP/s

f32 tile
ST
31.727ms 67.686 GFLOP/s
32.086ms 66.930 GFLOP/s
32.020ms 67.067 GFLOP/s
MT
4.042ms 531.307 GFLOP/s
3.924ms 547.233 GFLOP/s
4.065ms 528.281 GFLOP/s

f32 BLIS 目標 アーキテクチャ毎にほぼアセンブリで実装されている
ST
14.917ms 143.966 GFLOP/s
14.987ms 143.289 GFLOP/s
15.051ms 142.680 GFLOP/s
MT
2.120ms 1012.808 GFLOP/s
2.145ms 1001.183 GFLOP/s
2.108ms 1018.784 GFLOP/s
2023/09/16(土) 21:14:12.34ID:DZ7YkFqT
f64 NAIVE
ST
4072.215ms 0.527 GFLOP/s
3965.081ms 0.542 GFLOP/s
4069.991ms 0.528 GFLOP/s
MT
284.921ms 7.537 GFLOP/s
297.872ms 7.209 GFLOP/s
271.956ms 7.896 GFLOP/s

f64 tile
ST
72.745ms 29.521 GFLOP/s
72.666ms 29.553 GFLOP/s
72.857ms 29.475 GFLOP/s
MT
9.442ms 227.445 GFLOP/s
9.547ms 224.928 GFLOP/s
9.739ms 220.504 GFLOP/s

f64 BLIS
ST
30.461ms 70.500 GFLOP/s
30.418ms 70.600 GFLOP/s
30.343ms 70.773 GFLOP/s
MT
3.896ms 551.148 GFLOP/s
3.812ms 563.403 GFLOP/s
3.924ms 547.277 GFLOP/s

1024x1024 10回平均
c=a*bのa,bは使いまわし 変数cはループ外で初期化してあるけど 都度既存メモリ破棄、新規アロケート、ゼロ初期化されていた
2023/09/16(土) 21:16:22.52ID:DZ7YkFqT
gemm自体はアロケート済みのcを受け取るだけなので
簡潔に書いてもcメモリの使いまわしが出来る仕組みが欲しい

端数処理をしてない手抜きTileなので1024x1024でやった

>>333
楽しめるかどうかですね
こちらはどうなることやら
2023/09/16(土) 21:22:50.93ID:DZ7YkFqT
64x64 Tile導入時点でコンパイラがAVX2を多用したコードを自動出力した

なんかマルチスレッドの力で押し切るのが手軽
f32はGPUで
f64は個人向けGPUは遅いからCPU多コアかな
338デフォルトの名無しさん
垢版 |
2023/09/16(土) 23:25:02.06ID:NyIUl8mq
野望の段階だけど、Strassenのアルゴリズムとかの行列積高速化のアルゴリズムを効率良く組みたい。再帰的なアルゴリズムは現状のCPUの構造だとかなり難しいんだよね。
今はCだけど、できれば最終的にRustで組みたい。RustのメモリリークやSegmantation fault, メモリの2重解放がないのはスゴい利点だとと思う。今後OSなどの最深部でも行列積の計算が頻繁に呼び出されるようになるだろうからなおのことRustで目標を達成したい。
2023/09/17(日) 06:43:29.46ID:+Vc0mLjX
カーネルで行列積って使うの?
2023/09/17(日) 09:01:47.58ID:2thFGrAB
行列とカーネルを同じ文に書かれると違うほうのカーネルにしか読めん
2023/09/17(日) 10:37:23.77ID:y6GkRZWJ
結論とて現在のRustは糞
来世に期待ってことだよな
2023/09/17(日) 13:55:14.01ID:pImX9Ap1
どんな紙切れでも金塊以上の価値になれる
その結果Youは乱れ万人に対する加害者になっちゃうわな
2023/09/17(日) 14:05:21.39ID:9e7GqZX3
>>341
脈絡なく「結論」とか言っちゃう症状って生まれ変わるまで治らないの?
若いうちならトレーニングで治せそうだけど年取ると無理なのかな
2023/09/17(日) 14:44:07.73ID:+rM6c2qp
>>341
うむ。
zmmレジスタやSIMDの話題もRustに不利な事を
書き込まれたから誤魔化そうとしているのだろうね。
345デフォルトの名無しさん
垢版 |
2023/09/18(月) 03:18:13.11ID:pCHq1yrZ
>>339
AIがOSに組み込まれるようになるので死ぬほど行列積の関数は呼び出されるようになると思う。
346デフォルトの名無しさん
垢版 |
2023/09/18(月) 03:47:49.70ID:k3AGHqct
>>345
別にユーザーランドで良いのでは?
2023/09/18(月) 06:24:20.96ID:BSQ07s8i
スタートレックの世界のコンピュータを目指すならOSに組み込まれるかもね
でもそれはまだ先の話だろう
2023/09/18(月) 10:08:36.50ID:Q0H2wSm7
SIMDなんて非常に簡単で素朴なコードがかけるのに
有利不利なんてないだろ
2023/09/18(月) 10:18:31.61ID:FokkMn3s
そのわりにベンチで差が出る(らしい

スレ的には、いかに上手に・素直にスタブを記述できるかだね
350デフォルトの名無しさん
垢版 |
2023/09/18(月) 12:57:03.60ID:k3AGHqct
>>347
OSにAIが標準装備されるとしても
何でそれをカーネル空間で動かさなきゃならんという話になるのかが分からん
2023/09/18(月) 15:52:05.81ID:ohI7hzcV
>>347
win11にWindows Copilotを搭載することが決定してるので そう先の話でわネエと思いますケドぬ まぁ ドコまでローカルホストでガリガリやらすかまでわ 分からんケドぬ
352デフォルトの名無しさん
垢版 |
2023/09/18(月) 22:42:01.51ID:pCHq1yrZ
>>348
それはアセンブラを直接たたくってこたかな?それって生のポインタをさわることになるからRustの目指す安全性とは結構離れてるよな。第一、データがレジスタのサイズにあわせてアライメントされてないとバグるけど、Rustではアライメントを揃えるのすらunsafe扱いだから。simdを組み込みにするのは果てしなく大変なのでは?全てunsafeにして生のポインタを引数にとるなら話は別だけど。それではもはやRustを使う意味がないし。
2023/09/18(月) 23:18:32.41ID:h2SSCK+Z
>>352
理解できてなさすぎ
Rustは標準ライブラリがunsafeまみれなように
いくらでもunsafeを使ってもいいんだよ
そのうえでsafeな部分を作り出せればそこはRustコンパイラによる保証がつく
だからRustだけがアドバンテージを持つ
354デフォルトの名無しさん
垢版 |
2023/09/18(月) 23:25:10.97ID:TStUf0QM
>>353
理解してると思うよ
煽られてるんだよw
355デフォルトの名無しさん
垢版 |
2023/09/19(火) 00:32:50.44ID:kTo53yXB
行列ライブラリはぶっちゃけRUSTの運営が直接本来実装するべきなんだよね。ものすごい数の安全テストが必要だから。Rustの標準ライブラリのRCはそうやって安全性を担保してるからな。ただRustの質を担保するならRCよりも遥かに安全テストが必要になるとは思う。
356デフォルトの名無しさん
垢版 |
2023/09/19(火) 00:45:08.44ID:CAb8pI9J
blasやlapackのラッパー書けば良いのでは?
357デフォルトの名無しさん
垢版 |
2023/09/19(火) 01:10:39.03ID:kTo53yXB
>>356
メモリリークどうすんの?
2023/09/19(火) 01:28:44.07ID:q6UjSMFh
もうRustの失敗を踏まえた新しい言語の登場を待とうぜ
2023/09/19(火) 01:34:55.82ID:CAb8pI9J
>>357
blasやlapackの中は干からびるくらいに枯れてるやろ
2023/09/19(火) 01:37:08.15ID:1nihRNEN
Rustの目指す安全性ってのと真逆の意味をもつunsafe宣言は
「ここは確率的にunsafeだけど確率を覆すのが人間の仕事」と言ってる
だから確率とか好きそうな人には難しい
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況