2016年10月28日金曜日

LaTeXエディタ TeXworks の情報

LaTeX用のエディタ
  • TeXworks/設定
    • ubuntuの場合:
      • スペルチェッカー辞書は.
      • sudo apt-get install myspell-en-us
      • でインストールしたら,texworksの編集→設定で指定できる.その後は,編集→スペルチェックで起動できる.
その他の情報

2016年8月9日火曜日

CUDA は float が速い!

最近,暇を見つけてはCUDAプログラミングに没頭しているのですが,
どうやらGPUの浮動小数点はfloatがデフォルトらしい,

というのをネットで見つけて,実際やってみました.

浮動小数点を double にした場合:
real 147m13.761s
user 147m0.970s
sys 0m5.916s

浮動小数点を float にした場合:
real 40m51.620s
user 40m43.707s
sys 0m5.255s

というわけで,3.6倍かせげました.こんな違うんだ・・・

2016年7月13日水曜日

GPU ライブラリ “ArrayFire” (Ubuntu 14.04)

C/C++ で力学シミュレータを作るときに,逆行列を掛けるのが面倒なので,
C++ 用のベクトル・行列ライブラリを探してみました.

文法の美しさでは Eigen がよかった.すごいかっちょいいソースが書けます.ヘッダーファイルだけというのもお手軽.

http://eigen.tuxfamily.org/

でも,CUDA で並列計算したいときは ArrayFire がいい感じ.ソースファイルは共通のまま,g++ のリンカーオプションを取り替えるだけで,CPU用とGPU用をコンパイルできます.

http://arrayfire.org/


Ubuntu 14.04 へのインストール


1.ダウンロード
http://arrayfire.com/download/

2.準備
※本家の説明ではパッケージ名 libglfw3 が誤植で glfw3 になってた.
sudo apt-get install libfreeimage-dev libatlas3gf-base libfftw3-dev cmake
sudo apt-add-repository ppa:keithw/glfw3
sudo apt-get update
sudo apt-get install libglfw3

3.インストール
sudo sh ArrayFire-*_Linux_x86_64.sh --exclude-subdir --prefix=/usr/local

4.コンパイル

ソースコードの例:

#include <arrayfire.h>
// Generate random data, sum and print the result.
int main(void)
{
    // Generate 10,000 random values
    af::array a = af::randu(10000);
    // Sum the values and copy the result to the CPU:
    double sum = af::sum<float>(a);
    printf("sum: %g\n", sum);
    return 0;
}


Makefileの例: ※$(CC)の前は,スペースじゃなくてタブにします.

#-lafcpu, -lafcuda, or -laf for the CPU, CUDA, and unified backends
LIBS=-lafcpu
LIB_PATHS=-L/usr/local/lib
INCLUDES=-I/usr/local/include
CC=g++ $(COMPILER_OPTIONS)
COMPILER_OPTIONS=-std=c++11 -g
all: main.cpp Makefile
    $(CC) main.cpp -o test $(INCLUDES) $(LIBS) $(LIB_PATHS)