Computer
bfloatとは何か
· ☕ 1 min read
double vs fp32 vs fp16 vs bfp16 double (64bit) 1/11/52 = 64 fp32 -> float (32bit) 1 / 8 / 23 = 32 fp16 -> float (16bit) 1 / 5 / 10 = 16 IEEEで規格化 bfloat16 1 / 8 / 7 = 16 指数部をfp32に合わせている 仮数部は実質的な有効数字 (粒度) を決めて,指数部は値のrangeを決めるので,仮数部を減らして指数部を増やすことで,取りうる値のrangeを最大化してあげる (仮数部) x 2^(指数部) 2^() ...


CPU = ALU + Register + L{1..3} Cache + etc
· ☕ 1 min read
CPUの主な構成要素は以下の通り: ALU(Arithmetic Logic Unit,算術論理演算装置): ALUは,レジスタから読み出されたオペランド(操作対象のデータ)とオプコード(操作を指示するコード)を用いて,算術計算や論理演算を行う. レジスタ: レジスタは,高速な小容量の記憶装置で,CPU内で直接アクセスされるデータや指令を ...

【Computer Science】知っておくべき数字一覧
· ☕ 1 min read
分岐予測の失敗 → 5ns L1 / L2キャッシュ→ 0.5ns / 7ns L1 cache reference 0.5 ns Branch mispredict 5 ns L2 cache reference 7 ns Mutex lock/unlock 100 ns Main memory reference 100 ns Compress 1K bytes with Zippy 10,000 ns 0.01 ms Send 1K bytes over 1 Gbps network 10,000 ns 0.01 ms Read 1 MB sequentially from memory 250,000 ns 0.25 ms Round trip within same datacenter 500,000 ns 0.5 ms Disk seek 10,000,000 ns 10 ms Read 1 MB sequentially from network 10,000,000 ns 10 ms Read 1 MB sequentially from disk 30,000,000 ns 30 ms Send packet CA->Netherlands->CA 150,000,000 ns 150 ms Where 1 ns = 10-9 seconds 1 ms = 10-3 seconds 引用: “Numbers Everyone Should Know” from Jeff Dean. doubleのbit数 MSB・指数・仮数で1 ...


SIGHUP
· ☕ 1 min read
ターミナルの終了時やハングアップによって送られるシグナル DHCPを作成する演習で, SIGHUPをハンドリングしろと言われてピンと来なかったが どうやら サーバプロセスの多くはSIGHUPを受け取るとプロセスを終了して再起動する https://atmarkit.itmedia.co.jp/ait/articles/1708/04/news015.html らしいので, 合点。 nohupを使えばSIGHUPがプロセスへ送られないようにできるらしい https://qiita.com/f0o0o/items/7f9dfaf3f7392c0ce52f ...

Core Animation と CALayer
· ☕ 1 min read
#iOS Core Animation → レンダリングとアニメーションの処理を担う. Core Animation is a graphics rendering and animation infrastructure available on both iOS and OS X that you use to animate the views and other visual elements of your app. https://developer.apple.com/library/archive/documentation/Cocoa/Conceptual/CoreAnimation_guide/Introduction/Introduction.html#//apple_ref/doc/uid/TP40004514-CH1-SW1 UIView → 表示するオブジェクトを管理し, レイアウトやタッチイベントなどを処理. layerオブジェクト → アプリのデータを管理するモデルオブジェクト. → layerは情報をbitmap形式で管理 → 基本的にはメインスレッド ...


テストについて
· ☕ 1 min read
#開発 #テスト テストケースを如何に作るか ・EP-BVA手法 ・ペアワイズ法 → → 各属性の全パターンを網羅しようとすると計算量爆発するので, 任意の二項間のみでテストケースを作るようにする → 「ソフトウェアのバグの多くが1つまたは2つの因子の組み合わせによって発生している という事実に基づいてテストケースを作成する方法」 ・状態遷移 ...


Lattie
· ☕ 1 min read
https://airbnb.io/lottie/images/logo.webp Lottie is a mobile library for Android and iOS that natively renders vector based animations and art in realtime with minimal code. Lottie loads and renders animations and vectors exported in the bodymovin JSON format. Bodymovin JSON can be created and exported from After Effects with bodymovin, Sketch with Lottie Sketch Export, and from Haiku. 引用: https://github.com/airbnb/lottie-ios Bodymovinとは, After Effectsのプラグインのことらしい. → https://github.com/airbnb/lottie-web ...


OCamlとTail Call
· ☕ 2 min read
末尾再帰について一度整理しておく. → OCaml, Haskell, Scala など多くの関数型言語の処理系は末尾再帰を最適化. 末尾呼び出し 1 2 3 4 5 6 7 8 fn f(x: T){ifisTrue(hoge){// not 末尾呼び出し returng();// 末尾呼び出し }else{returnx*h();// not 末尾呼び出し }} 末尾再帰 1 2 3 4 5 6 7 8 fn f(x: T){ifisTrue(hoge){returnf(x);// 末尾再帰 }else{returnx*f(x);// not 末尾再帰 }} → 末尾再帰はコールスタックを食いつぶさない コールスタック 通常のプログラムの実行モデルでは、関数を呼 ...

RuntimeError: reciprocal_cuda not implemented for ComplexHalf
· ☕ 1 min read
1 C = C * (1. - dtA/2).reciprocal() * dt.unsqueeze(-1) # or * dtA / A ComplexHalf = torch.complex32のこと ComplexHalfにはreciprocal_cudaが実装されていないらしい 逆数を求める際の精度の問題? AMPやfp16で計算しようとすると,本来64bitのcomplexで計算されるはずの項が32bitになって,逆数が計算できなくなる ...

些末な文書タスクはLLMに任せよう
· ☕ 2 min read
些末な文書系タスクはLLMに任せましょう 大学の課題については自分でやったほうが良いのでLLMは使わないでくださいね. 理由 → (拙作)凡人理系学部生の我々は何をすべきなのか 一方で,非常に些末で得るものが何もない・重要性が低い文書系タスクはLLMにやらせて,自分の研究に集中しましょう. ちなみに,GPT-3.5とGPT-4の文 ...