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/
探検
結局C++とRustってどっちが良いの? 7traits
■ このスレッドは過去ログ倉庫に格納されています
2023/08/31(木) 12:16:53.23ID:dCL063sE
262デフォルトの名無しさん
2023/09/11(月) 09:17:00.45ID:54D6Lwwp263デフォルトの名無しさん
2023/09/11(月) 09:24:20.93ID:p7LeL6Qu メモリ安全とはメモリが少なくても大丈夫ではない
264デフォルトの名無しさん
2023/09/11(月) 09:28:56.91ID:6xpAyPC+ 自分がWeb屋で低レイヤを一切触ったことがないがこれからはRustだと勝手に妄想を膨らませて無駄に勉強しちゃったけど、Webでは絶対流行らない低レイヤ専用言語だという事実を指摘されて発狂してID変えまくって書き込むアホw
お前は無駄な努力してたんだよw
意味のない努力だよ
お前は無駄な努力してたんだよw
意味のない努力だよ
265デフォルトの名無しさん
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
禿堂
禿堂
268デフォルトの名無しさん
2023/09/11(月) 10:01:28.48ID:6xpAyPC+ だからお前のいうWeb開発でRustを採用している企業ってあるの?聞いたことがないんだけど
AWSやCloudflareがお前が勤められるような一般的なWeb企業ではないからな
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の経験不足であるのは間違いないが、なによりプログラマーとしての経験が足りてない
これも一理ある
Rustの経験不足か、webの経験不足であるのは間違いないが、なによりプログラマーとしての経験が足りてない
これも一理ある
271デフォルトの名無しさん
2023/09/11(月) 10:08:43.00ID:lXcI/Ajd272デフォルトの名無しさん
2023/09/11(月) 12:53:14.26ID:h3RiCxz0 とりあえず現状行列ライブラリをRustで実装するのは止めてる。理由はsimd命令周りの対応が微妙すぎるから。
今はC言語で行列ライブラリを実装している。Rustへの移植性を考えたデータ構造にはしてある。とりあえず1000×1000の行列積をシングルスレッドで0.034秒で実行できるようになった。手元のIntelMKLと大体同じくらいの速度。まだ、試してない最適化がいくらかあるのでそこら辺を実装したら0.025秒台くらいは目指せそう。行列積の実装で大分スキルがついてきたので固有値問題とか逆行列の計算も実装していきたい。ここら辺のことが一通り終わったらGitHubにソースコードを挙げようと思う。
今はC言語で行列ライブラリを実装している。Rustへの移植性を考えたデータ構造にはしてある。とりあえず1000×1000の行列積をシングルスレッドで0.034秒で実行できるようになった。手元のIntelMKLと大体同じくらいの速度。まだ、試してない最適化がいくらかあるのでそこら辺を実装したら0.025秒台くらいは目指せそう。行列積の実装で大分スキルがついてきたので固有値問題とか逆行列の計算も実装していきたい。ここら辺のことが一通り終わったらGitHubにソースコードを挙げようと思う。
273デフォルトの名無しさん
2023/09/11(月) 13:33:50.47ID:e0SgkFmy274デフォルトの名無しさん
2023/09/11(月) 13:38:06.05ID:h3RiCxz0 >>273
今、どうするか検討中。内部の行列積を計算するとことろなどのsimdやアセンブラを直接叩くところ以外は最終的にRust純正を目指していきたい。
今、どうするか検討中。内部の行列積を計算するとことろなどのsimdやアセンブラを直接叩くところ以外は最終的にRust純正を目指していきたい。
275デフォルトの名無しさん
2023/09/11(月) 14:56:21.77ID:ph9tsm2Y276デフォルトの名無しさん
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>
ほんとうにありがとうございました
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>
ほんとうにありがとうございました
277デフォルトの名無しさん
2023/09/11(月) 17:53:54.58ID:/kk+oPKa メモリ関係に自信があるわりにはFirefoxでamebaTVを見ると
メモリリークが発生して落ちる件、修正されませんよね
かれこれ一ヶ月くらい経過するのに
メモリリークが発生して落ちる件、修正されませんよね
かれこれ一ヶ月くらい経過するのに
278デフォルトの名無しさん
2023/09/11(月) 18:31:28.11ID:Xp4QPw8N それはamebaTVの問題やろ
プロファイリングしろ
プロファイリングしろ
279デフォルトの名無しさん
2023/09/11(月) 18:48:13.64ID:d+PRxn/f JavaScript処理系の問題と区別できないレベルの
人がいるんだ
人がいるんだ
280デフォルトの名無しさん
2023/09/11(月) 19:00:36.49ID:ECkhuLcp Rustを庇うつもりはないが総本山のfirefoxでも
RustよりC/C++の方がステップ数は多いんだよ
更に言うとJavaScriptのステップ数はもっと多い
Rustが原因とは限らない
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++が影に隠れてしまう不思議。
283デフォルトの名無しさん
2023/09/11(月) 20:16:38.03ID:MZ4x1aOt このスレのスレタイは「Rustレスバ会場 ワ無し」だよ
284デフォルトの名無しさん
2023/09/11(月) 20:24:08.02ID:ECkhuLcp 「Rustはこの先生きのこれるか」かと思ってた
285デフォルトの名無しさん
2023/09/12(火) 00:56:45.92ID:h9tsc2mb C++派だが、別にいいんだ
氏んでもRust使わないってまで言ってないんだ、動向は気になるにきまってるので
氏んでもRust使わないってまで言ってないんだ、動向は気になるにきまってるので
286デフォルトの名無しさん
2023/09/12(火) 01:43:18.48ID:OkyJ0X+a AVX512で行列ライブラリ開発するのは止めたわ。発熱がでかくて使えば使うほど性能が低下して全然安定しない。1000×1000の行列積なんてシングルスレッドで100回平均で0.034秒だったのが10000回平均だと0.039秒まで落ちる。
287デフォルトの名無しさん
2023/09/12(火) 02:19:08.34ID:k1dOXU9O288デフォルトの名無しさん
2023/09/12(火) 03:25:57.16ID:t8zMJnwJ スレチだが、AVX512がすべての命令に対応しているわけじゃないし発熱は命令のせいじゃないしSIMDの話で急にスレッドの話が出てくるのも意味不明だし
一行にバグ詰め込みすぎだろw
一行にバグ詰め込みすぎだろw
289デフォルトの名無しさん
2023/09/12(火) 08:42:02.94ID:ApNREiLC >>287
reqwestのbodyがStringか&'static strを要求するのは
非同期処理が終わるまで送信データが存在することを保証するためだろうから
blockingで処理が終わるまでStringが存在することを外から保証できるなら
&str(&String.as_str())を&'static strにtransmuteすればbodyに使えるはず
本当に安全かは分からん
reqwestのbodyがStringか&'static strを要求するのは
非同期処理が終わるまで送信データが存在することを保証するためだろうから
blockingで処理が終わるまでStringが存在することを外から保証できるなら
&str(&String.as_str())を&'static strにtransmuteすればbodyに使えるはず
本当に安全かは分からん
290デフォルトの名無しさん
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>> {
現実の使われ方はどちらかしかない
(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回平均の時と平均実行時間に差がなかった。
プログラムとしては正常に動作してるんだよ。これは出力結果をテストして確認もしている。ただ、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の安定版でも行けるかもしれんけど。
293デフォルトの名無しさん
2023/09/12(火) 15:00:04.98ID:Q9fCm6fi 🔥は予想通りだった
294デフォルトの名無しさん
2023/09/12(火) 18:20:02.75ID:9gzYBW0v >>293
どんな予想?
どんな予想?
295デフォルトの名無しさん
2023/09/12(火) 20:54:22.07ID:XeofXrcc296デフォルトの名無しさん
2023/09/12(火) 21:46:29.14ID:kYbrMwgz 次のようなトレードオフが異なります。
(1) プリプロセッサ(Cプリプロセッサ、Lex / YACなど)は、おそらく最も重い扱いです。それらは完全に一般的ですが、開発者の経験とツールの統合の点で最悪です。
(2) 一部の言語(LispやRustなど)は、マクロ拡張機能をサポートしており(時には「衛生的」)、構文の拡張と定型的な削減を可能にし、ツールの統合をいくらか改善します。
(3) C ++のようないくつかの古い言語には、ランタイム言語のデュアルである非常に大きく複雑なメタプログラミング言語(テンプレート)があります。これらは習得が著しく難しく、コンパイル時間とエラーメッセージが不十分です。
(1) プリプロセッサ(Cプリプロセッサ、Lex / YACなど)は、おそらく最も重い扱いです。それらは完全に一般的ですが、開発者の経験とツールの統合の点で最悪です。
(2) 一部の言語(LispやRustなど)は、マクロ拡張機能をサポートしており(時には「衛生的」)、構文の拡張と定型的な削減を可能にし、ツールの統合をいくらか改善します。
(3) C ++のようないくつかの古い言語には、ランタイム言語のデュアルである非常に大きく複雑なメタプログラミング言語(テンプレート)があります。これらは習得が著しく難しく、コンパイル時間とエラーメッセージが不十分です。
297デフォルトの名無しさん
2023/09/12(火) 21:54:52.19ID:uAwiXx2o テンプレートメタプログラミング楽しいよ!
298デフォルトの名無しさん
2023/09/12(火) 23:37:42.92ID:Ez0KcXtp299デフォルトの名無しさん
2023/09/12(火) 23:38:22.02ID:Pu8riC7w >>296
どういう質問でこの回答出てきたのかぬ
どういう質問でこの回答出てきたのかぬ
300デフォルトの名無しさん
2023/09/12(火) 23:59:02.76ID:q0VrB5Vz 複オジ節
・当たり障りのない事
・周知の客観的事実
・一解釈、不確かな一説
・自説、自分の思い込み
・流布したい嘘
が全て断言調なところ
徐々に自説、嘘を織り込んで行く、
絶対儲かりますと畳み込む詐欺師と区別がつかない
最悪そのものかも知れない
なお上記は複オジ節で書かれている、テンプレ推奨
・当たり障りのない事
・周知の客観的事実
・一解釈、不確かな一説
・自説、自分の思い込み
・流布したい嘘
が全て断言調なところ
徐々に自説、嘘を織り込んで行く、
絶対儲かりますと畳み込む詐欺師と区別がつかない
最悪そのものかも知れない
なお上記は複オジ節で書かれている、テンプレ推奨
301デフォルトの名無しさん
2023/09/13(水) 00:05:40.15ID:1hA9kn3L >>296はmojo公式ページ
302デフォルトの名無しさん
2023/09/13(水) 00:54:47.03ID:PItzFlj9 機械翻訳の不自然な日本語と同カテゴリだったのかw
303デフォルトの名無しさん
2023/09/13(水) 01:01:32.82ID:8tIdE0x0 >>301
faqかなんか?原文かURL おねがいしてイイかぬ
faqかなんか?原文かURL おねがいしてイイかぬ
304デフォルトの名無しさん
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)方式っぽい
301じゃないけど
https://docs.modular.com/mojo/programming-manual.html#parameterization-compile-time-metaprogramming
>>301が、話のコンテキスト、(4)(5)を意図的に省いたのは?だな
NimはZigと同じ(5)方式っぽい
305デフォルトの名無しさん
2023/09/13(水) 01:16:45.03ID:vv+/T9XN306デフォルトの名無しさん
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集めた責任ある企業だから嘘大げさはやらないよネ!
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集めた責任ある企業だから嘘大げさはやらないよネ!
307デフォルトの名無しさん
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.)
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.)
308デフォルトの名無しさん
2023/09/13(水) 01:55:28.58ID:do5ALmVA トランスパイラは夢がある Cに変換されるやつは人間も読みやすく現実的
309デフォルトの名無しさん
2023/09/13(水) 04:44:50.56ID:8tIdE0x0 >>304
ありがとぬ
ありがとぬ
310デフォルトの名無しさん
2023/09/13(水) 10:17:22.08ID:GmHSIqMf311デフォルトの名無しさん
2023/09/13(水) 10:40:20.50ID:mm/SnZpQ "複オジ"は、traitなのですよ
312デフォルトの名無しさん
2023/09/13(水) 12:53:51.86ID:Ie8e0Rot 翻訳のクソ度がよく似てたんだろ
機械翻訳でももう少しまともなのあるだろうに
機械翻訳でももう少しまともなのあるだろうに
313デフォルトの名無しさん
2023/09/13(水) 14:32:47.21ID:IHxW8owo 1行目から間違ってるもんな
314デフォルトの名無しさん
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の感想は?
> 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までは期待できるかもしれない。
このベンチマークはシングルコアではないよね?多分4コア8スレッドとかそんな感じ?
手元のOpenBLASはシングルスレッド計測だと大体60GFLOPSだったよ。自分がAVX512でやってるやつもは65GFLOPS。AVX512なんで、もう少しチューニングすればマックスで80とか90GFLOPSまでは期待できるかもしれない。
316デフォルトの名無しさん
2023/09/14(木) 10:08:17.83ID:/LryAq71 >>315
あと、あくまでもシングルスレッドでのGFLOPSであることには留意してね。
あと、あくまでもシングルスレッドでのGFLOPSであることには留意してね。
317デフォルトの名無しさん
2023/09/14(木) 10:29:06.74ID:iBoAtJWG318デフォルトの名無しさん
2023/09/14(木) 11:25:47.47ID:/LryAq71 >>317
倍精度。
倍精度。
319デフォルトの名無しさん
2023/09/14(木) 12:22:56.03ID:JjtV6D+W >>318
やはり
単精度マルチスレッドでやると分かるけど
mojoであってもちょっと書いたくらいでは
凄く遅いという事ね
こちらはnumpy openblasで1020GFLOPS位
mojoは150GFLOPS位だった
やはり
単精度マルチスレッドでやると分かるけど
mojoであってもちょっと書いたくらいでは
凄く遅いという事ね
こちらはnumpy openblasで1020GFLOPS位
mojoは150GFLOPS位だった
320デフォルトの名無しさん
2023/09/14(木) 12:55:47.67ID:JjtV6D+W 単精度シングルスレッドは
numpyで140GFLOPS位、mojoは40GFLOPS位だったかな
(どっちも1000x1000 float32)
もともと遅いしマルチスレッドの伸びも良くない印象だった
>>315のシングルスレッドは単精度に引き直すと
結構頑張っていると思う
numpyで140GFLOPS位、mojoは40GFLOPS位だったかな
(どっちも1000x1000 float32)
もともと遅いしマルチスレッドの伸びも良くない印象だった
>>315のシングルスレッドは単精度に引き直すと
結構頑張っていると思う
321デフォルトの名無しさん
2023/09/14(木) 13:59:54.79ID:3ROssfnr このスレ的にはZigはどうなんだに?
322デフォルトの名無しさん
2023/09/14(木) 15:09:10.16ID:Y5/q5uFG Zigもありなんだけどバージョン1.0予定の2025年も遅れるだろうし
便利なC言語という需要がどこまであるのかわからん
正反対な方向のZigとRustだが企業がZigを選ぶのはレアケースだろう
便利な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を目指そうかどうかを検討している。
AVX512というチートに手を染めててこのGFLOPSは個人的には不満。ただ、自分のノートパソコンのzmmレジスタが16本しかなくて制約がキツすぎて困ってる。512bit長のsimdであればレジスタは最低でも32本は欲しい。16本だとパイプラインハザードの回避がかなりキツイ上ロード命令と置換命令に対して十分に演算命令を積めないのでかなり苦労している。というかAVX512をレジスタ16本はキツイのでAVX256の方で普通にOpenBLASを目指そうかどうかを検討している。
324デフォルトの名無しさん
2023/09/14(木) 18:47:08.14ID:fFI/ZuLN >>323
zmm レジスタは 32本有るはずだが。
zmm レジスタは 32本有るはずだが。
325デフォルトの名無しさん
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/
https://amethyst.rs/
激震
基本無料のソシャゲ終了のお知らせ。Unity「インストールするならお金払ってね。リセマラも都度料金徴収するから」
https://greta.5ch.net/test/read.cgi/poverty/1694588878/
全ゲーム業界に暗雲 「UNITY税」が始まる事を受け販売中のゲームを削除するとアナウンスするメーカーが出始める
https://greta.5ch.net/test/read.cgi/poverty/1694620134/
326デフォルトの名無しさん
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はチートと言う程じゃないけど普及度はかなり下がるね
単精度
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はチートと言う程じゃないけど普及度はかなり下がるね
327デフォルトの名無しさん
2023/09/15(金) 01:00:20.84ID:ufqLCMQd328デフォルトの名無しさん
2023/09/15(金) 03:25:46.95ID:/EFfpw9T いい機会なので復活したりするのかもね
https://github.com/amethyst/amethyst
まあ、びっくりしたUnity側が条件変えてくるでしょ
金を生まないインスタンスが想像以上に多いらしい
https://github.com/amethyst/amethyst
まあ、びっくりしたUnity側が条件変えてくるでしょ
金を生まないインスタンスが想像以上に多いらしい
329デフォルトの名無しさん
2023/09/15(金) 09:51:13.34ID:qQe5d8DA 希望的観測を語るのは勝手にすればいいが
実際に注目を集めているのはGodotとUnrealなのであった
実際に注目を集めているのはGodotとUnrealなのであった
330デフォルトの名無しさん
2023/09/15(金) 13:52:46.64ID:mLvjl0rN >>324
何か調べると自分のPCは16本っぽい。何か最初期のPCはZMMレジスタが32本あったんだけど、途中から発熱のせいで16本になって今ではサーバー用のやつ以外は基本16本って何かに書いてあった気がする。これは勘違い?
何か調べると自分のPCは16本っぽい。何か最初期のPCはZMMレジスタが32本あったんだけど、途中から発熱のせいで16本になって今ではサーバー用のやつ以外は基本16本って何かに書いてあった気がする。これは勘違い?
331デフォルトの名無しさん
2023/09/15(金) 18:05:36.94ID:TsgRoiWh332デフォルトの名無しさん
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
>何か調べると
これの方が興味あるので差し支えなければリンクを...
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命令マニュアルとにらめっこしながらやってるけど、命令の内容があまり書いてないので結構困ってる。レイテンシーとかは書いてあるけど。
ところで、zmm0レジスタにdouble型がロードされてるときこれの2番目の要素をzmm1レジスタにブロードキャストすんのって最低でどれくらいのレイテンシーがいるか教えて欲しい。IntelのSimd命令マニュアルとにらめっこしながらやってるけど、命令の内容があまり書いてないので結構困ってる。レイテンシーとかは書いてあるけど。
334デフォルトの名無しさん
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
行列積素朴実装を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
335デフォルトの名無しさん
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はループ外で初期化してあるけど 都度既存メモリ破棄、新規アロケート、ゼロ初期化されていた
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はループ外で初期化してあるけど 都度既存メモリ破棄、新規アロケート、ゼロ初期化されていた
336デフォルトの名無しさん
2023/09/16(土) 21:16:22.52ID:DZ7YkFqT gemm自体はアロケート済みのcを受け取るだけなので
簡潔に書いてもcメモリの使いまわしが出来る仕組みが欲しい
端数処理をしてない手抜きTileなので1024x1024でやった
>>333
楽しめるかどうかですね
こちらはどうなることやら
簡潔に書いてもcメモリの使いまわしが出来る仕組みが欲しい
端数処理をしてない手抜きTileなので1024x1024でやった
>>333
楽しめるかどうかですね
こちらはどうなることやら
337デフォルトの名無しさん
2023/09/16(土) 21:22:50.93ID:DZ7YkFqT 64x64 Tile導入時点でコンパイラがAVX2を多用したコードを自動出力した
なんかマルチスレッドの力で押し切るのが手軽
f32はGPUで
f64は個人向けGPUは遅いからCPU多コアかな
なんかマルチスレッドの力で押し切るのが手軽
f32はGPUで
f64は個人向けGPUは遅いからCPU多コアかな
338デフォルトの名無しさん
2023/09/16(土) 23:25:02.06ID:NyIUl8mq 野望の段階だけど、Strassenのアルゴリズムとかの行列積高速化のアルゴリズムを効率良く組みたい。再帰的なアルゴリズムは現状のCPUの構造だとかなり難しいんだよね。
今はCだけど、できれば最終的にRustで組みたい。RustのメモリリークやSegmantation fault, メモリの2重解放がないのはスゴい利点だとと思う。今後OSなどの最深部でも行列積の計算が頻繁に呼び出されるようになるだろうからなおのことRustで目標を達成したい。
今はCだけど、できれば最終的にRustで組みたい。RustのメモリリークやSegmantation fault, メモリの2重解放がないのはスゴい利点だとと思う。今後OSなどの最深部でも行列積の計算が頻繁に呼び出されるようになるだろうからなおのことRustで目標を達成したい。
339デフォルトの名無しさん
2023/09/17(日) 06:43:29.46ID:+Vc0mLjX カーネルで行列積って使うの?
340デフォルトの名無しさん
2023/09/17(日) 09:01:47.58ID:2thFGrAB 行列とカーネルを同じ文に書かれると違うほうのカーネルにしか読めん
341デフォルトの名無しさん
2023/09/17(日) 10:37:23.77ID:y6GkRZWJ 結論とて現在のRustは糞
来世に期待ってことだよな
来世に期待ってことだよな
342デフォルトの名無しさん
2023/09/17(日) 13:55:14.01ID:pImX9Ap1 どんな紙切れでも金塊以上の価値になれる
その結果Youは乱れ万人に対する加害者になっちゃうわな
その結果Youは乱れ万人に対する加害者になっちゃうわな
343デフォルトの名無しさん
2023/09/17(日) 14:05:21.39ID:9e7GqZX3344デフォルトの名無しさん
2023/09/17(日) 14:44:07.73ID:+rM6c2qp345デフォルトの名無しさん
2023/09/18(月) 03:18:13.11ID:pCHq1yrZ >>339
AIがOSに組み込まれるようになるので死ぬほど行列積の関数は呼び出されるようになると思う。
AIがOSに組み込まれるようになるので死ぬほど行列積の関数は呼び出されるようになると思う。
346デフォルトの名無しさん
2023/09/18(月) 03:47:49.70ID:k3AGHqct >>345
別にユーザーランドで良いのでは?
別にユーザーランドで良いのでは?
347デフォルトの名無しさん
2023/09/18(月) 06:24:20.96ID:BSQ07s8i スタートレックの世界のコンピュータを目指すならOSに組み込まれるかもね
でもそれはまだ先の話だろう
でもそれはまだ先の話だろう
348デフォルトの名無しさん
2023/09/18(月) 10:08:36.50ID:Q0H2wSm7 SIMDなんて非常に簡単で素朴なコードがかけるのに
有利不利なんてないだろ
有利不利なんてないだろ
349デフォルトの名無しさん
2023/09/18(月) 10:18:31.61ID:FokkMn3s そのわりにベンチで差が出る(らしい
スレ的には、いかに上手に・素直にスタブを記述できるかだね
スレ的には、いかに上手に・素直にスタブを記述できるかだね
350デフォルトの名無しさん
2023/09/18(月) 12:57:03.60ID:k3AGHqct351デフォルトの名無しさん
2023/09/18(月) 15:52:05.81ID:ohI7hzcV >>347
win11にWindows Copilotを搭載することが決定してるので そう先の話でわネエと思いますケドぬ まぁ ドコまでローカルホストでガリガリやらすかまでわ 分からんケドぬ
win11にWindows Copilotを搭載することが決定してるので そう先の話でわネエと思いますケドぬ まぁ ドコまでローカルホストでガリガリやらすかまでわ 分からんケドぬ
352デフォルトの名無しさん
2023/09/18(月) 22:42:01.51ID:pCHq1yrZ >>348
それはアセンブラを直接たたくってこたかな?それって生のポインタをさわることになるからRustの目指す安全性とは結構離れてるよな。第一、データがレジスタのサイズにあわせてアライメントされてないとバグるけど、Rustではアライメントを揃えるのすらunsafe扱いだから。simdを組み込みにするのは果てしなく大変なのでは?全てunsafeにして生のポインタを引数にとるなら話は別だけど。それではもはやRustを使う意味がないし。
それはアセンブラを直接たたくってこたかな?それって生のポインタをさわることになるからRustの目指す安全性とは結構離れてるよな。第一、データがレジスタのサイズにあわせてアライメントされてないとバグるけど、Rustではアライメントを揃えるのすらunsafe扱いだから。simdを組み込みにするのは果てしなく大変なのでは?全てunsafeにして生のポインタを引数にとるなら話は別だけど。それではもはやRustを使う意味がないし。
353デフォルトの名無しさん
2023/09/18(月) 23:18:32.41ID:h2SSCK+Z >>352
理解できてなさすぎ
Rustは標準ライブラリがunsafeまみれなように
いくらでもunsafeを使ってもいいんだよ
そのうえでsafeな部分を作り出せればそこはRustコンパイラによる保証がつく
だからRustだけがアドバンテージを持つ
理解できてなさすぎ
Rustは標準ライブラリがunsafeまみれなように
いくらでもunsafeを使ってもいいんだよ
そのうえでsafeな部分を作り出せればそこはRustコンパイラによる保証がつく
だからRustだけがアドバンテージを持つ
354デフォルトの名無しさん
2023/09/18(月) 23:25:10.97ID:TStUf0QM355デフォルトの名無しさん
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
メモリリークどうすんの?
メモリリークどうすんの?
358デフォルトの名無しさん
2023/09/19(火) 01:28:44.07ID:q6UjSMFh もうRustの失敗を踏まえた新しい言語の登場を待とうぜ
359デフォルトの名無しさん
2023/09/19(火) 01:34:55.82ID:CAb8pI9J >>357
blasやlapackの中は干からびるくらいに枯れてるやろ
blasやlapackの中は干からびるくらいに枯れてるやろ
360デフォルトの名無しさん
2023/09/19(火) 01:37:08.15ID:1nihRNEN Rustの目指す安全性ってのと真逆の意味をもつunsafe宣言は
「ここは確率的にunsafeだけど確率を覆すのが人間の仕事」と言ってる
だから確率とか好きそうな人には難しい
「ここは確率的にunsafeだけど確率を覆すのが人間の仕事」と言ってる
だから確率とか好きそうな人には難しい
361デフォルトの名無しさん
2023/09/19(火) 09:24:27.18ID:kTo53yXB >>360
unsafeのところは人間が死ぬ気でテストして安全性を担保してねって意味合いが強いけどな。だからRCとかARCはとてつもなく厳重なテストを行ったらしい。
unsafeのところは人間が死ぬ気でテストして安全性を担保してねって意味合いが強いけどな。だからRCとかARCはとてつもなく厳重なテストを行ったらしい。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- NY円、一時1ユーロ=180円台まで下落…1999年のユーロ導入以来初 [蚤の市★]
- 【外交】日中関係悪化、長期化の様相 2012年には自動車輸出80%減も ロイター★3 [1ゲットロボ★]
- 国内ホテル、既にキャンセルも 訪日客関連業界、事態見守る ★3 [蚤の市★]
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」★2 [冬月記者★]
- 「どうしようもない」 ため息つくアジアの玄関口 中国の訪日自粛で−福岡市 [蚤の市★]
- NHK、受信料の未払い世帯に督促強化へ 民事手続きの新組織を設置 差し押さえなどの強制執行も ★2 [1ゲットロボ★]
- 高市と安倍の共通点。それは、子供がいないこと。そういう奴が戦争を煽る [805596214]
- 識者「『フリーパレスチナ』とかイキってる連中が台湾の話になると『中国を怒らせるな!』ってなる。ほんと左翼の正義って薄っぺらい」 [279254606]
- 日本株、大暴落!!! [252835186]
- ナルシスト高市早苗、「汚い首」と言われたのがメチャクチャ効いて激昂反発か。関係修復は絶望的に…😰 [153490809]
- 【超悲報】中国への武力行使、世論調査で「賛成」「どちらかといえば賛成」48.8% 「反対」「どちらかといえば反対」の44.2%を上回る [314039747]
- んなっても良いお🏡
