パスワードを忘れた? アカウント作成
16631108 journal
ハードウェアハック

t-nissieの日記: 【国民投票案】3Dプリンター使ってる? 9

日記 by t-nissie

職場の3Dプリンターを仕事で使ってる
職場の3Dプリンターを私用している
家の3Dプリンターを活用している
家の3Dプリンターで仕事をしている
3Dプリンターを使ったことはない
われこそは3Dプリンターなり!

16631105 journal
Ruby

t-nissieの日記: Ubuntu 22.04 LTS に Ruby 3.3.0-preview1 をコンパイル&インストールしたら岩波公式集Iの例の数値積分が高速になったはなし

日記 by t-nissie

お久しぶりでございます。
十数年前の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

13651742 journal
プログラミング

t-nissieの日記: 【電脳】CMake 3.12.0がリリース、開発者らがredditでAMA (Ask Me Anything)を開催【タレコミ】

日記 by t-nissie

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などのビルドシステムについてどう思われてますか?

13513324 journal
GNU is Not Unix

t-nissieの日記: 【電脳】GCC 7.3.0をコンパイルして遊んでみた

日記 by t-nissie

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なんてコンパイルオプションもあるんですね。

13431656 journal
GNU is Not Unix

t-nissieの日記: 【電脳】いまさらMakeを使っている人はMake組。Ninja速い。 1

日記 by t-nissie

タイトルは煽りです。
いまさら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/ で遊んでみた結果の報告でした。

12977360 journal
インターネット

t-nissieの日記: 【タレコミ】宇多田ヒカル『30代はほどほど。』と題して3DVR配信を計画 7

日記 by t-nissie

今年6年ぶりに活動を再開したシンガーソングライターの宇多田ヒカルが
2016年12月9日(金) 21:00~21:30 GYAO!から
『30代はほどほど。』と題して3DVRの生中継を計画している。
(2Dマルチアングル版/通常版の配信もあり。)

コの業界において宇多田ヒカルは20歳の誕生日の2003年1月19日に
『20代はイケイケ!』と題した初期的で大規模なインターネットストリーミング放送を
成功させたことで知られているかもしれない。
同年のUNIX MAGAZINE4月号と5月号には沖本忠久による技術解説が掲載された。
上記GYAO!の告知ページではそのダイジェスト映像が視聴可能だ。
タレコミ子はストリーミング放送は見逃してしまったが、
あとからDVDを買って、観て、
天才じゃなくて普通の女の子なんだ→歌い始める→やっぱ天才だわ、
と思ったことを憶えている。

これからの活動に目が離せないヒッキーに対する思いや、
インターネットストリーミングについてのあれこれ、
中の人の思い出話や現在の苦労話などをコメントしていただけたら幸いである。

12970477 journal
アップグレード

t-nissieの日記: 【電脳】Juliaのtypeof(x → x[1])

日記 by t-nissie

ありがたいことに、どこかの誰かがどこかのバグを直してくれたのか、
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)と書けば動くけど。

12944601 journal
数学

t-nissieの日記: 【電脳】Juliaのbool(x::Number)

日記 by t-nissie

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

12905767 journal
GNU is Not Unix

t-nissieの日記: 【電脳】GNU a2ps で Julia のコードをハイライト【ソースコードの印刷】

日記 by t-nissie

ソースコードを印刷する機会はあまりなくなってきている。
しかし、どうしても取れないバグを見つけたいときや
新しい言語を学びたいときはまだソースを印刷してぼんやり眺めたり
鉛筆で書き込みを入れながら流れを追うことがある。

で、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,

12857981 journal
日記

t-nissieの日記: 【国民投票】簡単な技術計算に何使ってる? 18

日記 by t-nissie

* 関数電卓
* 携帯電話のアプリ
* GNUPLOTのプロンプト(数学関数豊富、履歴機能、グラフもすぐ描ける)
* Juliaのプロンプト(2\1で割り算も)
* bc(1)
* Emacsの*scratch*でEmacs Lisp
* 逆ポーランド記法の何か

わたくしは、GNUPLOT、Emacsの*scratch*、関数電卓の順。

typodupeerror

私はプログラマです。1040 formに私の職業としてそう書いています -- Ken Thompson

読み込み中...