brew-fileの各コマンド
BREWFILE
: brew
でインストールされるアプリのリスト。デフォルトで/usr/local/Library/Brewfile
にある。
こんなときは...
新しいアプリを入れるとき
brew file install <Application>
OR
brew file brew cask install <Application>
アップデートをチェックするとき
brew file update && brew file cask_upgrade
現在のアプリ情報をもとに、BREWFILE
を初期化したいとき
brew file init
各コマンドの意味
brew file install
パッケージをインストールする。
--preupdate
オプションを付けると、インストール前にbrew update
する。
brew file brew
通常のbrew
コマンドを実行した後、BREWFILE
をアップデートする
brew file init / -i / --init
現在のインストール済みパッケージをもとにBREWFILE
を初期化し、アップデートする。
brew file set_repo / -s / --set_repo
BREWFILE
のレポジトリをGitHubなどにセットする。
例: brew file set_repo -r <repository>
<repository>
にはgithub
のレポジトリ名を書く(e.g. joker8phoenix/Brewfile)。
brew file pull
レポジトリのBREWFILE
を落としてくる。
brew file push
レポジトリに、ローカルのBREWFILE
をアップする。
brew file clean / -c / --clean
リストにないインストールパッケージ、リストにないタップ、キャッシュを削除する。
より強くクリーンアップしたい場合は、-C
オプションをつける。
brew file update / -u / --update
以下の一連を実行する。
1. brew file pull
: BREWFILE
を落としてくる。
2. brew file install
: リストから不足分をインストール。
3. brew update/upgrade
: パッケージのアップデート
4. brew file init
: ローカルのインストールパッケージ分を足してリストを初期化。
5. brew file push
: リストをレポジトリにアップ
6. brew file clean -C
: クリーンアップ
brew file edit / -e / --edit
ローカルのBREWFILE
を編集する。
brew file casklist
Applications
, /Applications/Utilities
, ~/Applications/
にインストールされているアプリを、Caskに存在しているかどうかでチェックして、リスト表示する。
同時に~/
にリストを保存する。
brew file cask_upgrade
cask
アプリをアップグレード。
-C
オプションを付けると、古いバージョンを削除する。
参考
MacのRの行列演算を高速化
1. 背景
Mac限定の方法だが、Appleは各デバイスごとに数値計算アルゴリズムを最適化しており、accelerate.framework(vecLib)
といった名前で標準装備されている。
BLAS
やLAPACK
などが実装されている。
R
への適用方法は、BLAS
のシンボリックリンクを変更するだけだ。
2. 方法
ターミナル上で
cd /Library/Frameworks/R.framework/Resources/lib ln -sf /System/Library/Frameworks/Accelerate.framework/Versions/Current/Frameworks/vecLib.framework/Versions/Current/libBLAS.dylib libRblas.dylib
とすることで適用される。 Rstudioでも適用される。
3. テスト
これを用いて、行列演算テストを行う。 以下、結果を記載する。
################################################ ### MacBook Pro (Retina, 15-inch, Late 2013) ### ################################################ system.time(solve(matrix(runif(3000*3000),3000,3000)))['elapsed'] # elapsed # 設定前 48.756 # 設定後 1.25 set.seed(0) T <- 5 N <- 2000 A <- matrix(rnorm(N * N), N, N) ## Matrix multiplication t1 <- sapply(1 : T, function(t) system.time(A %*% A)['elapsed']) ## Matrix inversion t2 <- sapply(1 : T, function(t) system.time(solve(A))['elapsed']) ## Eigenvalues/vectors t3 <- sapply(1 : T, function(t) system.time(eigen(A))['elapsed']) ## Linear regression D <- as.data.frame(A) t4 <- sapply(1 : T, function(t) system.time(lm(V1 ~ ., data=D))['elapsed']) t1 # elapsed elapsed elapsed elapsed elapsed # 設定前 4.822 4.801 4.929 4.821 4.921 # 設定後 0.121 0.137 0.130 0.131 0.125 t2 # elapsed elapsed elapsed elapsed elapsed # 設定前 14.338 14.312 14.399 14.665 14.289 # 設定後 0.311 0.280 0.279 0.284 0.297 t3 # elapsed elapsed elapsed elapsed elapsed # 設定前 38.313 37.788 37.910 37.739 38.073 # 設定後 6.427 6.360 6.359 6.426 6.595 t4 # elapsed elapsed elapsed elapsed elapsed # 設定前 4.378 4.256 4.218 4.189 4.220 # 設定後 2.490 2.410 2.380 2.419 2.384
かなり高速化されていることが分かる。
参考
Accelerate(7) Mac OS X Manual Page https://developer.apple.com/library/mac/documentation/Darwin/Reference/Manpages/man7/Accelerate.7.html