C++の色々配慮してめんどくさい感じは好きだけど、実務になったらメモリ安全性とか考えて今後Rustに変わっていくんかな」
「うだうだ言ってないで仕事で必要なのをやればいいんだよ、趣味なら好きなのやればいい」
っていう雑談スレ。
前スレ
https://itest.5ch.net/mevius/test/read.cgi/tech/1688129795
関連スレ(マ板): Google&MS「バグの70%はC/C++。Rustにする」
https://medaka.5ch.n...cgi/prog/1619943288/
結局C++とRustってどっちが良いの? 6traits
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2023/07/29(土) 15:05:46.55ID:2Hm/yplK708デフォルトの名無しさん
2023/08/19(土) 20:17:26.90ID:ScsfkQnZ Firefoxはバクサイ開いたままにしてるとメモリー20GB、CPU100%になったりする
Chromeはそんなことにならない
そういう違いがある
Chromeはそんなことにならない
そういう違いがある
709デフォルトの名無しさん
2023/08/19(土) 20:41:53.76ID:JEXSqoZz >>706
axum
axum
710デフォルトの名無しさん
2023/08/19(土) 20:47:27.03ID:ZeP/2UQc >>707
妨害してるってこと?
妨害してるってこと?
711デフォルトの名無しさん
2023/08/19(土) 21:06:21.33ID:LtLp+SED インターネットはおかしいと最初から思ってた
でもソースコードを保存する場所はネットでもディスクでも紙でもなんでもいい
でもソースコードを保存する場所はネットでもディスクでも紙でもなんでもいい
712デフォルトの名無しさん
2023/08/19(土) 21:18:25.63ID:fB8B9G8R >>690
Python3の場合(正常に動作しかも高速)
https://paiza.io/projects/ciU5iRNbruZiSz4IAy9M4w
Rustの場合(timeoutする)
https://paiza.io/projects/xeAwQZ8M_BHwu0fvFsPLtw
Python3の場合(正常に動作しかも高速)
https://paiza.io/projects/ciU5iRNbruZiSz4IAy9M4w
Rustの場合(timeoutする)
https://paiza.io/projects/xeAwQZ8M_BHwu0fvFsPLtw
713デフォルトの名無しさん
2023/08/19(土) 21:36:12.67ID:DB+Yglwb write_allの後はflushした方いいんじゃね?
しらんけど
まあPythonの方がアマチュア向けというか面倒見がいいのは分かる
しらんけど
まあPythonの方がアマチュア向けというか面倒見がいいのは分かる
714デフォルトの名無しさん
2023/08/19(土) 21:50:51.02ID:fB8B9G8R >>697
自演がバレたなω
自演がバレたなω
715デフォルトの名無しさん
2023/08/19(土) 21:52:18.92ID:fB8B9G8R >>698
crates.io 破綻してるよな
crates.io 破綻してるよな
716デフォルトの名無しさん
2023/08/19(土) 22:20:00.98ID:DB+Yglwb crates.ioに限った話ではないけど
ライブラリ名と実装品質のミスマッチはいつも気になってる
HTTP/2用のライブラリでもhttp2よりh2の方が利用者数多いとか
オープンなレジストリの宿命として諦めるしかないのかな
ライブラリ名と実装品質のミスマッチはいつも気になってる
HTTP/2用のライブラリでもhttp2よりh2の方が利用者数多いとか
オープンなレジストリの宿命として諦めるしかないのかな
717デフォルトの名無しさん
2023/08/19(土) 22:20:55.24ID:uqHP0fTk >>644
5chでデマ垂れ流して気持ち良くなるだけのゴミ人生でしたw
5chでデマ垂れ流して気持ち良くなるだけのゴミ人生でしたw
718デフォルトの名無しさん
2023/08/20(日) 00:49:54.32ID:nxq7VYP6 損得の勝負をしてると、デマで得をする奴がいないか常に不安だよな
それなら単純に本当か嘘かで勝負すればデマと勝利は両立しないから安心安全なのでは
それなら単純に本当か嘘かで勝負すればデマと勝利は両立しないから安心安全なのでは
719デフォルトの名無しさん
2023/08/20(日) 01:54:31.51ID:xEeb34b9720デフォルトの名無しさん
2023/08/20(日) 02:56:13.90ID:shN/tp+V >>719
修正版ウブおながいします
修正版ウブおながいします
721デフォルトの名無しさん
2023/08/20(日) 06:38:03.53ID:klcvUWNp 練習に書いてみた
fn base64_encode(input: impl AsRef<[u8]>) -> String {
const TABLE: [u8; 64] = *b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const MASK: usize = 64 - 1;
let mut input = input.as_ref();
let mut output = Vec::new();
while let [i0, i1, i2, rest @ ..] = input {
let x = u32::from_be_bytes([0, *i0, *i1, *i2]) as usize;
(0..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
input = rest;
}
match input {
[i0, i1] => {
let x = u32::from_be_bytes([0, *i0, *i1, 0]) as usize;
(1..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
output.push(b'=');
}
[i0] => {
let x = u32::from_be_bytes([0, *i0, 0, 0]) as usize;
(2..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
output.push(b'=');
output.push(b'=');
}
_ => {}
}
String::from_utf8(output).unwrap()
}
fn base64_encode(input: impl AsRef<[u8]>) -> String {
const TABLE: [u8; 64] = *b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const MASK: usize = 64 - 1;
let mut input = input.as_ref();
let mut output = Vec::new();
while let [i0, i1, i2, rest @ ..] = input {
let x = u32::from_be_bytes([0, *i0, *i1, *i2]) as usize;
(0..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
input = rest;
}
match input {
[i0, i1] => {
let x = u32::from_be_bytes([0, *i0, *i1, 0]) as usize;
(1..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
output.push(b'=');
}
[i0] => {
let x = u32::from_be_bytes([0, *i0, 0, 0]) as usize;
(2..=3).rev().for_each(|shift| output.push(TABLE[x >> shift * 6 & MASK]));
output.push(b'=');
output.push(b'=');
}
_ => {}
}
String::from_utf8(output).unwrap()
}
722デフォルトの名無しさん
2023/08/20(日) 07:18:09.55ID:3t1JnBWI >>663
同意
同意
723デフォルトの名無しさん
2023/08/20(日) 08:16:48.41ID:6nnys+Pw >>699
俺はOSSを使わない仕事をしているから。
俺はOSSを使わない仕事をしているから。
724デフォルトの名無しさん
2023/08/20(日) 08:21:25.95ID:6nnys+Pw725デフォルトの名無しさん
2023/08/20(日) 08:24:41.49ID:6nnys+Pw クローズドなソフトだと、古いものも維持されるかどうかは、
それぞれの企業次第で各企業の特徴が出る。
ところがOSSの場合、人類全体の傾向となるから、
どのOSSなソフトでも似たような保守の傾向となり、
制御できない。なぜなら、人類全体の傾向はいつも
ほぼ同じだから。
電力送電における「無限大母線」という言葉を思い出した。
それぞれの企業次第で各企業の特徴が出る。
ところがOSSの場合、人類全体の傾向となるから、
どのOSSなソフトでも似たような保守の傾向となり、
制御できない。なぜなら、人類全体の傾向はいつも
ほぼ同じだから。
電力送電における「無限大母線」という言葉を思い出した。
726デフォルトの名無しさん
2023/08/20(日) 09:39:15.51ID:GjiTjTDJ727デフォルトの名無しさん
2023/08/20(日) 09:56:36.27ID:GjiTjTDJ >724
なんか全体集合と部分集合を理解出来ていない様な日本語ですね
なんか全体集合と部分集合を理解出来ていない様な日本語ですね
728デフォルトの名無しさん
2023/08/20(日) 10:26:38.95ID:nxq7VYP6 人類の傾向はいつも、n=1を笑い、前例が1つもない事件事故に泣く
729デフォルトの名無しさん
2023/08/20(日) 10:50:22.50ID:1EohdLDs >>723
boostは使わないのかな?
boostは使わないのかな?
730デフォルトの名無しさん
2023/08/20(日) 11:46:34.65ID:PLGKFrd6 >>727
実際rustに限らずOSSなら必ず当てはまることなので部分と言っても意味はない。
実際rustに限らずOSSなら必ず当てはまることなので部分と言っても意味はない。
731デフォルトの名無しさん
2023/08/20(日) 11:52:30.19ID:1EohdLDs732デフォルトの名無しさん
2023/08/20(日) 12:53:04.65ID:nxq7VYP6 時間はお金で買える
ただ具体的にいくらで買えるのか誰も知らないだけ
ただ具体的にいくらで買えるのか誰も知らないだけ
733デフォルトの名無しさん
2023/08/20(日) 13:19:08.66ID:sLWYcNsZ734デフォルトの名無しさん
2023/08/20(日) 13:30:35.17ID:1EohdLDs735デフォルトの名無しさん
2023/08/20(日) 15:55:58.84ID:KkFZufKp >>712を見て思ったが
RustにもPythonのrequests/base64のようなライブラリあるんだろ
RustにもPythonのrequests/base64のようなライブラリあるんだろ
736デフォルトの名無しさん
2023/08/20(日) 15:58:19.75ID:OKeiQGdq 標準ライブラリには入ってない
737デフォルトの名無しさん
2023/08/20(日) 16:12:04.89ID:KkFZufKp738デフォルトの名無しさん
2023/08/20(日) 16:22:18.11ID:mA4FcHyW RustってSimd命令は非安定だよね?実際にSimd命令使うとどれくらい高速化できんの?
Simd命令ってCPUに応じて場合分けしてコードを書かないとならんの?
Simd命令ってCPUに応じて場合分けしてコードを書かないとならんの?
739デフォルトの名無しさん
2023/08/20(日) 16:51:39.65ID:7DmX7Wr5 >>738
CPU以外にボトルネックがないならおおよそ並列度の分だけ性能上がる
32bit + 32bitのような計算を1命令で処理してたところを256bit幅がサポートされてるハードウエア&命令を使えば約8倍
CPU以外にボトルネックがないならおおよそ並列度の分だけ性能上がる
32bit + 32bitのような計算を1命令で処理してたところを256bit幅がサポートされてるハードウエア&命令を使えば約8倍
740デフォルトの名無しさん
2023/08/20(日) 16:54:56.78ID:7qQbvCdM >>739
実際には、「お膳立て」のためのオーバーヘッドが有ることと、
SIMD命令が使える部分が少ないことで、8倍のSIMD命令を
使っても、20%位の向上にしかならないと言われている。
数値は大体。
だから、IntelはAVX512をメインストリームからは捨て
ようとした。
実際には、「お膳立て」のためのオーバーヘッドが有ることと、
SIMD命令が使える部分が少ないことで、8倍のSIMD命令を
使っても、20%位の向上にしかならないと言われている。
数値は大体。
だから、IntelはAVX512をメインストリームからは捨て
ようとした。
741デフォルトの名無しさん
2023/08/20(日) 17:01:04.61ID:7qQbvCdM スパコンが、ベクトル型が廃れてスカラー型の並列型が
流行していることからしても、SIMDは将来性の無い
ものだと個人的には思ってる。
むしろ、SIMDを捨て、コア数を増やす方が圧倒的に
高速化できる。
流行していることからしても、SIMDは将来性の無い
ものだと個人的には思ってる。
むしろ、SIMDを捨て、コア数を増やす方が圧倒的に
高速化できる。
742デフォルトの名無しさん
2023/08/20(日) 17:20:33.01ID:V1e9lq/f スパコンのコーディングは知らんけど
雑にスレッドプールにぶん投げるだけで速くなる並列処理の方が
SIMDより使いやすいなって思う
雑にスレッドプールにぶん投げるだけで速くなる並列処理の方が
SIMDより使いやすいなって思う
743デフォルトの名無しさん
2023/08/20(日) 18:05:27.72ID:a//hKKzV >>720
整理するとこれでいいみたい
use std::error::Error;
use std::net::TcpStream;
use std::io::{BufReader, BufRead, Read, Write};
use std::fmt::Write as _;
fn http_get(host_port: &str, path: &str) -> Result<Vec<u8>, Box<dyn Error>> {
let mut server = TcpStream::connect(host_port)?;
let mut http = String::new();
write!(http, "GET {path} HTTP/1.1\r\n")?;
write!(http, "Host: {host_port}\r\n")?;
write!(http, "Connection: close\r\n")?;
write!(http, "\r\n")?;
server.write_all(http.as_bytes())?;
let mut server = BufReader::new(server);
let mut line = String::new();
server.read_line(&mut line)?;
if line != "HTTP/1.1 200 OK\r\n" {
return Err("HTTP: not 200 OK".into());
}
while server.read_line(&mut line)? > 2 {}
let mut data = Vec::<u8>::new();
server.read_to_end(&mut data)?;
Ok(data)
}
整理するとこれでいいみたい
use std::error::Error;
use std::net::TcpStream;
use std::io::{BufReader, BufRead, Read, Write};
use std::fmt::Write as _;
fn http_get(host_port: &str, path: &str) -> Result<Vec<u8>, Box<dyn Error>> {
let mut server = TcpStream::connect(host_port)?;
let mut http = String::new();
write!(http, "GET {path} HTTP/1.1\r\n")?;
write!(http, "Host: {host_port}\r\n")?;
write!(http, "Connection: close\r\n")?;
write!(http, "\r\n")?;
server.write_all(http.as_bytes())?;
let mut server = BufReader::new(server);
let mut line = String::new();
server.read_line(&mut line)?;
if line != "HTTP/1.1 200 OK\r\n" {
return Err("HTTP: not 200 OK".into());
}
while server.read_line(&mut line)? > 2 {}
let mut data = Vec::<u8>::new();
server.read_to_end(&mut data)?;
Ok(data)
}
744デフォルトの名無しさん
2023/08/20(日) 18:11:30.48ID:gUvM95Xg よかったね
745デフォルトの名無しさん
2023/08/20(日) 18:25:00.43ID:MyoNrmjT >>743
え?Rustって標準ライブラリでhttpリクエストすらできないの?
え?Rustって標準ライブラリでhttpリクエストすらできないの?
746デフォルトの名無しさん
2023/08/20(日) 18:38:37.77ID:iamuQ/3/ Rsutはwebやるための言語とか言ってたような
747デフォルトの名無しさん
2023/08/20(日) 19:01:10.42ID:mA4FcHyW とりあえず1000×1000の行列の行列積dotが0.015秒弱でできるようなところまで行列ライブラリーが実装できたので、何とか0.00秒台で計算が終わる様にしたい。
今の所手を出してない最適化
1) Simd命令
2) インラインアセンブリ
3)ループアンローリング(これはRustだと自動的にやってくれてる様で自分の実験した範囲ではあまり効果がなかった。)
この中で一番効果的な最適化は何?
ちなみに今の所は以下の最適下は既に実装済み
1) ループ交換
2) キャッシュブロッキング
3) rayonによる並列処理
今の所手を出してない最適化
1) Simd命令
2) インラインアセンブリ
3)ループアンローリング(これはRustだと自動的にやってくれてる様で自分の実験した範囲ではあまり効果がなかった。)
この中で一番効果的な最適化は何?
ちなみに今の所は以下の最適下は既に実装済み
1) ループ交換
2) キャッシュブロッキング
3) rayonによる並列処理
748デフォルトの名無しさん
2023/08/20(日) 19:10:25.82ID:IxOV384F749デフォルトの名無しさん
2023/08/20(日) 19:16:55.65ID:55RG+hvj デファクトスタンダードという選りすぐりに聞こえるが
単にそれしかないだけのような...
ユーザ数少ないので
単にそれしかないだけのような...
ユーザ数少ないので
750デフォルトの名無しさん
2023/08/20(日) 19:20:14.76ID:yJmfO0+S751デフォルトの名無しさん
2023/08/20(日) 19:25:32.14ID:mA4FcHyW >>750
じゃあ基本的にはdot演算に関してはこれ以上の最適化の余地はないって感じ?
じゃあ基本的にはdot演算に関してはこれ以上の最適化の余地はないって感じ?
752デフォルトの名無しさん
2023/08/20(日) 19:26:47.41ID:MoWe6Sep グーグルとアップルが流行らせようとしてるらしいが
753デフォルトの名無しさん
2023/08/20(日) 19:44:59.22ID:sOv9anOF paiza.io の Rust は crates 使えないから
ホント使いもんにならんわ
ホント使いもんにならんわ
754デフォルトの名無しさん
2023/08/20(日) 19:47:42.13ID:rPtHvv2S じゃあGitHubのCodespacesでも使ってれば
755デフォルトの名無しさん
2023/08/20(日) 19:54:55.65ID:yJmfO0+S756デフォルトの名無しさん
2023/08/20(日) 19:58:02.59ID:U3mkt6q/757デフォルトの名無しさん
2023/08/20(日) 20:00:15.86ID:259yUXDO >>747
これに即して測ってみては(1500x1500(f64)の生成、行列積、破棄の計測)
https://github.com/kostya/benchmarks#matmul
とりあえずnumpyとの比較とか
https://github.com/kostya/benchmarks/blob/master/matmul/matmul-numpy.py
これに即して測ってみては(1500x1500(f64)の生成、行列積、破棄の計測)
https://github.com/kostya/benchmarks#matmul
とりあえずnumpyとの比較とか
https://github.com/kostya/benchmarks/blob/master/matmul/matmul-numpy.py
758デフォルトの名無しさん
2023/08/20(日) 20:00:40.96ID:pu4udaaX シミュレータなどは行列演算だけ高速化しても、全体の
高速化にはなら無い事が多い。
高速化にはなら無い事が多い。
759デフォルトの名無しさん
2023/08/20(日) 20:04:56.81ID:mA4FcHyW >>757
手元のnumpyよりは少なくとも1000×1000の行列積は2倍から3倍速、10000×10000の行列積だと約5倍から10倍速い。手元よnumpyのバックエンドはIntelMKL。
手元のnumpyよりは少なくとも1000×1000の行列積は2倍から3倍速、10000×10000の行列積だと約5倍から10倍速い。手元よnumpyのバックエンドはIntelMKL。
760デフォルトの名無しさん
2023/08/20(日) 20:07:47.30ID:mA4FcHyW まだ、行列の対角化とか逆行列の計算は実装できてない。
761デフォルトの名無しさん
2023/08/20(日) 20:20:10.35ID:259yUXDO なんかnumpyが遅くない?
1000x1000でnumpy.dot(a, b)部分だけ測ったらこんな感じだったけど
0.006215572357177734
0.005822658538818359
0.005129098892211914
0.007399797439575195
0.011432886123657227
0.008414506912231445
0.009572029113769531
0.009091615676879883
0.008922100067138672
0.007265329360961914
1000x1000でnumpy.dot(a, b)部分だけ測ったらこんな感じだったけど
0.006215572357177734
0.005822658538818359
0.005129098892211914
0.007399797439575195
0.011432886123657227
0.008414506912231445
0.009572029113769531
0.009091615676879883
0.008922100067138672
0.007265329360961914
762デフォルトの名無しさん
2023/08/20(日) 20:23:55.44ID:259yUXDO def calc(n):
n = n // 2 * 2
a = build_matrix_np(n, 1.0)
b = build_matrix_np(n, 2.0)
start = time.time()
d = matmul(a, b)
end = time.time()
time_diff = end - start
print(time_diff)
return d[n // 2][n // 2]
n = n // 2 * 2
a = build_matrix_np(n, 1.0)
b = build_matrix_np(n, 2.0)
start = time.time()
d = matmul(a, b)
end = time.time()
time_diff = end - start
print(time_diff)
return d[n // 2][n // 2]
763デフォルトの名無しさん
2023/08/20(日) 20:37:44.31ID:259yUXDO pipで入れたのでopenblasだと思うけど、こんな感じ
OMP_NUM_THREADS=1 python mutmul-numpy.py 1000
0.030291080474853516
0.029540538787841797
0.029771089553833008
0.02943873405456543
0.02980208396911621
0.03012990951538086
0.0300595760345459
0.030525922775268555
0.03243899345397949
0.02984023094177246
OMP_NUM_THREADS=8 python mutmul-numpy.py 1000
0.0073316097259521484
0.007174968719482422
0.007193326950073242
0.006682157516479492
0.006906747817993164
0.006983757019042969
0.007711172103881836
0.008562803268432617
0.007740497589111328
0.00671076774597168
>>759のnumpy計測がsingle threadになってたりしてる?
OMP_NUM_THREADS=1 python mutmul-numpy.py 1000
0.030291080474853516
0.029540538787841797
0.029771089553833008
0.02943873405456543
0.02980208396911621
0.03012990951538086
0.0300595760345459
0.030525922775268555
0.03243899345397949
0.02984023094177246
OMP_NUM_THREADS=8 python mutmul-numpy.py 1000
0.0073316097259521484
0.007174968719482422
0.007193326950073242
0.006682157516479492
0.006906747817993164
0.006983757019042969
0.007711172103881836
0.008562803268432617
0.007740497589111328
0.00671076774597168
>>759のnumpy計測がsingle threadになってたりしてる?
764デフォルトの名無しさん
2023/08/20(日) 22:44:27.85ID:mA4FcHyW >>763
シングルスレッドでの計測になってたぽい。この計測って最初のメモリ確保は含めてる?
シングルスレッドでの計測になってたぽい。この計測って最初のメモリ確保は含めてる?
765デフォルトの名無しさん
2023/08/21(月) 11:52:24.10ID:lrfEI2bB SIMDでの行列演算の最適化方法そのものとかさすがに関係なさ過ぎ。
RustとC++の違いに着目するならまだしも。
RustとC++の違いに着目するならまだしも。
766デフォルトの名無しさん
2023/08/21(月) 14:56:42.48ID:jPnmmh+2 >>764
>>762の通り行列積部分
JuliaをREPLで試した
function matgen(n, seed)
tmp = seed / n / n
[tmp * (i - j) * (i + j - 2) for i = 1:n, j = 1:n]
end
n = 1000
n = round(Int, n / 2) * 2
a = matgen(n, 1.0)
b = matgen(n, 2.0)
using BenchmarkTools
c=@btime(a*b)
OPENBLAS_NUM_THREADS=1 julia --optimize=3 --check-bounds=no
29.581 ms (2 allocations: 7.63 MiB)
OPENBLAS_NUM_THREADS=8 julia --optimize=3 --check-bounds=no
6.875 ms (2 allocations: 7.63 MiB)
juliaが行列積でnumpyの10倍遅いのが意外
>>762の通り行列積部分
JuliaをREPLで試した
function matgen(n, seed)
tmp = seed / n / n
[tmp * (i - j) * (i + j - 2) for i = 1:n, j = 1:n]
end
n = 1000
n = round(Int, n / 2) * 2
a = matgen(n, 1.0)
b = matgen(n, 2.0)
using BenchmarkTools
c=@btime(a*b)
OPENBLAS_NUM_THREADS=1 julia --optimize=3 --check-bounds=no
29.581 ms (2 allocations: 7.63 MiB)
OPENBLAS_NUM_THREADS=8 julia --optimize=3 --check-bounds=no
6.875 ms (2 allocations: 7.63 MiB)
juliaが行列積でnumpyの10倍遅いのが意外
767デフォルトの名無しさん
2023/08/21(月) 16:08:29.46ID:IYi1S2wl >>765
まあ、この板は実質雑談板なんで。アンチOSS君も大暴れしてますし大目にみてください。
まあ、この板は実質雑談板なんで。アンチOSS君も大暴れしてますし大目にみてください。
768デフォルトの名無しさん
2023/08/21(月) 16:21:29.46ID:A+ik1f9X OSS関係無いわな。スレチ。別のところで好きなだけやればいい。
769デフォルトの名無しさん
2023/08/21(月) 16:41:35.26ID:W/JUog9y OSSは関係大有りだと思う。
770デフォルトの名無しさん
2023/08/21(月) 16:46:18.02ID:dQnAszLW Juliaとかは関係あるの?
771デフォルトの名無しさん
2023/08/21(月) 16:48:11.28ID:US7qznQL 議論に関係あるかどうかの議論が必要ですね
772デフォルトの名無しさん
2023/08/21(月) 16:55:39.81ID:A+ik1f9X >>769
rustのエコシステムの話とかなら関係あるけど、OSS自体のメリデメ、とかそういう論点はスレチ。
rustのエコシステムの話とかなら関係あるけど、OSS自体のメリデメ、とかそういう論点はスレチ。
773デフォルトの名無しさん
2023/08/21(月) 17:31:43.44ID:W/JUog9y774デフォルトの名無しさん
2023/08/21(月) 17:54:01.38ID:A+ik1f9X >>773
それが通るなら少しでも擦れば何でもありになる。
影響の大小なんて本人が大きいと言い張れば大きいことになる。
スレタイ読んで関係あるかどうか常識で考えれば自明。もちろんあなたに言っても意味無いわけですけども。
それが通るなら少しでも擦れば何でもありになる。
影響の大小なんて本人が大きいと言い張れば大きいことになる。
スレタイ読んで関係あるかどうか常識で考えれば自明。もちろんあなたに言っても意味無いわけですけども。
775デフォルトの名無しさん
2023/08/21(月) 18:18:38.42ID:W/JUog9y776デフォルトの名無しさん
2023/08/21(月) 18:33:57.42ID:AlisErs6777デフォルトの名無しさん
2023/08/21(月) 18:35:45.82ID:dQnAszLW Rustが失敗した原因の根底にOSSの問題があるって言いたいんじゃね
778デフォルトの名無しさん
2023/08/21(月) 19:07:31.63ID:8jq5nfQv 「(すべての)OSSは本質的に非常に大問題を抱えている」→「Rustは本質的に非常に大問題を抱えている」
ってことだな
一応前提が正しければ結論も正しいけど前提の論証が大変そうだ
「一部のOSSは本質的に非常に大問題を抱えている」→「すべてのOSSは本質的に非常に大問題を抱えている」
みたいな論証魔法を決めれば何とかなるけどプログラマはこの類には耐性あるからな
「一部の」と「すべての」を削って後ろの修飾語を盛る程度だとまだ術式が足りなくて通らない
ってことだな
一応前提が正しければ結論も正しいけど前提の論証が大変そうだ
「一部のOSSは本質的に非常に大問題を抱えている」→「すべてのOSSは本質的に非常に大問題を抱えている」
みたいな論証魔法を決めれば何とかなるけどプログラマはこの類には耐性あるからな
「一部の」と「すべての」を削って後ろの修飾語を盛る程度だとまだ術式が足りなくて通らない
779デフォルトの名無しさん
2023/08/21(月) 19:20:23.58ID:NjHCZBFl どっちでもいいから、面白いことを書いてくれ
780デフォルトの名無しさん
2023/08/21(月) 19:32:31.36ID:jTK4AVkF >>775
boostは使わないの?
boostは使わないの?
781デフォルトの名無しさん
2023/08/21(月) 19:53:38.34ID:2W/Jw/4i 矛盾を抱えているんだから論証とか無駄。
どんな結論でも導出できる。
どんな結論でも導出できる。
782デフォルトの名無しさん
2023/08/21(月) 20:44:27.67ID:oR9oJ1qa 背理法の仮定を利用しなくても矛盾するなら、任意の結論を背理法で証明できる
だから「矛盾しているのはお前だけ」みたいな結論はむしろ出てこないんだよ
属人的な仮定を必要としないのだから全人類が矛盾する
だから「矛盾しているのはお前だけ」みたいな結論はむしろ出てこないんだよ
属人的な仮定を必要としないのだから全人類が矛盾する
783デフォルトの名無しさん
2023/08/21(月) 21:19:54.31ID:q/j5yT82784デフォルトの名無しさん
2023/08/21(月) 21:26:14.98ID:6J/DqmTl >>778
おもしろい
おもしろい
785デフォルトの名無しさん
2023/08/21(月) 21:58:53.90ID:oR9oJ1qa786デフォルトの名無しさん
2023/08/21(月) 22:02:41.22ID:oR9oJ1qa ちょっと間違えたけど、どこを間違えたのかいちいち合意を取るのが面倒臭い
787デフォルトの名無しさん
2023/08/22(火) 00:06:37.51ID:p77SLRC3 まあ、この板はプログラム関連なら基本的に何話しても良いってことで。この6traits目を、立てた本人が言ってることなんで。次のtraitからはそれについても書いとく?
788デフォルトの名無しさん
2023/08/22(火) 00:42:55.89ID:CKREFo3h >>787
君スレと板ごっちゃにしてない?
君スレと板ごっちゃにしてない?
789デフォルトの名無しさん
2023/08/22(火) 06:46:28.34ID:oV9q0mPv このスレタイに釣られるって段階で、参加者がある程度絞られてる
別に何話そうが確かに構わんのだが、面白いことを書け
ライブラリ書いてるヤツが定着してるのは、Rustのライブラリ作りってこんな感じなのか、と思って眺めてる
そういや、hsutter氏がなんか動画出してたけど、まだ観てない
勉強しないといけないこと(non C++, non Rust)大杉
別に何話そうが確かに構わんのだが、面白いことを書け
ライブラリ書いてるヤツが定着してるのは、Rustのライブラリ作りってこんな感じなのか、と思って眺めてる
そういや、hsutter氏がなんか動画出してたけど、まだ観てない
勉強しないといけないこと(non C++, non Rust)大杉
790デフォルトの名無しさん
2023/08/22(火) 12:18:07.09ID:whNyN1Gw >>773
スレタイを100万回読め
スレタイを100万回読め
791デフォルトの名無しさん
2023/08/22(火) 19:02:47.39ID:jvLbVv4g >>766 訂正
測定自体はOKですが、最後の一文、桁を読み間違えてたorz
× >juliaが行列積でnumpyの10倍遅いのが意外
juliaとnumpyは同じスピードです(両方ともopenblasバックエンド、同一スレッド数の場合)
https://i.imgur.com/AKwAFec.png
>>747,759,764
そちらの環境でのマルチスレッドnumpyの測定数値が出ていたら自作ライブラリとの比較結果お願いします
測定自体はOKですが、最後の一文、桁を読み間違えてたorz
× >juliaが行列積でnumpyの10倍遅いのが意外
juliaとnumpyは同じスピードです(両方ともopenblasバックエンド、同一スレッド数の場合)
https://i.imgur.com/AKwAFec.png
>>747,759,764
そちらの環境でのマルチスレッドnumpyの測定数値が出ていたら自作ライブラリとの比較結果お願いします
792デフォルトの名無しさん
2023/08/22(火) 19:57:32.16ID:p77SLRC3 >>791
なんかnumpyでマルチスレッド指定しても速度上がんないんですけど何か要因は考えられますか?
なんかnumpyでマルチスレッド指定しても速度上がんないんですけど何か要因は考えられますか?
793デフォルトの名無しさん
2023/08/22(火) 21:29:39.50ID:3Q3W0wKi >>792
こちらでは素のvenvでやり直しても、defaultでマルチスレッドが効いています
$ python311 -m venv venv
$ . venv/Scripts/activate
$ pip install numpy
$ pip list
Package Version
---------- -------
numpy 1.25.2
pip 23.2.1
setuptools 65.5.0
$ du -h venv
96M venv
$ python matmul-numpy.py 1000
0.006245136260986328
0.006272077560424805
0.006720542907714844
0.007251739501953125
0.006670713424682617
0.0067596435546875
0.006724119186401367
0.005736351013183594
0.005699872970581055
0.007322788238525391
condaの場合は分かりませんので、とりあえずpipのopenblas版numpyで計測してみては?
https://numpy.org/install/#numpy-packages--accelerated-linear-algebra-libraries
こちらでは素のvenvでやり直しても、defaultでマルチスレッドが効いています
$ python311 -m venv venv
$ . venv/Scripts/activate
$ pip install numpy
$ pip list
Package Version
---------- -------
numpy 1.25.2
pip 23.2.1
setuptools 65.5.0
$ du -h venv
96M venv
$ python matmul-numpy.py 1000
0.006245136260986328
0.006272077560424805
0.006720542907714844
0.007251739501953125
0.006670713424682617
0.0067596435546875
0.006724119186401367
0.005736351013183594
0.005699872970581055
0.007322788238525391
condaの場合は分かりませんので、とりあえずpipのopenblas版numpyで計測してみては?
https://numpy.org/install/#numpy-packages--accelerated-linear-algebra-libraries
794デフォルトの名無しさん
2023/08/22(火) 22:57:52.73ID:3Q3W0wKi miniforgeのcondaでchannel指定してmkl版numpyを入れましたが、こちらもマルチスレッドが効いています(MKL_NUM_THREADS指定無しでも)
$ conda install -c intel numpy
$ du -h ****/tmpenv2
1.3G ****/tmpenv2 <-- orz
$ python -c 'import numpy; numpy.show_config()'
....
blas_mkl_info:
libraries = ['mkl_rt']
library_dirs = [****]
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = [****]
....
MKL_NUM_THREADS=8 python matmul-numpy.py 1000
0.007200717926025391
0.007269620895385742
0.0062868595123291016
0.00983738899230957
0.007195472717285156
0.006726503372192383
0.006485939025878906
0.0068206787109375
0.006815910339355469
0.006788492202758789
$ conda install -c intel numpy
$ du -h ****/tmpenv2
1.3G ****/tmpenv2 <-- orz
$ python -c 'import numpy; numpy.show_config()'
....
blas_mkl_info:
libraries = ['mkl_rt']
library_dirs = [****]
define_macros = [('SCIPY_MKL_H', None), ('HAVE_CBLAS', None)]
include_dirs = [****]
....
MKL_NUM_THREADS=8 python matmul-numpy.py 1000
0.007200717926025391
0.007269620895385742
0.0062868595123291016
0.00983738899230957
0.007195472717285156
0.006726503372192383
0.006485939025878906
0.0068206787109375
0.006815910339355469
0.006788492202758789
795デフォルトの名無しさん
2023/08/22(火) 23:05:57.11ID:3Q3W0wKi MKL版はthread数指定しないと=8よりも若干遅くなる
$ python matmul-numpy.py 1000
0.007860660552978516
0.009339094161987305
0.00830698013305664
0.006848335266113281
0.008496522903442383
0.007841348648071289
0.007840871810913086
0.00741887092590332
0.007982254028320312
0.006742000579833984
$ python -V
Python 3.8.11 :: Intel Corporation
芋づるインストールされた中でバージョンが気になるもの
mkl intel/win-64::mkl-2023.2.0-intel_49496
mkl-service intel/win-64::mkl-service-2.4.0-py38h9a4cf0c_35
mkl_fft intel/win-64::mkl_fft-1.3.6-py38h5020ddc_56
mkl_random intel/win-64::mkl_random-1.2.2-py38hf267b2b_76
mkl_umath intel/win-64::mkl_umath-0.1.1-py38h51af1d9_86
numpy intel/win-64::numpy-1.24.3-py38hcdfd0aa_0
numpy-base intel/win-64::numpy-base-1.24.3-py38h9b12b81_0
$ python matmul-numpy.py 1000
0.007860660552978516
0.009339094161987305
0.00830698013305664
0.006848335266113281
0.008496522903442383
0.007841348648071289
0.007840871810913086
0.00741887092590332
0.007982254028320312
0.006742000579833984
$ python -V
Python 3.8.11 :: Intel Corporation
芋づるインストールされた中でバージョンが気になるもの
mkl intel/win-64::mkl-2023.2.0-intel_49496
mkl-service intel/win-64::mkl-service-2.4.0-py38h9a4cf0c_35
mkl_fft intel/win-64::mkl_fft-1.3.6-py38h5020ddc_56
mkl_random intel/win-64::mkl_random-1.2.2-py38hf267b2b_76
mkl_umath intel/win-64::mkl_umath-0.1.1-py38h51af1d9_86
numpy intel/win-64::numpy-1.24.3-py38hcdfd0aa_0
numpy-base intel/win-64::numpy-base-1.24.3-py38h9b12b81_0
796デフォルトの名無しさん
2023/08/22(火) 23:11:09.00ID:3Q3W0wKi シングルスレッドがopenblasよりも若干遅いじゃないか!
この辺でやめておきますorz
MKL_NUM_THREADS=1 python matmul-numpy.py 1000
0.032694339752197266
0.03222513198852539
0.03307652473449707
0.03224611282348633
0.031710147857666016
0.03175640106201172
0.032773494720458984
0.032234907150268555
0.03272652626037598
0.0316920280456543
この辺でやめておきますorz
MKL_NUM_THREADS=1 python matmul-numpy.py 1000
0.032694339752197266
0.03222513198852539
0.03307652473449707
0.03224611282348633
0.031710147857666016
0.03175640106201172
0.032773494720458984
0.032234907150268555
0.03272652626037598
0.0316920280456543
797デフォルトの名無しさん
2023/08/23(水) 11:18:41.09ID:89z/H8g7 crate の docs の comment 率上げるために
struct に comment 付け捲る仕様はホントうざい
struct に comment 付け捲る仕様はホントうざい
798デフォルトの名無しさん
2023/08/24(木) 02:29:53.65ID:zGLBQFrp python や bumpy の話題はスレ違い。
OSSの話題は許容範囲。
同一視してはいけない。
OSSの話題は許容範囲。
同一視してはいけない。
799デフォルトの名無しさん
2023/08/24(木) 02:32:08.21ID:zGLBQFrp RustとC++の比較において、前者が「パソコンにおいて」
OSSからスタートしてしまったことは、全ての問題の始まり。
かつてC言語はUnixではOSSであったろうが、パソコンでは
原則的にクローズドであったからこそ発展を遂げた。
OSSからスタートしてしまったことは、全ての問題の始まり。
かつてC言語はUnixではOSSであったろうが、パソコンでは
原則的にクローズドであったからこそ発展を遂げた。
800デフォルトの名無しさん
2023/08/24(木) 02:42:41.30ID:hEI/Eij5801デフォルトの名無しさん
2023/08/24(木) 02:45:44.43ID:hEI/Eij5802デフォルトの名無しさん
2023/08/24(木) 02:47:37.96ID:zGLBQFrp803デフォルトの名無しさん
2023/08/24(木) 02:53:01.56ID:zGLBQFrp C言語は、規格はオープンと言えばオープンであったが、
PC-9801用のコンパイラのソースコードは非公開であった。
X68000 は gcc だったらしいが。
PC-9801用のコンパイラのソースコードは非公開であった。
X68000 は gcc だったらしいが。
804デフォルトの名無しさん
2023/08/24(木) 02:53:58.47ID:hEI/Eij5805デフォルトの名無しさん
2023/08/24(木) 02:56:38.98ID:hEI/Eij5 分かると思うけどタイポ
-因果化関係
+因果関係
-因果化関係
+因果関係
806デフォルトの名無しさん
2023/08/24(木) 03:19:55.67ID:zGLBQFrp >>804
クローズドだから競争が生じ、開発環境が高度に発展した。
クローズドだから競争が生じ、開発環境が高度に発展した。
807デフォルトの名無しさん
2023/08/24(木) 03:23:10.48ID:zGLBQFrp Win95が開発環境にとって終わりの始まりだった。
OSが32BIT化したことで、Unix系の無料OSSツールが
「主流のビジネスパソコン(PC-9801など)」の世界に
大量流入。
競争条件が破綻し、競争が不可能となり、衰退。
OSが32BIT化したことで、Unix系の無料OSSツールが
「主流のビジネスパソコン(PC-9801など)」の世界に
大量流入。
競争条件が破綻し、競争が不可能となり、衰退。
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 橋下徹氏 外務省幹部の訪中受け「口だけ番長」へ痛烈指摘 「喧嘩は日本の完敗…なんとかっこ悪い日本か」 [冬月記者★]
- 【外国人問題】小野田紀美担当相「不法就労や不法滞在は許さない」 [シャチ★]
- 【野球】井端監督 大谷翔平、山本由伸らのWBCへの参加 「1日も早く返事ほしい」「待っててといっても、国内組が遅くなってしまう」★3 [冬月記者★]
- 経団連会長、日中は建設的対話を 経済3団体が高市首相と初会談も日中関係は話題に登らず… [BFU★]
- 東京株式市場 インバウンド関連株が下落 中国政府の渡航自粛要請で [バイト歴50年★]
- 中国で「クレしん」公開延期 対日報復、エンタメに波及 [蚤の市★]
- 【高市早苗】習近平激怒か [115996789]
- 中国「高市が頭を下げて謝罪しない限り、絶対に許さない」 [329329848]
- 🏡
- 一人で行かないほうがいい板
- 有識者「高市総理が発言を撤回したり、辞職するしかないと言っている人は、それで日中関係が今まで通りになると思ってる?」 [834922174]
- 減税は低所得者差別
