タグ

ブックマーク / cpplover.blogspot.com (29)

  • macOSのM1とx86-64におけるベンチマーク比較の考察

    世間ではAppleの新しい製品に使われるARM64 CPUであるM1の話題でもちきりだ。ただし、日語を話す記者というのは極めて非科学的かつ無能であり、M1の現物を手にしても、末端のソフトウェアを動かして、体感で早いだの遅いだのと語るだけだ。そういう感想は居酒屋で酒を片手に漏らすべきであって、報道と呼ぶべきシロモノではない。 と思っていたら、Phoronixがやってくれた。M1とi7で動くmacOSでベンチマークをしている。 これを考察すると、M1のMac Miniは、一世代前のi7のMac Miniに比べて、メモリ性能とI/O性能が高く、演算性能は低いようだ。このことを考えると、M1の性能特性としては、動画のエンコードやソフトウェアレイトレーシングをするには不向きだが、その他の作業は遜色ないだろう。 問題は、仮想化とRosettaを組み合わせることができないという点だ。x86-64のユー

    ytkibk
    ytkibk 2020/11/29
  • 360度カメラの残念な現状

    冬のスノーボードのために動画撮影用のカメラを買おうと思っている。今の所、GoProの次のモデルが発表されたら買うのを検討しようかと思っているのだが、360度カメラという選択肢も出てきた。しかし調べたところ、360度カメラの現状はあまりよろしくない。 360度カメラではカメラを中心に全周囲を撮影できる。これによって追い撮りするときに撮影対象を収めそこねたという問題を回避できるし、自分も周囲も同時に撮影できる。私の目的は思い出を記録しておくことだから、360度カメラはとてもいい選択肢のように思える。 360度カメラは2つ以上のレンズを使って撮影した複数の映像をつなぎ合わせることで実現されている。一般的な製品では半球レンズを2つ使って2つの動画を撮影してつなぎ合わせている。 撮影した生の映像は、半球レンズによって著しく歪んだ2つの動画にすぎない。このままでは見るに耐えないので、視点を固定し、その

    ytkibk
    ytkibk 2020/09/01
    “なぜこれを問題視しているかと言うと、プロプライエタリなソフトウェアが10年後に動作する保証はどこにもないからだ。しかも360度動画のprojection処理はGPUを使うのでなおさらだ。”
  • LinuxカーネルにおけるGPLコンドーム問題への対処パッチ

    最近、Linuxカーネルで話題になっていることに、GPLコンドーム問題がある。 Kernel Developers Work To Block NVIDIA "GPL Condom" Effort Around New NetGPU Code - Phoronix 発端はNetGPUと呼ばれる機能をLinuxカーネルへ追加するパッチだ。これはNICとGPUの間のデータ転送にDMA zero-copyにしてNICとGPUが直接やり取りできるようにしつつ、プロトコル処理自体はCPUに処理させるという機能で、GPGPUがますます汎用化してくるなかでGPUから直接ネットワーク越しにデータを転送する事ができるようになる。 ところが、NetGPUをNVIDIAドライバーに対応させるパッチとやら出てきて物議を醸している。NVIDIAのドライバーはプロプライエタリであり、LinuxカーネルのGPLシンボル

    ytkibk
    ytkibk 2020/08/15
  • スノーボード用の別荘を検討している

    COVID-19によりリモートワークが長引いている。ここまでリモートワークが長引くのであれば、いっそのこと冬はスキー場近くに別荘を用意して滑りながら仕事をするのはどうか。これを真面目に検討してみた。 別荘を手に入れるためには購入するか賃貸しなければならない。購入するのは簡単だ。バブル期に立てたリゾートマンションが腐るほどある。現金が数百万もあればよい。中には取引額が負数の不動産さえある始末。問題は維持費だ。固定資産税がかかるし管理費、修繕積立金もかかる。そして日では不動産を放棄することができないので、バブル崩壊後のリゾートマンションはババ抜きとなっている。 引退後にその地方に移住するならば購入はありだが、運動強度の高いスノーボードを老後も続けられるかどうかはわからない。 賃貸はどうかというと、これがまたスキー場近くの不動産の購入に価値がないと思わせるほど賃料が安い。月3万も出せばワンルー

    ytkibk
    ytkibk 2020/07/11
  • 職質裁判、上告不受理で終了

    職質裁判は上告不受理で終了した。 calling-110-is-suspicious/20200626_zyoukoku_huzyuri.pdf at master · EzoeRyou/calling-110-is-suspicious 経緯はこうだ。3年前にひどい職務質問を受けた。 警察官に職務質問をされた話 警察官職務執行法に規定されている通り、職務質問をするためには職務質問を受ける人物について犯罪を犯した、あるいはこれから犯罪を侵すと疑うに足る相当な理由が必要だ。それに職務質問で規定されているのは質問であって、開口一番にリュックの中身を見せろと発言するのはもはや質問ではない。そして警察官2人がかりで路上に羽交い締めにされたり、多数の警察官によって私有地の駐車場に監禁され、何の法的根拠もない手荷物検査に応じるまで解放しない。これは説得でありお願いであるので法的根拠は必要ないと2時間拘

    ytkibk
    ytkibk 2020/07/01
  • 本の虫

    Linuxカーネル4.18から、userns mountに対して暗黙にSB_I_NODEVを設定するようになったために、既存のsystemdのnspawn実装が壊れた。 以下が問題のパッチだ。 https://github.com/torvalds/linux/commit/55956b59df336f6738da916dbb520b6e37df9fbd Linuxカーネルにおいては、ユーザースペースの挙動は変えないという強い下位互換保障がある。以前のバージョンのカーネルで動いていたユーザースペースのコードが新しいバージョンのカーネルで動かなくなった場合、それは理由が何であれ新しいバージョンのカーネルのバグであるとみなされる。たとえそれが、ドキュメント化していない明示的に保証されているわけではない昔のカーネルの暗黙の挙動であれ、その挙動に依存している既存のユーザースペースのコードがあるので

    ytkibk
    ytkibk 2019/09/10
    “以前のバージョンのカーネルで動いていたユーザースペースのコードが新しいバージョンのカーネルで動かなくなった場合、それは理由が何であれ新しいバージョンのカーネルのバグであるとみなされる”
  • GCC 5.0でのx86におけるPICの改善と、いかに32bit PICコードがクソであるかというお話

    GCC 5.0でのx86におけるPICの改善と、いかに32bit PICコードがクソであるかというお話 New optimizations for X86 in upcoming GCC 5.0: PIC in 32 bit mode. | Intel® Developer Zone GCC 5.0では、x86(32bit)におけるPIC(Position Independent Code)が改善された。これまではEBXレジスターがGOT(Global Offset Table)のために予約されていたのだが、これを使わなくなった。この結果、貴重なレジスターがひとつ多く使えることになった。 32bit x86におけるPICのダメっぷりは、以下の記事に詳しい。 EWONTFIX - 32-bit x86 Position Independent Code - It's that bad 32-

    ytkibk
    ytkibk 2015/04/16
  • fork()は失敗するんだぜ、覚えときな

    fork() can fail: this is important あー、fork()のことね。プロセスがもっとプロセス作るためのやつな。いや、他にもプロセス作る方法はあるけどな。ま、面白い話がもうひとつあるから聞かせてやるよ。 forkは失敗するんだぜ。分かってるか? マジで分かってるか? マジだぜ。forkは失敗するもんだ。mallocと同じさ。失敗することもある。そんなに頻繁にってわけじゃないけどさ、でも失敗したら、無視できっこないぜ。ちっとは脳みそ働かせなきゃならん。 forkが0を返したら、そいつは子プロセスで、親なら正数を返すってことは、みんな知ってるよな。その値は子のpidだ。こいつを保存しといて、あとで使うってわけだ。 失敗を確認しない場合どうなるか知ってるか? そうだよ。お前多分、"-1"(forkのエラー通知)をpidとして扱ってるんだろ。 さて、問題の始まりだ。

  • rm -rfしちゃったけどどうする

    rm -rf remains rm -rfの後に残りしもの 遊びのために、筆者は新しいLinuxサーバーを立ち上げて、rootでrm -rf /を実行して、何が残るかをみてみた。どうやら、今のrmというのは筆者のようなアホを相手にしなければならない未来に生きているようなので、実際に実行するには、--no-preserve-rootをつける必要があった。 # rm -rf --no-preserve-root / かかるおろかなる行為の後では、 /bin/ls /bin/cat /bin/chmod /usr/bin/file のような、偉大なるツールのたぐいはみな消え失せてしまった。まだ、ssh接続とbashセッションは生きているはずだ。つまり、bashの組み込みコマンドであるechoとかは残っているということだ。 Bashマクガイバーたれ root@rmrf:/# ls -bash: /

    rm -rfしちゃったけどどうする
  • 8086のバイナリが汚すぎる

    池袋バイナリ勉強会に参加して、8086の逆アセンブラーを作成しようとしているのだが、これが思いの外に難しい。いや、めんどくさい。 筆者は、これまでx86アセンブリには、ニーモニック経由でしか触れてこなかった。movはmovであり、それ以外の何者でもなかった。 mov ax, bx などと書いたら、これをアセンブラーにビット列に変換させて、その後は何も考えなかった。 既存のバイナリを逆アセンブラーにかけて読む場合でも、やはり逆アセンブラーがバイナリをニーモニックに変換してくれるので、やはりビット列による表現方法に関しては、考えたこともなかった。 さて、池袋バイナリ勉強会に参加したので、この機会に、逆アセンブラーでも実装しようと思い立った。そこで、Intelの当時の8086の資料を読んでみた。 Index of /Intel/x86/808x/datashts/8086 そして、絶望した。80

  • みなさんスラッシュドットから出てこないほうがいいですよ。

    Objective-Cという汚らしい言語を長年強制し、プログラマーを絶望の淵に叩き込んでいたAppleが、とうとう新言語を発表した。名前はSwiftという。 iTunes - Books - The Swift Programming Language by Apple Inc. ただし、現時点で、Swift言語仕様書のダウンロードと閲覧に、Appleの独自仕様満載の不自由なデバイス、の上で動く不自由なOS、の上で動く不自由な閲覧ソフトウェアが必要だ。そのため、筆者は未だに言語仕様書を読めずにいる。これをもってこれをみると、Appleの新言語にかける姿勢が如実に現れていると言えよう。すなわち、Appleの不自由なシステム以外は、市場として考慮する必要がないということに違いない。事実、Objective-Cは、Appleの不自由なシステムでプログラミングするにあたって、仕方なく使わなければな

  • Linux Torvalds、最近のCPUのPage Faultのコストにご不満の様子

    Linus Torvalds - Google+ - One of the things I end up doing is do a lot of performance… Linus Torvaldsが、最近のIntelのCPUは、通常以外の処理のコスト、つまりPage faultのコストが上がっているので、問題であるとしている。 俺はよくカーネルコードのパフォーマンスプロファイリングをやる。特に、VMとかファイルシステム周りに対してだ。 俺がよくやるのは、「うまくいってるとき」に対する計測だ。つまり、だいたいほぼ完璧にキャッシュされてる状況だな。というのも、俺はもちろんIOのことは気にかけているが、俺の個人的なワークロードはたいてい、うまくキャッシュされてるからだ。たとえば、俺にとってよくあるロードは、pullした後のフルカーネルビルドだ。これにどのくらいの時間がかかるかが問題になる

    ytkibk
    ytkibk 2014/05/02
  • なんでGCCはa*a*a*a*a*a を (a*a*a)*(a*a*a) に最適化できないの?っと

    c - Why doesn't GCC optimize a*a*a*a*a*a to (a*a*a)*(a*a*a)? - Stack Overflow 俺は科学技術計算の数値計算の最適化をしてたんだけどさ。GCCはpow(a, 2)をa*aにしてくれるんだな。うん。で、pow(a, 6)は最適化されずに、ライブラリ関数であるpowを呼んじゃうんだ。パフォーマンス的に最悪。(Intel C++ Compilerはpow(a,6)のライブラリ関数呼び出しを消し去ってくれるんだけどな) どうもよくわからんのが、pow(a, 6)をa*a*a*a*a*aで置き換えて、GCC 4.5.1をオプション"-O3 -lm -funroll-loops -msse4"で使ったら、mulsd命令を5個使う。 movapd %xmm14, %xmm13 mulsd %xmm14, %xmm13 mulsd

    ytkibk
    ytkibk 2014/03/29
  • Linus、CPUの信頼性について語る

    CPU reliability (Linus Torvalds) 2007年のLinusのメールだが、Hacker Newsで話題になっていたので。 From: Linus Torvalds <torvalds@linux-foundation.org> Newsgroups: fa.linux.kernel Subject: Re: [patch] CFS scheduler, -v8 Date: Fri, 11 May 2007 16:52:21 UTC Message-ID: <fa.oZhj8hj7kSDLnitsqrEJcRJN+RE@ifi.uio.no> On Thu, 10 May 2007, Pavel Machek wrote: そもそも、今のCPUは300年も稼働するようには設計されていない。50年以上稼働するハードウェアが設計された後で考えても遅くはない。 そうだな

    ytkibk
    ytkibk 2013/12/10
  • 100kbpsで閲覧できるWebサイト、できないWebサイト

    今、私が常時使えるネット回線は、DTIの提供する格安のSIMカードを利用したLTE経由のものだ。利用料金は月々490円+ユニバーサルサービス料3円となっている。 とてつもなく格安だが、極端な制限がある。帯域が100kbps、今は実験的に150kbpsに制限されているということだ。転送量制限はないのだが、この帯域は、2013年にはなかなかに厳しい。 私は、まだ56Kbpsのアナログモデムの頃からインターネットを利用しているが、もはや最低でも数Mbpsは当たり前になったこの時代に、100kbpsは、結構難しいところもある。使えるかどうかは、Webサイトにより異なる。 今、風邪をひいて体調が悪く、外に出れないのを幸いに、この低帯域でできることを試してみることにした。 まず、まともに閲覧できないWebサイトだ。 例えば、GMailのような、巨大なJavaScriptでできたプログラムで、常にサーバ

    ytkibk
    ytkibk 2013/12/05
  • C99の複素数ライブラリがクソすぎる。

    C99では、複素数ライブラリが採用された。たとえば3.0 + 4.0iの複素数を書きたい場合、GNU拡張では、以下のように書く。 #include <complex.h> double _Complex x = 3.0 + 4.0i ; complex.hをincludeすれば使えるようになる。見た目はそのまんまだ。 これはGNU拡張であって、C99の規格による正式な書き方は以下の通りだ。 float _Complex x = 3.0 + 4.0 * _Complex_I ; _Complex_Iは、"0+1i"を意味する虚数単位定数であり、にかければ任意の虚部を表現できる。あとは実部を足せばいい。 どうやら、C標準化委員会は、まともな名前を考えつかなかったらしい。まあ、大方のきれいな名前は、既存のソースコードと衝突してしまうから、アンダースコアに大文字で始まる予約語を使うしかないのだろう

    ytkibk
    ytkibk 2013/11/16
  • 6年前と今のコンピューターの性能比較

    「タダ飯の時代は終わった」(The free lunch is over.)とHerb Sutterは宣言した。 タダ飯というのは、コンピューターの性能向上にかかる期間があまりに短かった時代を表す言葉だ。一昔前は、コンピューターの性能が倍々に上がっていくので、今、コンピューターの性能が足りないために使えないソフトウェアでも、来年辺りには使えるようになっていたのだ。つまり、プログラマーは苦労せずしてタダ飯をかっらうことができるのだ。どうせ1年か2年待てば、パフォーマンスは問題にならなくなるのだ。今ソフトウェアを最適化する意味がない。 一昔前、我々はタダ飯を享受していた。集積回路の密度が9ヶ月、ないしは1年、そして1.5年で倍になり、回路を駆動させるクロック周波数も倍になっていくのだから、実質、1年ぐらいで、コンピューターの性能は倍になるのだ。すると、2年後には4倍に、3年後には8倍になって

    ytkibk
    ytkibk 2013/11/05
  • Linus Torvalds、Linuxの32bit版の優先度は低いと表明

    [Phoronix] Linus Acknowledges 32-Bit Linux As Less Important 32-bit版のLinuxカーネルにおける、既存のある問題を修正したLinuxカーネル3.12に対するパッチのpullが、Linusによって退けられた。理由は、Linusは3.12のリリースを遅らせたくないからだという。すでに壊れていて、それほど問題になっていない問題を修正するのに、カーネルのリリースを遅らせたくないこと、それに、32-bit版の優先度は低いと言っている。 Linux-Kernel Archive: Re: [git pull] fixes for 3.12-final On Sun, Nov 3, 2013 at 11:54 AM, Al Viro wrote: > たしか、前にこういうことで32bit版のiget()が深刻に壊れて、 > それで、もう

    ytkibk
    ytkibk 2013/11/05
  • x86のMMUはチューリング完全である

    jbangert/trapcc · GitHub The Page-Fault Weird Machine: Lessons in Instruction-less Computation | USENIX x86のMMU、つまりは割り込みとメモリ変換テーブルは、チューリング完全であることの証明。割り込みとメモリ変換テーブルを活用して、プログラムカウンターを一切進めず、ひたすら割り込みを続けるだけで、任意の演算が可能になる。もちろん条件分岐だってオーケーだ。 このテクニックを使えば、カーネルモジュールのバイナリにとても解析が面倒な難読化処理を施すことができる。なぜなら、通常のインストラクションは実行しないから、何をしているのか、通常のインストラクションを追うだけでは一見して明らかではないからだ。そもそも、既存のKGDBなどは、あまりに頻繁な割り込みがかかるため、まともに機能しなくなるようだ

    ytkibk
    ytkibk 2013/09/29
  • LinuxカーネルのMLにおける悪口の励行についての議論勃発

    Linuxカーネルのメーリングリストは、常に罵詈雑言に満ち溢れているが、そういうのは辞めて大人になろうという主張がSarah Sharp[1]によってなされた。なかなか面白い。 きっかけは、いたって日常的な罵倒混じりの議論に、Sarah Sharpが横槍を入れたところから始まった。 LKML: Sarah Sharp: Re: [ 00/19] 3.10.1-stable review On Fri, 12 Jul 2013 18:17:08 +0200, Ingo Molnar <mingo@kernel.org> wrote: * Linus Torvalds <torvalds@linux-foundation.org> wrote: On Fri, Jul 12, 2013 at 8:47 AM, Steven Rostedt <rostedt@goodmis.org> wrote

    ytkibk
    ytkibk 2013/07/16