BLASの高速化

祝! libgoto-1.0.0 リリース!

TACCより(要登録)ダウンロード

なんでも掲示板で話題の後藤ライブラリ(libgoto)

なんでも掲示板より

更なる幸せを求めて.

私「マシン欲しい...奥様買ってぇ〜(爆)」
妻「昨日速くなったって喜んでたじゃない。」
私「...」

Windowsの人

から自分のCPUにあった

libgoto_CPU_L2-Rel.zip をダウンロード
libgoto_CPU_L2-Rel.zip を解凍
# Rblasと置き換える
move R_HOME?bin?Rblas.dll R_HOME?bin?Rblas.dll.org
copy  libgoto_CPU_L2-Rel.dll R_HOME?bin?Rblas.dll

R-1.9.1のソース(win32)の中にはlibgotoが複素数を扱えない ものとしてblasGoto.cがコーディングされている. その結果,R標準のBLASのcmpblas.fが利用される. なんとなく、その労力を消すのはもったいない気がする.(謎)
ソースからビルドする方は注意されたい.

Unixの人

http://www.cs.utexas.edu/users/kgoto/ から自分のCPUにあった

libgoto と xerbla.c をダウンロード.
gzip -d  libgoto_p4_128-r0.94.so.gz
gcc -c xerbla.c
gcc -shared -o libgoto.so ~/libgoto_p4_128-r0.94.so xerbla.o 
# xerbla(BLASやLAPACKで表示に必要)ルーチンはRのsrc/main/print.cにも
# 含まれているので,Rでしかlibgotoを使わないならば,直接libgoto_xx_xxx-r0.xx.so
# を使えば良い.

Rgoto と言うシェルスクリプト作成

#!/bin/bash
export LD_PRELOAD=~/libgoto.so:/lib/libpthread.so:/lib/libm.so
${RPROG:-R} -q $* 

起動

$ ./Rgoto

無論、ちゃんとビルドしなおした方が良いのは言うまでも無い.

スレッド使いな人

マルチスレッド版のGogo's BLASをダウンロード
環境変数 OMP_NUM_THREADS 又は GOTO_NUM_THREADS(0.99以降) に並列数を定義

export OMP_NUM_THREADS=2

A%*%B等の演算が高速に行われます

野良ビルド派

libgotoを/usr/local/libに入れたなら.

./configure --with-blas='-L/usr/local/lib -lgoto_xxx -lpthread'

rpmの人向け

SPECファイルfilelibgoto.spec をダウンロード.
ターゲットのlibgotoとxerbla.c をダウンロード.

mv libgoto.spec ~/rpm/SPECS/
mv libgoto*so.gz xerbla.c ~/rpm/SOURCES/

# define で cpu と rel をあたえる.
rpm -ba --define 'cpu p4_128' --define 'rel r0.95' ~/rpm/SPECS/libgoto.spec

# インストール
rpm -ivh ~/rpm/RPMS/i386/libgoto*.rpm

R 本体は SPECファイル内の configure の所に --with-blas=goto を加えて再ビルド を行えばよい.

なんでも掲示板で話題が薄くなったATLAS

Windowsの人

http://cran.md.tsukuba.ac.jp/bin/windows/contrib/ATLAS/ から適当なRblas.dllをダウンロードしてR_HOME/bin にコピーすればよい.

Debian

Debianの中の人はアレゲ(?)なので既にRはATLAS化されています. でもキャッシュのサイズはマシン毎に異なるので自前でビルドしなおすと もうすこし早くなると思われる.

Unix

ATLASを持ってきて

make xconfig
./xconfig -c gcc -f g77 -m gcc -F c $CFLAGS -F f $FFLAGS -F m $CFLAGS

等好き勝手にするなり、言われたとおりにするなり好奇心の続く限り挑戦する. さらにLAPACK(ATLAS化)も可能だが,労力には見合わない.




添付ファイル: filedot-bug.c 558件 [詳細] filelibgoto.spec 2834件 [詳細] filefpu.patch 1407件 [詳細]

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2023-03-25 (土) 11:19:17