t-nissieの日記: 【国民投票案】3Dプリンター使ってる? 9
職場の3Dプリンターを仕事で使ってる
職場の3Dプリンターを私用している
家の3Dプリンターを活用している
家の3Dプリンターで仕事をしている
3Dプリンターを使ったことはない
われこそは3Dプリンターなり!
t-nissieさんのトモダチの日記、みんなの日記も見てね。 アナウンス:スラドとOSDNは受け入れ先を募集中です。
職場の3Dプリンターを仕事で使ってる
職場の3Dプリンターを私用している
家の3Dプリンターを活用している
家の3Dプリンターで仕事をしている
3Dプリンターを使ったことはない
われこそは3Dプリンターなり!
お久しぶりでございます。
十数年前のPCにUbuntu 22.04 LTS 日本語 Remixをインストールして使っているんですが、
そこにRuby 3.3.0-preview1をコンパイル&インストールしたら岩波公式集Iの例の数値積分が高速になりました。
開発者の皆様に感謝!
2016年に作ったRubyのRangeを積分範囲としてブロックで与えられた関数を数値積分するライブラリと
2018年に少し話題になっていた岩波数学公式Iのp.240の数値積分に2022年に挑戦したときの記録は
https://gist.github.com/t-nissie/b6ef8d39229a2534498b
今回のRubyのテスト(93秒が84秒に高速化してJITを使うと45秒で例の積分が終わる):
$ lscpu
モデル名: Intel(R) Core(TM) i7-3770K CPU @ 3.50GHz
$ git clone https://gist.github.com/b6ef8d39229a2534498b.git integrations
$ cd integrations
$ uname -r -v
5.19.0-41-generic #42~22.04.1-Ubuntu SMP PREEMPT_DYNAMIC Tue Apr 18 17:40:00 UTC 2
$ ruby --version
ruby 3.0.2p107 (2021-07-07 revision 0db68f0233) [x86_64-linux-gnu]
$ /usr/bin/time -f "%e %M" ruby part.rb ###--jitではほとんど速くならなかった###
-0.13449639088600002
-0.00183072931408726
-0.00004147904805336
-0.01811104207072666
--------------------
-0.15447964131886729
====================
-0.15447964132000000 Iwanami
92.63 21888
$ sudo apt install libssl-dev libffi-dev libyaml-dev libz-dev
$ pwd
$ /SOMEWHERE/ruby-3.3.0-preview1/build-gcc-11.3.0
$ ../configure --prefix=/tmp/ruby-3.3.0-preview1
$ make -j9
$ make install
$ PATH=/tmp/ruby-3.3.0-preview1/bin:$PATH ruby --version
ruby 3.3.0preview1 (2023-05-12 master a1b01e7701) [x86_64-linux]
$ PATH=/tmp/ruby-3.3.0-preview1/bin:$PATH /usr/bin/time -f "%e %M" ruby part.rb
-0.13449639088600002
-0.00183072931408726
-0.00004147904805336
-0.01811104207072666
--------------------
-0.15447964131886729
====================
-0.15447964132000000 Iwanami
83.88 23760
$ PATH=/tmp/ruby-3.3.0-preview1/bin:$PATH /usr/bin/time -f "%e %M" ruby --jit part.rb
-0.13449639088600002
-0.00183072931408726
-0.00004147904805336
-0.01811104207072666
--------------------
-0.15447964131886729
====================
-0.15447964132000000 Iwanami
44.92 37160
7月17日、マルチプラットフォーム対応のオープンソースな
ビルドシステムCMakeの最新版3.12.0がリリースされた。
そのリリースサイクルが始まった約1ヶ月前、CMakeの開発元
のKitware社に所属する開発者らがRobert Maynard氏を中心に
redditでAMA (Ask Me Anything) を開催していた。そのスレッド。
曰く「ぼくはCMakeのリリースサイクルのマネジメントをしているよ。
『CMakeは嫌い』って言うのみんな大好きだよね。なんでも聞いてね。」
Kitware社はオープンソースな三次元グラフィクスシステムのVTKの開発で有名だ。
Robert Maynard氏はCMakeのCUDA対応も担当しているとのこと。
「『嫌い』って言うのみんな大好きなのはAutotoolsじゃなかったのかな?」との質問には
「その王冠をAutotoolsから奪えて嬉しいよ。」、
「Mesonについてはどう思ってる?」との質問には
「全てがよくオーガナイズされているようだね。」などと答えている。
みなさまはAutotools, CMake, Mesonなどのビルドシステムについてどう思われてますか?
GCC 7.3.0がリリースされたそうです。IntelのCPUの脆弱性「Spectre」を
回避する機能が入っているそうですが、よくわかりません。
Fortran の Bug 82567 - [6/7/8] gfortran takes a long
time to compile a simple implied-do with -Optimization.
が直っているかどうかためして遊んでみました。Modern Fortranではこんな
内包表現みたいな書き方もできるんですね。知りませんでした。writeの後の
暗黙のdoは知ってましたが。
$ cat intensional.f
! test Bug 82567
! https://gcc.gnu.org/bugzilla/show_bug.cgi?id=82567
! http://www48.atpages.jp/fortran2008/index.html.bak
!!
SUBROUTINE sub()
IMPLICIT NONE
INTEGER, PARAMETER :: n = 10000
REAL, ALLOCATABLE :: x(:)
REAL :: xc, h
INTEGER :: i
ALLOCATE( x(n) )
xc = 100.
h = xc/n
x = h*[(i,i=1,n)]
! Replacing the previous line with one of these lines gives faster compilation
! x = [(i*h,i=1,n)]
! x = (100./n) *[(i,i=1,n)]
END SUBROUTINE sub
$ gfortran --version && /usr/bin/time -p gfortran -O1 -Wall -ffree-form -c intensional.f
GNU Fortran (GCC) 7.2.0
(中略)
real 21.38
user 20.68
sys 0.11
$ gfortran --version && /usr/bin/time -p gfortran -O1 -Wall -ffree-form -c intensional.f
GNU Fortran (GCC) 7.3.0
(中略)
real 10.62
user 10.54
sys 0.06
これで、直っているのでしょうか???
いまいちバグジラに何て書いてあるかわかりません。
まあ、展開に時間がかかっているのでしょう。
-ftime-reportなんてコンパイルオプションもあるんですね。
タイトルは煽りです。
いまさらCMakeとNinjaを試してみました。
GNU AutotoolsにくらべてCMakeがとてもよいとはわたくしは言えないです。
GNU MakeにくらべてNinjaはとても(下の例では2.5倍)速いです。驚きました。
$ tar xf xtalgrowth-1.0.3.tar.gz
$ mkdir xtalgrowth-1.0.3/build-make xtalgrowth-1.0.3/build-ninja
$ cd xtalgrowth-1.0.3/build-ninja/
$ cmake .. -G Ninja
$ /usr/bin/time ninja -j6
[9/9] Linking C executable src/xtalgrowth
0.13 real 0.23 user 0.11 sys
$ cd ../build-make/
$ cmake ..
$ /usr/bin/time make -j6
Scanning dependencies of target xtalgrowth
[ 11%] Building C object src/CMakeFiles/xtalgrowth.dir/PostScript.c.o
:
[ 88%] Building C object src/CMakeFiles/xtalgrowth.dir/parse_opt.c.o
[100%] Linking C executable xtalgrowth
[100%] Built target xtalgrowth
0.32 real 0.31 user 0.23 sys
$ ninja --version
1.8.2
以上 http://loto.sourceforge.net/xtalgrowth/ で遊んでみた結果の報告でした。
今年6年ぶりに活動を再開したシンガーソングライターの宇多田ヒカルが
2016年12月9日(金) 21:00~21:30 GYAO!から
『30代はほどほど。』と題して3DVRの生中継を計画している。
(2Dマルチアングル版/通常版の配信もあり。)
コの業界において宇多田ヒカルは20歳の誕生日の2003年1月19日に
『20代はイケイケ!』と題した初期的で大規模なインターネットストリーミング放送を
成功させたことで知られているかもしれない。
同年のUNIX MAGAZINE4月号と5月号には沖本忠久による技術解説が掲載された。
上記GYAO!の告知ページではそのダイジェスト映像が視聴可能だ。
タレコミ子はストリーミング放送は見逃してしまったが、
あとからDVDを買って、観て、
天才じゃなくて普通の女の子なんだ→歌い始める→やっぱ天才だわ、
と思ったことを憶えている。
これからの活動に目が離せないヒッキーに対する思いや、
インターネットストリーミングについてのあれこれ、
中の人の思い出話や現在の苦労話などをコメントしていただけたら幸いである。
ありがたいことに、どこかの誰かがどこかのバグを直してくれたのか、
Pkg.update("Winston")したらWinstonがJulia-0.5で動くようになった。
WARNING: Base.FS is deprecated, use Base.Filesystem instead.
って警告は、$HOME/.julia/v0.5/Winston/src/Winston.jl を
diff --git a/src/Winston.jl b/src/Winston.jl
index ecfaaa6..8f7b5ee 100644
--- a/src/Winston.jl
+++ b/src/Winston.jl
@@ -1868,7 +1868,7 @@ function savesvg(p::PlotContainer, io::IO, width, height)
end
function savesvg(p::PlotContainer, filename::AbstractString, width, height)
- io = Base.FS.open(filename, Base.JL_O_CREAT|Base.JL_O_TRUNC|Base.JL_O_WRONLY, 0o644)
+ io = Base.FileSystem.open(filename, Base.JL_O_CREAT|Base.JL_O_TRUNC|Base.JL_O_WRONLY, 0o644)
savesvg(p, io, width, height)
close(io)
nothing
と直せば、抑制できる。
だがしかーし、
Julia-0.4.6:
julia> VERSION
v"0.4.6"
julia> typeof(x -> x[1])
Function
Julia-0.5:
julia> VERSION
v"0.5.0"
julia> typeof(x -> x[1])
##1#2
これはバグなのか新しい仕様なのか。
追記:
仕様みたい→Julia言語の0.5の変更点
こんなかんじで困っている:
julia> VERSION
v"0.5.0"
julia> function g(f::Array{Function,1})
x = [1,2,3]
map(f_each -> f_each(x), f)
end
g (generic function with 1 method)
julia> g([x -> 1x[1], x -> 2x[2], x -> 3x[3]])
3-element Array{Int64,1}:
1
4
9
julia> g([x -> 1x[1], x -> 2x[2]])
2-element Array{Int64,1}:
1
4
julia> g([x -> 1x[1]])
ERROR: MethodError: no method matching g(::Array{##13#14,1})
Closest candidates are:
g(::Array{Function,1}) at REPL[1]:2
function g(f::Array{Function,1})と引数の型を指定しないで、ただ
function g(f)と書けば動くけど。
0.4.6でdeprecated
julia> VERSION
v"0.4.6"
julia> bool(Complex(1.0,-0.0))
WARNING: bool(x::Number) is deprecated, use x != 0 instead.
in depwarn at deprecated.jl:73
in bool at deprecated.jl:50
while loading no file, in expression starting on line 0
true
0.5でError
julia> VERSION
v"0.5.0"
julia> bool(Complex(1.0,-0.0))
ERROR: UndefVarError: bool not defined
ソースコードを印刷する機会はあまりなくなってきている。
しかし、どうしても取れないバグを見つけたいときや
新しい言語を学びたいときはまだソースを印刷してぼんやり眺めたり
鉛筆で書き込みを入れながら流れを追うことがある。
で、Juliaのコードを印刷したくなって、a2ps用のスタイル
シートを書いた→highlighting Julia code with a2p(1)。
$ LANG=C a2ps --header='Printed by t-nissie' --media=a4 --prologue=color\
--portrait --columns=1 --margin=3 --borders=off -f 11.0 --pretty-print=julia\
-o RungeKutta.ps ~/.julia/v0.4/RungeKutta/src/RungeKutta.jl
などと使う。
で、ruby.sshはこうしないと、module名とかdefで定義される
関数の名前とかがハイライトされないような気がする。
--- a2ps-4.14/sheets/ruby.ssh 2007-12-29 10:35:15.000000000 +0900
+++ /usr/share/a2ps/sheets/ruby.ssh 2016-09-04 07:08:35.675506024 +0900
@@ -48,8 +48,8 @@
/^=begin/ Comment_strong /^=end/,
# Some declarations
- (/\\(def\\|class\\|module\\)/ # \1. the keyword
- /\\([[:blank:]]+\\)/ # \2. blanks
+ (/(def|class|module)/ # \1. the keyword
+ /([[:blank:]]+)/ # \2. blanks
\1 Keyword_strong, \2 Plain) (Label_strong + Index1)
closers are
/$/ Plain,
* 関数電卓
* 携帯電話のアプリ
* GNUPLOTのプロンプト(数学関数豊富、履歴機能、グラフもすぐ描ける)
* Juliaのプロンプト(2\1で割り算も)
* bc(1)
* Emacsの*scratch*でEmacs Lisp
* 逆ポーランド記法の何か
わたくしは、GNUPLOT、Emacsの*scratch*、関数電卓の順。
未知のハックに一心不乱に取り組んだ結果、私は自然の法則を変えてしまった -- あるハッカー