「C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
前スレ: 結局C++とRustってどっちが良いの? 3traits
https://mevius.5ch.net/test/read.cgi/tech/1683154196/
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.net/test/read.cgi/prog/1619943288/
探検
結局C++とRustってどっちが良いの? 4traits
■ このスレッドは過去ログ倉庫に格納されています
2023/06/06(火) 19:13:06.15ID:ZuKzBsFa
629デフォルトの名無しさん
2023/06/24(土) 01:32:20.34ID:1dD5h2Tm アメリかは911事件によって、初めて恐怖を味わった。
それにより初めて自由を制限することこそ重要である事を悟った。
彼らは極端なので、超監視社会に移行した。
彼らはやっと、自由を制限しないと、自分の自由も守られない
ことを知った。
世界の国の何週も後を行っている国家。
嘘つき大国で、あらゆることが嘘。
Rust人気も嘘。github人気も嘘。オープンソース人気も嘘。
RedHatが大儲けしていると言うのも嘘。カルト信者の
集団協力により、数値が捏造されているだけ。
それにより初めて自由を制限することこそ重要である事を悟った。
彼らは極端なので、超監視社会に移行した。
彼らはやっと、自由を制限しないと、自分の自由も守られない
ことを知った。
世界の国の何週も後を行っている国家。
嘘つき大国で、あらゆることが嘘。
Rust人気も嘘。github人気も嘘。オープンソース人気も嘘。
RedHatが大儲けしていると言うのも嘘。カルト信者の
集団協力により、数値が捏造されているだけ。
630デフォルトの名無しさん
2023/06/24(土) 01:43:01.82ID:hfFEmYqp631デフォルトの名無しさん
2023/06/24(土) 01:48:07.36ID:1dD5h2Tm632デフォルトの名無しさん
2023/06/24(土) 01:51:03.98ID:hfFEmYqp633デフォルトの名無しさん
2023/06/24(土) 02:19:05.92ID:3hzbY+kw アメリカのハッカー文化は中国の工作だった!?
634デフォルトの名無しさん
2023/06/24(土) 03:10:24.26ID:jT+bc5KP Linuxって寄付がおおきいんじゃなかっけ?
大企業でもその上でアプリを作って儲けようようという算段があるから
インターフェースだけしっかり作ってくれれば自社製品で使うのはそんなに
大変じゃない
日本との文化の違いだな
大企業でもその上でアプリを作って儲けようようという算段があるから
インターフェースだけしっかり作ってくれれば自社製品で使うのはそんなに
大変じゃない
日本との文化の違いだな
635デフォルトの名無しさん
2023/06/24(土) 05:49:32.16ID:S/KOiw3o Rustのndarrayはonesとzerosを高次元のの形状に関して実行速度を計測するとなぜかonesの時がzerosよりも6桁くらい実効時間が遅かった。これ、絶対バグあるな。
636デフォルトの名無しさん
2023/06/24(土) 06:02:34.14ID:aH3683O8 かすだよ
637デフォルトの名無しさん
2023/06/24(土) 06:06:16.85ID:aH3683O8 >>613
HTML/CSS がプログラミング言語部門の二位ってなんの冗談ランキングだ?
HTML/CSS がプログラミング言語部門の二位ってなんの冗談ランキングだ?
638デフォルトの名無しさん
2023/06/24(土) 09:17:43.46ID:gTqPfmEf 数学100点マンが100点をとったのは何十年も前でマイクロソフトの一部の環境しか知らずオープンソースが大嫌いなのか
639デフォルトの名無しさん
2023/06/24(土) 10:03:50.07ID:XV/ZbH2M 非標準ライブラリを弄らないと何も作れないC
unsafeを使わないとライブラリを作れないRust
STLやboostだけでも成立する競プロ
出題範囲内だけで成立する何十年前の数学
unsafeを使わないとライブラリを作れないRust
STLやboostだけでも成立する競プロ
出題範囲内だけで成立する何十年前の数学
640デフォルトの名無しさん
2023/06/24(土) 11:04:11.18ID:1s9t2nQ4 >>639
そろそろunsafeの意味を覚えろよ
unsafe = 人間がコードの安全性を保証しなければいけない部分
C/C++はプログラム全体がunsafeであることが様々な問題を引き起こしてきた
そこでunsafeな部分をできる限り小さく限定することで問題を根本的解決することになった
そろそろunsafeの意味を覚えろよ
unsafe = 人間がコードの安全性を保証しなければいけない部分
C/C++はプログラム全体がunsafeであることが様々な問題を引き起こしてきた
そこでunsafeな部分をできる限り小さく限定することで問題を根本的解決することになった
641デフォルトの名無しさん
2023/06/24(土) 11:11:37.55ID:afjv60iV C/C++は、普通、やっちゃだめなところは避けて使う
当たり前のことを守れないコーダーが現場に大量導入されて今に至る
Rustは、普通、unsafeを最小化して使う
…おなじことになるだろ?
当たり前のことを守れないコーダーが現場に大量導入されて今に至る
Rustは、普通、unsafeを最小化して使う
…おなじことになるだろ?
642デフォルトの名無しさん
2023/06/24(土) 11:32:51.54ID:1s9t2nQ4 >>641
Rustはほとんどのケースで一般プログラマーがunsafeを使う必要がない
もしunsafeを使っていたら厳重にチェックされ必要ないのにunsafeを使うプログラマーは排除される
どうしてもunsafeを避けられない構造が発見されると一般化されるとともにモジュール内に閉じ込められ多数の監視の元に管理される
Rustの標準ライブラリもそうしてできあがった
Rustはほとんどのケースで一般プログラマーがunsafeを使う必要がない
もしunsafeを使っていたら厳重にチェックされ必要ないのにunsafeを使うプログラマーは排除される
どうしてもunsafeを避けられない構造が発見されると一般化されるとともにモジュール内に閉じ込められ多数の監視の元に管理される
Rustの標準ライブラリもそうしてできあがった
643デフォルトの名無しさん
2023/06/24(土) 11:33:07.59ID:hWkUa9G8 デフォルト全危険 人間が責任を持たねばならないのが全域
デフォルト全安全 明示したところだけは人間が責任を持てば良い
同じと見るか違うと見るかは自分次第
ただしチームメンバーのことを信用できるか? チームメンバーが自分を信用していると確信できるか?
ここを考えるとハゲ具合は一目瞭然やろ
他言語バインディング関連は…知らんので全部Rustで置き換えろ
デフォルト全安全 明示したところだけは人間が責任を持てば良い
同じと見るか違うと見るかは自分次第
ただしチームメンバーのことを信用できるか? チームメンバーが自分を信用していると確信できるか?
ここを考えるとハゲ具合は一目瞭然やろ
他言語バインディング関連は…知らんので全部Rustで置き換えろ
644デフォルトの名無しさん
2023/06/24(土) 12:30:06.63ID:YdMK17ri struct Hoge {
Foo* foo;
};
この構造体が所有するfooはこの構造体が所有しているのか?
所有している場合、他に外部で参照しているオブジェクトはないのか?
それは弱参照としての扱いかそれとも所有者として振る舞っているのか?
fooは共有されるのか?
fooの生存期間は?
fooの初期化方法は?
デストラクタなどで勝手に破棄して良いのか?
(他に参照がある場合、ダングリングポインタ発生)
このオブジェクトは変更されるのか?されないのか?
このオブジェクトがコピーされる時の動作は?
クローンすべきなのかムーブすべきなのか
ポインタのコピーで良いのか?
C/C++の問題点はこれに尽きる
何もわからないのだ
C++だともう少し明確になるが問題は変わらない
上記を全てクリアにするために文法や仕組みを考えたらrustになったと言う話
Foo* foo;
};
この構造体が所有するfooはこの構造体が所有しているのか?
所有している場合、他に外部で参照しているオブジェクトはないのか?
それは弱参照としての扱いかそれとも所有者として振る舞っているのか?
fooは共有されるのか?
fooの生存期間は?
fooの初期化方法は?
デストラクタなどで勝手に破棄して良いのか?
(他に参照がある場合、ダングリングポインタ発生)
このオブジェクトは変更されるのか?されないのか?
このオブジェクトがコピーされる時の動作は?
クローンすべきなのかムーブすべきなのか
ポインタのコピーで良いのか?
C/C++の問題点はこれに尽きる
何もわからないのだ
C++だともう少し明確になるが問題は変わらない
上記を全てクリアにするために文法や仕組みを考えたらrustになったと言う話
645デフォルトの名無しさん
2023/06/24(土) 12:53:31.49ID:OQHAeLQi646デフォルトの名無しさん
2023/06/24(土) 12:55:13.50ID:OQHAeLQi647デフォルトの名無しさん
2023/06/24(土) 12:59:38.18ID:OQHAeLQi >>643
>デフォルト全危険 人間が責任を持たねばならないのが全域
>デフォルト全安全 明示したところだけは人間が責任を持てば良い
ネガティブリストの方が扱いやすいが漏れが発生しやすい
大規模になるとポジティブリストより面倒臭いぞ?
>デフォルト全危険 人間が責任を持たねばならないのが全域
>デフォルト全安全 明示したところだけは人間が責任を持てば良い
ネガティブリストの方が扱いやすいが漏れが発生しやすい
大規模になるとポジティブリストより面倒臭いぞ?
648デフォルトの名無しさん
2023/06/24(土) 13:03:08.56ID:OQHAeLQi >>644
おまいはドキュメントも参照せずにAPI利用する糞プログラマ
おまいはドキュメントも参照せずにAPI利用する糞プログラマ
649デフォルトの名無しさん
2023/06/24(土) 13:41:17.82ID:Ne+ocOnc C++ってまともなドキュメントなんてあったっけ
650デフォルトの名無しさん
2023/06/24(土) 13:41:50.49ID:afjv60iV > 必要ないのにunsafeを使うプログラマーは排除される
これができるかどうかだな
ま、unsafe使ったコード全部排除したらいいだけなんだが
これができるかどうかだな
ま、unsafe使ったコード全部排除したらいいだけなんだが
651デフォルトの名無しさん
2023/06/24(土) 13:55:59.31ID:mvYogJe7 >>648
その観点でドキュメントAPIに全面依存の遅れた考えの人がまだいることに驚いた
ドキュメントは書き忘れたり書き間違えたり更新でコードと乖離したりするうえに
ドキュメントを読まない人や読み間違える人や更新された時に追随を忘れるなどミスは多岐に渡る
人間に大きく依存していることが敗因なので可能な限り自動チェック化が進められてきた
その観点でドキュメントAPIに全面依存の遅れた考えの人がまだいることに驚いた
ドキュメントは書き忘れたり書き間違えたり更新でコードと乖離したりするうえに
ドキュメントを読まない人や読み間違える人や更新された時に追随を忘れるなどミスは多岐に渡る
人間に大きく依存していることが敗因なので可能な限り自動チェック化が進められてきた
652デフォルトの名無しさん
2023/06/24(土) 14:13:04.49ID:hfFEmYqp653デフォルトの名無しさん
2023/06/24(土) 14:15:01.22ID:hfFEmYqp654デフォルトの名無しさん
2023/06/24(土) 15:23:36.60ID:mvYogJe7 各企業がコンパイラを乱立し始めると統一のために規格書が必要となる
Rustは大手ITが手を組んでRust Foundationが支える単一コンパイラだから規格書は不要だろう
Rustは大手ITが手を組んでRust Foundationが支える単一コンパイラだから規格書は不要だろう
655デフォルトの名無しさん
2023/06/24(土) 15:32:23.38ID:f99aBnHH 既にrustcとrust-analyzerが異なるコードベースを独自に抱えてしまっていることすら知らずに、彼はそうつぶやくのだった
656デフォルトの名無しさん
2023/06/24(土) 15:59:34.51ID:L0Xo4lse 言語を広めるために規格が必要だった時代があったんだよ
特に異なるプラットフォーム用に異なるコンパイラを各プラットフォームベンダが先んじて作らないといけなかった時代にはね
特に異なるプラットフォーム用に異なるコンパイラを各プラットフォームベンダが先んじて作らないといけなかった時代にはね
657デフォルトの名無しさん
2023/06/24(土) 16:16:21.63ID:XjXA5z9c658デフォルトの名無しさん
2023/06/24(土) 16:22:08.74ID:Ne+ocOnc659デフォルトの名無しさん
2023/06/24(土) 16:33:30.41ID:6hD+tJAm 生ポを使わないとスマポを定義できない点はブーメラン刺さってる
あとは、安全と自称するより何も自称しない方が謙虚だと思うかもしれないが
unsafeな箇所をunsafeと自称するのはもっと謙虚である
あとは、安全と自称するより何も自称しない方が謙虚だと思うかもしれないが
unsafeな箇所をunsafeと自称するのはもっと謙虚である
660デフォルトの名無しさん
2023/06/24(土) 17:25:28.61ID:WA5+ENf3661デフォルトの名無しさん
2023/06/24(土) 17:35:28.23ID:oz8gwXPK ナマポが危険ってのは
どこで必要になるか
どこがスコープでがスコープに入るか、もしくはstaticで参照して解放まで用意するか
どこで使わなくなるか
等の設計ができてないから危険と思うんだよね
こういうのが出来てないとポインタだけ危険とか言っても他の場所でバグらせそうな気しかしない
セマホみたいな排他制御で解放せぬまま進めたり終わらせて起動できなくなったり
さらに設計が出来て無い人からぐちゃぐちゃのソースになりそう
初めからどこで使ってプールするから解放は最後とか決めて書けば解放はほぼできると思うけどな
どこで必要になるか
どこがスコープでがスコープに入るか、もしくはstaticで参照して解放まで用意するか
どこで使わなくなるか
等の設計ができてないから危険と思うんだよね
こういうのが出来てないとポインタだけ危険とか言っても他の場所でバグらせそうな気しかしない
セマホみたいな排他制御で解放せぬまま進めたり終わらせて起動できなくなったり
さらに設計が出来て無い人からぐちゃぐちゃのソースになりそう
初めからどこで使ってプールするから解放は最後とか決めて書けば解放はほぼできると思うけどな
662デフォルトの名無しさん
2023/06/24(土) 17:50:09.49ID:wheR/Gfw >>660
自前のホルダーとファクトリーを定義すればだいたい強制できる。
生ポインタを晒す必要があるときが厳しいけど、global deleter以外はなんとか禁止できる。
c++標準にget()を無くしたsmart ptr欲しい。
自前のホルダーとファクトリーを定義すればだいたい強制できる。
生ポインタを晒す必要があるときが厳しいけど、global deleter以外はなんとか禁止できる。
c++標準にget()を無くしたsmart ptr欲しい。
663デフォルトの名無しさん
2023/06/24(土) 17:52:53.86ID:S/KOiw3o Rustのndarrayの改善点を自分なりに調査してまとめてみた。
1) 配列の型変換のサポートが微妙。
2) ブロードキャスト機能のサポートが微妙。
3) numpyと比べてユーザーが配列の中の型を一々意識する必要がある。
4) pytorchのtensor型が持っているような機能がない。(requires_gradとか)
1) 配列の型変換のサポートが微妙。
2) ブロードキャスト機能のサポートが微妙。
3) numpyと比べてユーザーが配列の中の型を一々意識する必要がある。
4) pytorchのtensor型が持っているような機能がない。(requires_gradとか)
664デフォルトの名無しさん
2023/06/24(土) 20:49:47.56ID:CQgi0HrB665デフォルトの名無しさん
2023/06/24(土) 20:54:27.16ID:CQgi0HrB >>663
あとベクトル演算を自動で使ってくれ
AVX命令ね
https://zenn.dev/termoshtt/books/b4bce1b9ea5e6853cb07/viewer/simd
さらにスレッドを使うオプションも欲しい
あとベクトル演算を自動で使ってくれ
AVX命令ね
https://zenn.dev/termoshtt/books/b4bce1b9ea5e6853cb07/viewer/simd
さらにスレッドを使うオプションも欲しい
666デフォルトの名無しさん
2023/06/24(土) 20:55:59.01ID:CQgi0HrB さらにいうと演算を一度グラフ構造に落とし込んで依存関係を解析し
依存ごとに並列実行してもらえるとありがたい
ここまでやるとガチで速いと思う
依存ごとに並列実行してもらえるとありがたい
ここまでやるとガチで速いと思う
667デフォルトの名無しさん
2023/06/24(土) 21:01:14.04ID:CQgi0HrB どちらにしろrequires_grad入れるならこれをやらないと勾配計算できないから必須
668デフォルトの名無しさん
2023/06/24(土) 23:42:18.72ID:S/KOiw3o >>665
そこら辺はrayonでサポートされてる?
そこら辺はrayonでサポートされてる?
669デフォルトの名無しさん
2023/06/24(土) 23:51:57.35ID:0M7dS181 numpyは自動でAVXとか使うようになってる
670デフォルトの名無しさん
2023/06/25(日) 12:12:20.12ID:FTiE1KXs >>666
requires_gradは実装できそう。ただ、AVX命令は今のところRustの安定版ではサポートしてない感じかな。流石に情報学科の人間ではないからAVX命令とかのハードに近い部分の実装はムズいかな。ただ、型指定に関してはだいぶpythonの様に融通が効く感じにできてるとは思う。
requires_gradは実装できそう。ただ、AVX命令は今のところRustの安定版ではサポートしてない感じかな。流石に情報学科の人間ではないからAVX命令とかのハードに近い部分の実装はムズいかな。ただ、型指定に関してはだいぶpythonの様に融通が効く感じにできてるとは思う。
671デフォルトの名無しさん
2023/06/25(日) 13:02:38.19ID:JOhJHmBJ rustではAVXの取り扱いがむずいの?
相性が悪いとか?
AVX自体は皆が思ってるより難しくない
やってることは大したことないんだけど
配列をポインタでグルグル回すだけ
利用も下請けの関数作ってそこに投げるだけなんだけどね
相性が悪いとか?
AVX自体は皆が思ってるより難しくない
やってることは大したことないんだけど
配列をポインタでグルグル回すだけ
利用も下請けの関数作ってそこに投げるだけなんだけどね
672デフォルトの名無しさん
2023/06/25(日) 13:07:52.16ID:JOhJHmBJ 基本的にこんな流れ
配列AとBがあって
それぞれをポインタなどで指して
AVX命令でロードして計算して結果をどこかに吐き出す
ポインタを進める
これを終わりまで繰り返すだけで汎用性が高い
すでに誰かが書いたコードを丸パクリすることも簡単
誰にでも使える
でもみんな毛嫌いする
配列AとBがあって
それぞれをポインタなどで指して
AVX命令でロードして計算して結果をどこかに吐き出す
ポインタを進める
これを終わりまで繰り返すだけで汎用性が高い
すでに誰かが書いたコードを丸パクリすることも簡単
誰にでも使える
でもみんな毛嫌いする
673デフォルトの名無しさん
2023/06/25(日) 13:25:13.49ID:JOhJHmBJ 問題は都合の良い配列じゃない場合w
674デフォルトの名無しさん
2023/06/25(日) 13:26:14.51ID:IscOqakE675デフォルトの名無しさん
2023/06/25(日) 13:52:05.25ID:eajcjBGp >>672
AVX判ってないだろ
AVX判ってないだろ
676デフォルトの名無しさん
2023/06/25(日) 15:15:05.11ID:jiJG4zxf rustでそこまで型を気にしなくてよくてnumpyと殆どAPIが一緒で実行速度も十分なライブラリができれば、rustはもっと流行ると思う。ということでまずはrustのndarraryクレートベースで作っておいおいndarrayクレートの中身もAVXやrayonで最適化を目指す感じかな。
677デフォルトの名無しさん
2023/06/25(日) 15:46:57.93ID:IUvWuTOb >>670
この本がめちゃくちゃわかりやすかったよ
https://www.cutt.co.jp/book/978-4-87783-387-9.html
この本は数値計算で必要な概念が全部説明されてるしおすすめ
というかこんなニッチな分野独学以外無理
この本がめちゃくちゃわかりやすかったよ
https://www.cutt.co.jp/book/978-4-87783-387-9.html
この本は数値計算で必要な概念が全部説明されてるしおすすめ
というかこんなニッチな分野独学以外無理
678デフォルトの名無しさん
2023/06/25(日) 15:51:36.65ID:Z8A/BhXz unsafe はガン細胞のようなもの
unsafe を散らすのが Rust
unsafe のままそっとじするのが C++
unsafe を散らすのが Rust
unsafe のままそっとじするのが C++
679デフォルトの名無しさん
2023/06/25(日) 15:52:07.68ID:IUvWuTOb 同じ著者のこれもおすすめ
https://www.cutt.co.jp/book/978-4-87783-369-5.html
よく使うAVX命令がほぼ全て説明されてるが機械的なので上の本を読んでからの方が良い
内容はかなり被ってる
https://www.cutt.co.jp/book/978-4-87783-369-5.html
よく使うAVX命令がほぼ全て説明されてるが機械的なので上の本を読んでからの方が良い
内容はかなり被ってる
680デフォルトの名無しさん
2023/06/25(日) 16:02:23.56ID:JOhJHmBJ681デフォルトの名無しさん
2023/06/25(日) 16:07:38.74ID:RcJ+KYyJ AVX512(zmm)は、使えないCPUもあると思う。
Intelでも少し古い場合や、AMDだと最近のものでも
使えない場合があるはず。
GPUだと、コア数が少なくなってもそれなりに動くが、AVXだと
ハングアップするだろう。
Intelでも少し古い場合や、AMDだと最近のものでも
使えない場合があるはず。
GPUだと、コア数が少なくなってもそれなりに動くが、AVXだと
ハングアップするだろう。
682デフォルトの名無しさん
2023/06/25(日) 16:12:23.04ID:JOhJHmBJ SIMDに対応するかどうか判定することもできるので分岐でもなんでもしたらいい
さらにベクタ長を出すこともできる
ループのところでベクタ長で割ってループさせる
ベストプラクティスは知らんけど動く
さらにベクタ長を出すこともできる
ループのところでベクタ長で割ってループさせる
ベストプラクティスは知らんけど動く
683デフォルトの名無しさん
2023/06/25(日) 16:12:55.40ID:IUvWuTOb まあndarrayは使いにくいと思う
684デフォルトの名無しさん
2023/06/25(日) 16:18:49.28ID:RcJ+KYyJ それにIntelのSIMDは、並列化の度合いが少な過ぎる。
AVX512ですら、float32で、やっと16倍個同時では、そんなに高速化
はできない。なぜなら、計算の前と後の処理に時間が掛かるので。
それに科学技術計算では、float64 が基本だから、AVX512ですら、
中核部分ですら8倍にしかならない。
それに8倍といっても、基本的に掛け算や足し算の計算部分だけが
8倍になるだけだし。
実際には、ソースや結果(デスト)のコピーやループしたりするのに時間が掛かる。
GPUだと、計算以外のコピーの部分まで高速化できる可能性がある。
AVX512ですら、float32で、やっと16倍個同時では、そんなに高速化
はできない。なぜなら、計算の前と後の処理に時間が掛かるので。
それに科学技術計算では、float64 が基本だから、AVX512ですら、
中核部分ですら8倍にしかならない。
それに8倍といっても、基本的に掛け算や足し算の計算部分だけが
8倍になるだけだし。
実際には、ソースや結果(デスト)のコピーやループしたりするのに時間が掛かる。
GPUだと、計算以外のコピーの部分まで高速化できる可能性がある。
685デフォルトの名無しさん
2023/06/25(日) 16:22:17.26ID:RcJ+KYyJ Intelも設計の悪さにやっと気付いたらしく「、AVX512は廃止される
らしい。
数%しか速度向上しないのに、電力が23%位上がってしまうのだとか。
だったら、GPUみたいにした方がいい。
GPUだと、コア数に比例して速くなるはずだから、集積度を上げるだけで
速度はいくらでも上がる。問題は電力使用量。
だから、電力を如何に抑えるかが重要になる。
それだのに、電力が異常に上がってしまうAVXは設計が悪すぎる。
そもそも、Intelは命令セットの全体的な設計力には昔から問題が有る。
らしい。
数%しか速度向上しないのに、電力が23%位上がってしまうのだとか。
だったら、GPUみたいにした方がいい。
GPUだと、コア数に比例して速くなるはずだから、集積度を上げるだけで
速度はいくらでも上がる。問題は電力使用量。
だから、電力を如何に抑えるかが重要になる。
それだのに、電力が異常に上がってしまうAVXは設計が悪すぎる。
そもそも、Intelは命令セットの全体的な設計力には昔から問題が有る。
686デフォルトの名無しさん
2023/06/25(日) 16:22:32.80ID:JOhJHmBJ その結論はCPUによる高速化は効率が悪いからしないほうがいいと言うことか?
だったら愚かな人間の考えはやはり愚かと言うことだよ
だったら愚かな人間の考えはやはり愚かと言うことだよ
687デフォルトの名無しさん
2023/06/25(日) 16:25:56.93ID:JOhJHmBJ Intel、超高速AVX-512ソートライブラリを公開、Numpyが10〜17倍高速ソートに対応
masapoco 投稿日:2023年2月16日 16:35
https://texal.jp/2023/02/16/intel-publishes-blazing-fast-avx-512-sorting-library-numpy-switching-to-it-for-1017x-faster-sorts/
masapoco 投稿日:2023年2月16日 16:35
https://texal.jp/2023/02/16/intel-publishes-blazing-fast-avx-512-sorting-library-numpy-switching-to-it-for-1017x-faster-sorts/
688デフォルトの名無しさん
2023/06/25(日) 16:26:26.91ID:RcJ+KYyJ AVXの場合、乗算と除算、加算、減算のような中核部分だけが
速くなるだけ。転送はデータバスのビット数のまま。
だから、限界がある。
データバスが64BIT程度では、どうにもならない。
一方、GPUは、完全に並列化できるので、コア数に比例するような
速度向上が見込めるはずだ。知らんけど。
それに、レイトレーシングの様なものを並列化するのは、SIMDでは
無理が有る。
速くなるだけ。転送はデータバスのビット数のまま。
だから、限界がある。
データバスが64BIT程度では、どうにもならない。
一方、GPUは、完全に並列化できるので、コア数に比例するような
速度向上が見込めるはずだ。知らんけど。
それに、レイトレーシングの様なものを並列化するのは、SIMDでは
無理が有る。
689デフォルトの名無しさん
2023/06/25(日) 16:27:11.57ID:vBYApGL0 CPUとGPUは別売りできるからもしGPUは要らないと思ったらクビにできる
抱き合わせ販売は解雇規制みたいなもの
抱き合わせ販売は解雇規制みたいなもの
690デフォルトの名無しさん
2023/06/25(日) 16:28:46.84ID:RcJ+KYyJ >>686
CPUによる高速化もやるべきだけど、SIMDはとても扱いにくい。
効果が小さいのに、知るべき命令数が多すぎるし、分かりにくいし。
しかも、たかだか中核部分ですら16倍にしかならない。
しかし、それをするための準備にオーバーヘッドが大きすぎて、
典型的には1.3倍とかにしかならないらしい。
CPUによる高速化もやるべきだけど、SIMDはとても扱いにくい。
効果が小さいのに、知るべき命令数が多すぎるし、分かりにくいし。
しかも、たかだか中核部分ですら16倍にしかならない。
しかし、それをするための準備にオーバーヘッドが大きすぎて、
典型的には1.3倍とかにしかならないらしい。
691デフォルトの名無しさん
2023/06/25(日) 16:30:01.82ID:0IEJDuKo そもそもnumpyはBLASのラッパだということを理解してるか?
692デフォルトの名無しさん
2023/06/25(日) 16:32:49.75ID:JOhJHmBJ SIMDでもなんでもかんでも早くなるわけでもない
ただ自分のところではメソッドレベルで処理速度が80倍近くまで上がったものもあった
全体に占める処理量は多くないが驚異的
AVX利用できるのにしないのは何故なのかと言えば
単純に知識がないので使えないからと言うだけだろう
ただ自分のところではメソッドレベルで処理速度が80倍近くまで上がったものもあった
全体に占める処理量は多くないが驚異的
AVX利用できるのにしないのは何故なのかと言えば
単純に知識がないので使えないからと言うだけだろう
693デフォルトの名無しさん
2023/06/25(日) 16:48:59.42ID:tWScV9c+ >>692
>ただ自分のところではメソッドレベルで処理速度が80倍近くまで上がったものもあった
x87 FPUはスタックマシンで、SSE の xmm/ymm/zmm 系は
レジスタマシンだからではないのかな。
AVX512ですら、速くなるのは最大でも16倍程度のはずだ
>ただ自分のところではメソッドレベルで処理速度が80倍近くまで上がったものもあった
x87 FPUはスタックマシンで、SSE の xmm/ymm/zmm 系は
レジスタマシンだからではないのかな。
AVX512ですら、速くなるのは最大でも16倍程度のはずだ
694デフォルトの名無しさん
2023/06/25(日) 16:56:21.50ID:IUvWuTOb GPUはもう科学計算の分野では遠い存在になりつつある
あまりにもコストが高すぎる
今後どんどん上がっていくだろう
もう普通の大学や企業で研究開発の一部で使えるものではなくなった
今こそCPU復権の時だと思っている
シングルノードでカリカリにチューニングした数値計算ライブラリが欲しいよ
あまりにもコストが高すぎる
今後どんどん上がっていくだろう
もう普通の大学や企業で研究開発の一部で使えるものではなくなった
今こそCPU復権の時だと思っている
シングルノードでカリカリにチューニングした数値計算ライブラリが欲しいよ
695デフォルトの名無しさん
2023/06/25(日) 17:17:57.84ID:tWScV9c+ >>694
そんなはずない。
そんなはずない。
696デフォルトの名無しさん
2023/06/25(日) 17:30:35.22ID:t+oRHJh5697デフォルトの名無しさん
2023/06/25(日) 17:45:44.71ID:tWScV9c+ >>696
ぴんきり。CPUの価格と比べて、そんなに高いわけではない。
ぴんきり。CPUの価格と比べて、そんなに高いわけではない。
698デフォルトの名無しさん
2023/06/25(日) 17:51:16.50ID:t+oRHJh5699デフォルトの名無しさん
2023/06/25(日) 17:54:05.15ID:tWScV9c+700デフォルトの名無しさん
2023/06/25(日) 18:10:51.69ID:eajcjBGp701デフォルトの名無しさん
2023/06/25(日) 18:12:45.82ID:vBYApGL0 記号処理と数値計算の対立
文系とか関係ないね
文系とか関係ないね
702デフォルトの名無しさん
2023/06/25(日) 18:17:34.92ID:tWScV9c+ IntelのSIMDは、レジスタの幅が小さすぎる。
1024個のdoubleを同時に掛け算できるような程度で無いと
余り高速化は望めない。
1024個のdoubleを同時に掛け算できるような程度で無いと
余り高速化は望めない。
703デフォルトの名無しさん
2023/06/25(日) 18:17:44.43ID:t+oRHJh5704デフォルトの名無しさん
2023/06/25(日) 18:19:26.67ID:tWScV9c+ ところが、10個の独立したCPUがあったならば、10倍近い速度
は出る。SIMDだと、1024個同時に計算しても、トータルの
数値計算は、やっと数十倍位にしかならないだろう。
は出る。SIMDだと、1024個同時に計算しても、トータルの
数値計算は、やっと数十倍位にしかならないだろう。
705デフォルトの名無しさん
2023/06/25(日) 18:20:20.40ID:tWScV9c+706デフォルトの名無しさん
2023/06/25(日) 18:20:53.67ID:IUvWuTOb >>705
マジで何もわかってなくて草
マジで何もわかってなくて草
707デフォルトの名無しさん
2023/06/25(日) 18:24:48.59ID:tWScV9c+ SIMDは時代遅れ。
AMDとnVidiaは賢いから、どんどんマルチコア化を進め、
AIや数値計算で高い評価を得ている。
ところが、Intelはセンスの無いアホだからSIMD化を進めようと
したが、全然速度が上がらない上に命令が複雑で、しかも、
機種依存、世代依存が激しくて使い物にならない。
GPUだと数年後に買い換えれば、プログラムを修正しなくても、
何倍にも高速化される。コンパイラの修正も不要。
SIMDだと新命令が出るたびにコンパイラの修正が必要だから、
コンパイラ作者は、なんでこんなことに付き合わされる
か分からずないで泣いているだろう。
実際、富岳や地球シミュレータはコア数が多い。
AMDとnVidiaは賢いから、どんどんマルチコア化を進め、
AIや数値計算で高い評価を得ている。
ところが、Intelはセンスの無いアホだからSIMD化を進めようと
したが、全然速度が上がらない上に命令が複雑で、しかも、
機種依存、世代依存が激しくて使い物にならない。
GPUだと数年後に買い換えれば、プログラムを修正しなくても、
何倍にも高速化される。コンパイラの修正も不要。
SIMDだと新命令が出るたびにコンパイラの修正が必要だから、
コンパイラ作者は、なんでこんなことに付き合わされる
か分からずないで泣いているだろう。
実際、富岳や地球シミュレータはコア数が多い。
708デフォルトの名無しさん
2023/06/25(日) 18:29:31.84ID:tCST6AON まぁでもやっぱりベクトル演算系は後回しにはなるんかな
そこまてニーズがあるとは思えない
しかし潜在需要は出てくるかもしれんけど
科学シミュレーション系、動画処理系、とか
YouTuberが動画合成するのに動画処理系は流行ってるけど
機械学習のためのベクトル演算も流行る兆しはあるけどな
そこまてニーズがあるとは思えない
しかし潜在需要は出てくるかもしれんけど
科学シミュレーション系、動画処理系、とか
YouTuberが動画合成するのに動画処理系は流行ってるけど
機械学習のためのベクトル演算も流行る兆しはあるけどな
709デフォルトの名無しさん
2023/06/25(日) 18:33:20.89ID:tWScV9c+ ベクトル演算は自由度が低すぎて使い勝手が悪い。
だから衰退して、いまのスパコンでベクトル型を採用しているものは
ほとんどない。
そして、それと似た設計思想なのがSIMD命令。
だから、SIMDが廃れるのは当然で、実際、Intelもやっと気付いて、
AVX512(zmmレジスタ)は廃止方向で、最近はコア数の増大へと
舵を切っている。その方向性は正しい。
AMDやnVidiaは頭が良くて、もっとずっと前からコア数増大へと
舵を切っている。
だから、科学技術計算でもGPGPUを使う流れは変わらない。
高いのは、半導体不足で高くなっているだけだろう。
だから衰退して、いまのスパコンでベクトル型を採用しているものは
ほとんどない。
そして、それと似た設計思想なのがSIMD命令。
だから、SIMDが廃れるのは当然で、実際、Intelもやっと気付いて、
AVX512(zmmレジスタ)は廃止方向で、最近はコア数の増大へと
舵を切っている。その方向性は正しい。
AMDやnVidiaは頭が良くて、もっとずっと前からコア数増大へと
舵を切っている。
だから、科学技術計算でもGPGPUを使う流れは変わらない。
高いのは、半導体不足で高くなっているだけだろう。
710デフォルトの名無しさん
2023/06/25(日) 19:10:40.50ID:IUvWuTOb いやGPU使わないならSIMDしか高速の余地がないんだよ
せっかくrustで実装するならサイズによって実装を切り替えるべき
要素数が少ない→キャッシュメモリを活かすようにメモリレイアウトを工夫する
要素数が中→SIMD+キャッシュメモリ最適化
要総数が大→スレッド+AVX+キャッシュメモリ最適化
これこそ現代アーキテクチャを生かしまくった実装
そしてBlasはこういう実装になってる
ただの生VecでループするならCと変わらん
せっかくrustで実装するならサイズによって実装を切り替えるべき
要素数が少ない→キャッシュメモリを活かすようにメモリレイアウトを工夫する
要素数が中→SIMD+キャッシュメモリ最適化
要総数が大→スレッド+AVX+キャッシュメモリ最適化
これこそ現代アーキテクチャを生かしまくった実装
そしてBlasはこういう実装になってる
ただの生VecでループするならCと変わらん
711デフォルトの名無しさん
2023/06/25(日) 19:34:48.57ID:+pbSFG2G メモリドリブンとか非ノイマン型になるとまたアーキテクチャが違ってくる
712デフォルトの名無しさん
2023/06/25(日) 20:19:06.24ID:IUvWuTOb モダンで高速なCPUベースの数値計算ライブラリのまとめ
1.CPUの活用
SIMDを使う
2.キャッシュメモリの活用
キャッシュメモリを常に意識する
常にキャッシュに乗る範囲で演算を行う
3.パイプライン処理
計算を直ちに実行するのではなくまず計算グラフを構築し
トポロジカルソートなどで依存関係を解析する
依存ごとにパイプラインを作成し非同期で計算を実行する
記法としてはメソッドチェーンを利用するとやりやすい
非同期実行にはpromise/futureに代表される
非同期ライブラリを使うと書きやすくなる
この点rustはtokioなど非同期実行には使いやすいライブラリが大量にある
この点pythonのライブラリは現状だと全くお話にならないレベルの実装だ
中身がCなのでそこまで細かいチューニングができない
rustを使えば相当速くできるはず
1.CPUの活用
SIMDを使う
2.キャッシュメモリの活用
キャッシュメモリを常に意識する
常にキャッシュに乗る範囲で演算を行う
3.パイプライン処理
計算を直ちに実行するのではなくまず計算グラフを構築し
トポロジカルソートなどで依存関係を解析する
依存ごとにパイプラインを作成し非同期で計算を実行する
記法としてはメソッドチェーンを利用するとやりやすい
非同期実行にはpromise/futureに代表される
非同期ライブラリを使うと書きやすくなる
この点rustはtokioなど非同期実行には使いやすいライブラリが大量にある
この点pythonのライブラリは現状だと全くお話にならないレベルの実装だ
中身がCなのでそこまで細かいチューニングができない
rustを使えば相当速くできるはず
713デフォルトの名無しさん
2023/06/25(日) 20:43:38.33ID:RCq9Swcm >>594,635,663,670,676
ndarray本体にコントリビュートするつもりは無いの?
ndarray本体にコントリビュートするつもりは無いの?
714デフォルトの名無しさん
2023/06/25(日) 20:46:48.87ID:JOhJHmBJ SIMDの使い道がないなんて普通は思わないな
実際はSIMDは動画のデコードエンコードで使用されてる
実際はSIMDは動画のデコードエンコードで使用されてる
715デフォルトの名無しさん
2023/06/25(日) 20:53:45.41ID:RCq9Swcm716デフォルトの名無しさん
2023/06/25(日) 21:06:17.68ID:EMywShWE 本気でやるつもりがあるならこんな場所じゃなくてGitHubのissues/discussionsで議題出すでしょ
717デフォルトの名無しさん
2023/06/25(日) 21:15:14.90ID:RCq9Swcm718デフォルトの名無しさん
2023/06/25(日) 21:49:47.41ID:IUvWuTOb >>715
ないかな
俺が上で言ってるアーキテクチャだとtokioを組み込む必要があって
ndarrayにそんなことができる余地はない
tokioを組み込んでおけば複数ノードへの展開まで視野に入る
GPUを凌駕するところまでいけるんだよ
ないかな
俺が上で言ってるアーキテクチャだとtokioを組み込む必要があって
ndarrayにそんなことができる余地はない
tokioを組み込んでおけば複数ノードへの展開まで視野に入る
GPUを凌駕するところまでいけるんだよ
719デフォルトの名無しさん
2023/06/25(日) 21:50:03.13ID:IscOqakE 例えばUTF8 validationなどもbyte毎に処理するよりSIMDで速くなったりする
720デフォルトの名無しさん
2023/06/25(日) 22:04:27.70ID:IUvWuTOb この数値計算に「非同期ライブラリを組み込む」というのをやってるものは見たことがない
このアイデア使っていいよ
このアイデア使っていいよ
721デフォルトの名無しさん
2023/06/25(日) 22:09:54.64ID:RCq9Swcm 了解
>>683,712,718は>>666の人なのね
>720
>tokioを組み込んでおけば複数ノードへの展開まで視野に入る
>この数値計算に「非同期ライブラリを組み込む」というのをやってるものは見たことがない
https://crates.io/crates/mpi ←生きてる
https://crates.io/crates/node_crunch ←過疎
これらはtokio要らない見たいだけど、他に良いのがあるの?
>>594,635,663,670,676
言いだしっぺ待ち
>>683,712,718は>>666の人なのね
>720
>tokioを組み込んでおけば複数ノードへの展開まで視野に入る
>この数値計算に「非同期ライブラリを組み込む」というのをやってるものは見たことがない
https://crates.io/crates/mpi ←生きてる
https://crates.io/crates/node_crunch ←過疎
これらはtokio要らない見たいだけど、他に良いのがあるの?
>>594,635,663,670,676
言いだしっぺ待ち
722デフォルトの名無しさん
2023/06/25(日) 22:15:33.85ID:IUvWuTOb >>721
MPIはHPC分野で伝統的に使われてるライブラリだけど
書き方に非常にクセがあるのよ
いわゆるデータ並列でCUDAっぽい書き方を強要される
これが使いにくい
今時のライブラリで使うものではないと思う
MPIはHPC分野で伝統的に使われてるライブラリだけど
書き方に非常にクセがあるのよ
いわゆるデータ並列でCUDAっぽい書き方を強要される
これが使いにくい
今時のライブラリで使うものではないと思う
723デフォルトの名無しさん
2023/06/25(日) 22:25:12.80ID:RCq9Swcm724デフォルトの名無しさん
2023/06/25(日) 22:25:40.44ID:fN5kJF67 そういや、Intelからはdpcppとかいうのが出てるけど、あれってどうなん
ガチエアプで、そういうのもあるってのを把握してるにとどまってるんだが
ガチエアプで、そういうのもあるってのを把握してるにとどまってるんだが
725デフォルトの名無しさん
2023/06/25(日) 22:53:17.82ID:IUvWuTOb >>723
そこはまだ検討中ではあるがtokioのイベントループの中で
各ノードと通信を行うという意味
具体的な方法はまだ決めてはいないが既存のプロトコルでやれれようにしたい
gRPCをtokioの元で動くようにして
gRPCで各ノードと通信を行うようにするとかね
実際そういうライブラリはあるらしい
そこはまだ検討中ではあるがtokioのイベントループの中で
各ノードと通信を行うという意味
具体的な方法はまだ決めてはいないが既存のプロトコルでやれれようにしたい
gRPCをtokioの元で動くようにして
gRPCで各ノードと通信を行うようにするとかね
実際そういうライブラリはあるらしい
726デフォルトの名無しさん
2023/06/25(日) 22:59:23.24ID:RCq9Swcm727デフォルトの名無しさん
2023/06/25(日) 23:00:24.01ID:IUvWuTOb >>724
俺の知る限り実用的なマルチノードでの計算ライブラリはMPIぐらい
スパコンの世界ではMPIを使うこと前提に組まれた数値計算ソフトがめちゃくちゃ多い
しかしやはり古いと思う
新しいモダンな数値計算のライブラリをデザインする時に来ている
俺の知る限り実用的なマルチノードでの計算ライブラリはMPIぐらい
スパコンの世界ではMPIを使うこと前提に組まれた数値計算ソフトがめちゃくちゃ多い
しかしやはり古いと思う
新しいモダンな数値計算のライブラリをデザインする時に来ている
728デフォルトの名無しさん
2023/06/25(日) 23:01:01.04ID:FTiE1KXs >>680
結構、とりあえず異なる数値型同士の行列積は既に実装できてるけど。勿論、ユーザーは最初に型を指定しなくてすむように演算。組んでるけど。rustは型をある程度動的にしてもそとまでスピードも落ちないんだよね。少なく自分の計測の範囲内では。
結構、とりあえず異なる数値型同士の行列積は既に実装できてるけど。勿論、ユーザーは最初に型を指定しなくてすむように演算。組んでるけど。rustは型をある程度動的にしてもそとまでスピードも落ちないんだよね。少なく自分の計測の範囲内では。
729デフォルトの名無しさん
2023/06/25(日) 23:03:26.50ID:IUvWuTOb MPI自体は単なるマルチノードでの通信ライブラリに過ぎない
これを使っている前提のソフトが多いって意味ね
これを使っている前提のソフトが多いって意味ね
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 小野田紀美・経済安保担当相「何か気に入らないことがあればすぐに経済的威圧をする国への依存はリスク」 ★2 [Hitzeschleier★]
- 日本行き空路49万件キャンセル 中国自粛呼びかけ 日本行きチケット予約の約32%に相当 ★2 [ぐれ★]
- 【中国局長】両国関係に「深刻な影響」 首相発言の撤回要求 [蚤の市★]
- 外務省局長は無言で厳しい表情…日中の高官協議終了か 高市首相“台湾”発言で中国が強硬対応 発言撤回求めたか…★3 [BFU★]
- 【卓球】早田ひな、「総額100万スられた」「ずっと憧れていたスペインとイタリア…」ヨーロッパ旅行で悲劇 スリ被害を告白 [muffin★]
- 【インバウンド】中国人観光客の日本での消費額は年間約2兆円超…中国政府は公務員の出張取り消し [1ゲットロボ★]
- 産経新聞「高市早苗の答弁さぁ……思慮が足りてなくね?官僚と詰めずに思いつきで話しているでしょ」 [175344491]
- 【実況】博衣こよりのえちえち歌枠🧪
- 【高市速報】日本人の3割「中国への武力行使に踏み切る必要がある」ANN世論調査 [931948549]
- 【雑談】暇人集会所part18
- 高市早苗「支持者の理解を得られないので台湾発言を撤回できない」 [931948549]
- 外務省局長、よくわからないまま帰国へ [834922174]
