Showing posts with label Linux. Show all posts
Showing posts with label Linux. Show all posts

Wednesday, January 4, 2012

[R][Rocks][CentOS] Rocks 5.3にRをインストール

Rocks 5.3には初めから統計ソフトRがインストールされていないため、自らインストールする必要がある。
(注)compute nodeでRを使う予定はないので、インストールする場所はデフォルトに従う。
ちなみに、OSのバージョンなどの確認出力は次の通り:
# cat /etc/redhat-release
CentOS release 5.4 (Final)
# uname -r
2.6.18-164.6.1.el5
# uname -m
x86_64

  1. rootでログインする。
  2. Rのrpmパッケージをダウンロードする。
    • Rのサイトからリンクを辿る。ここではredhat/el5/x86_64/と進む。
    • 次の5つのパッケージを/tmpにダウンロードした:
      R-core-2.10.0-2.el5.x86_64.rpm
      R-devel-2.10.0-2.el5.x86_64.rpm
      libRmath-2.10.0-2.el5.x86_64.rpm
      libRmath-devel-2.10.0-2.el5.x86_64.rpm
      R-2.10.0-2.el5.x86_64.rpm
  3. 上記のパッケージをインストールするために必要な他のパッケージをダウンロード・インストールする。
  4. R-coreパッケージをインストール:
    # rpm -ivh R-core-2.10.0-2.el5.x86_64.rpm
  5. R-develパッケージをインストール:
    # rpm -ivh R-devel-2.10.0-2.el5.x86_64.rpm
  6. libRmathパッケージをインストール:
    # rpm -ivh libRmath-2.10.0-2.el5.x86_64.rpm
  7. libRmath-develパッケージをインストール:
    # rpm -ivh libRmath-devel-2.10.0-2.el5.x86_64.rpm
  8. Rパッケージをインストール:
    # rpm -ivh R-2.10.0-2.el5.x86_64.rpm

Thursday, June 16, 2011

【仮想化】Windows上でのLinux操作

Sony VAIO SシリーズのWindows7上にVMware Playerという無償の仮想化ソフトを使ってUbuntuをインストールする手順についての覚書。

VMwareとUbuntu
  1. VMware Playerをこちらからダウンロードし、インストールする。
  2. Ubuntu(ここでは10.04の64bit版)をこちらからダウンロードし、temporary folderに保存する。
  3. VMwareを起動し、希望のハードウェアカスタマイズ(容量20GB、メモリ3GBとした)し、2.でダウンロードした.isoファイルを指定して、仮想化を再生し、Ubuntuのインストール完了を待つ。
  4. ゲストOS(Ubunsut)にログインした状態で、VMwareの「仮想マシン」->「仮想マシンの設定」->「オプション」->「共有フォルダ」->常に有効のボタンをチェックし、「追加」を押してホストOS側の共有フォルダを指定する。(ゲストOS側では、/mnt/hgfs/内にフォルダが作成される。)
Intel Fortran Compiler
  1. Intel Non-Commercial Software DevelopmentからIntel Fortran Compiler for Linuxを、temporary folderにダウンロードする。
  2. 後はこちらの記事を参照。
Emacs
  1. 端末で
    $ sudo apt-get install emacs23
    と入力し、[Enter]キーを押す。
LaTeX
  1. 端末で
    $ sudo apt-get install texlive-latex-base
    と入力し、[Enter]キーを押す。
Beamer
  1. こちらを参考にして、latex-beamer、pgf、xcolorをインストールする。
BibTeX
  1. 端末で
    $ sudo apt-get install bibtex
    と入力し、[Enter]キーを押す。とりあえず表示されたものをインストールする。(※BibTeX本体自体はLaTeXのパッケージであるtexlive-baseに含まれている。)

Tuesday, November 2, 2010

【Intel MKL】 Intel MKL Nonlinear Least Squaresを使う方法

Intel Math Kernel Library (MKL)の中の非線形最小二乗法ルーチンの使い方についてのメモ。ちなみに、自分のマシン環境を前提に書く。具体的には、言語はFortran90、アーキテクチャはIntel(R) 64である。リファレンスはIntel(R) Math Kernel Library for Linux* OS User's Guide January 2010, Doc. N.314774-010US(UG2010)。

  • 言語やアーキテクチャによってパスが異なるので注意。


手順は次の通り:
  1. MKLのルーチンを呼び出しているソース・コードの頭に、
    program name
    implicit none
    include 'mkl_rci.fi'
    のように、include 'mkl_rci.fi'を付け加える。

  2. 次のようにコンパイルする。
    (dynamic & threadingの場合)
    ifort filename_1.f90 filename_2.f90 ... filename_x.f90 -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -liomp5 -lpthread

    (dynamic & sequentialの場合)
    ifort filename_1.f90 filename_2.f90 ... filename_x.f90 -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -lpthread

    (static & threadingの場合)
    ifort filename_1.f90 filename_2.f90 ... filename_x.f90 -Wl,--start-group -lmkl_intel_lp64 -lmkl_intel_thread -lmkl_core -Wl,--end-group -liomp5 -lpthread

    (static & sequentialの場合)
    ifort filename_1.f90 filename_2.f90 ... filename_x.f90 -Wl,--start-group -lmkl_intel_lp64 -lmkl_sequential -lmkl_core -Wl,--end-group -lpthread
    • ポイントは、staticの場合、cluster components(この場合使用していない)、interface、threading、そしてcomputational librariesの前後を-Wl,--start-groupと-Wl,--end-groupで囲うこと。
    • sequentialの場合、Compiler Support Run-time librariesは関係ないので、オプション-liomp5(compatibility OpenMP run-time libraryで、US2010が推奨)を外している。

Note.1: Intel MKLの構造
Intel MKLは次の4つの階層を持つレイヤー・モデル:

1. Interface layer
2. Threading layer --- threadingがデフォルト
3. Computational layer
4. Compiler Support Run-time libraries

であり、それぞれのレイヤー毎にユーザーが必要なライブラリの選択を行う。なお、linking modelがstaticかdynamicかで選択するファイル名が異なる(アバウトに言えば、staticなら拡張子が.aで、dynamicなら拡張子が.so)。各レイヤーの内容(選択肢)についてはUG2010 Table 3-6、3-7を参照。

注意点は以下の通り([x]はレイヤーxに関するもの):

  • [1] 2^31-1(約21億)以上の要素を持つ配列を使用する場合、デフォルト・インターフェイスのLP64ではなく、ILP64を指定する必要がある。これは配列のインデックスを与える上での問題。(UG2010, p.3-6)

  • [2] MPIを利用する等、特別な理由がない限りthreadingを選択するべき。(UG2010,p.3-5)

  • [2] sequentialを選択する場合、Compiler Support Run-time librariesは関係ない。

  • [2] sequentialを選択する場合、*sequential.*libraryを選択する。また、個の場合、link lineにPOSIX threads library(pthread)を追加する。

  • [2]Optimization Solver routinesのfunction domainはMKLがデフォで使用するスレッディング機能は使われない(UG2010,p.6-1,Using the Intel(R) MKL Parallelism)。そのため、OpenMPのスレッディングの数を指定に関するオプション設定を気にしなくてもOK。

  • [3] 非線形最小二乗法はMKL function domainではOptimization (Trust-Region) Solver routinesに対応。この場合、includeファイルmkl_rci.fiを使う。

また、UG2010は、次のように、dynamic linkを推奨している。
You are strongly encouraged to dynamically link in the compatibility OpenMP* run-time library libiomp or legacy OpenMP* run-time library libguide. Link with libiomp and libguide dynamically even if other libraries are linked statically.

Linking to static OpenMP* run-time library is not recommended because it is very easy with complex software to link in more than one copy of the library. This causes performance problems (too many threads) and may cause correctness problems if more than one copy is initialized. (UG2010,p.5-6)


Note.2: 環境設定
.profileに以下の行を追加。
# setting up MKL environment for bash
. absolute_path_to_installed_MKL/tools/environment/mklvarsem64t.sh
.の後は半角スペースが必要。

Note.3: コンパイル&リンク
ifort filename.f90 -L(MKL path) -I(MKL include)
[-I(MKL include)/{32|em64t|{ilp64|lp64}|64/{ilp64|lp64}}]
[-lmkl_blas{95|95_ilp64|95_lp64}]
[-lmkl_lapack{95|95_ilp64|95_lp64}]
[cluster components]
-lmkl_{intel|intel_ilp64|intel_lp64|intel_sp2dp|gf|gf_ilp64|gf_lp64}
-lmkl_{intel_thread|gnu_thread|pgi_thread|sequential}

[-lmkl_lapack] -lmkl_core
{-liomp5|-lguide} [-lpthread] [-lm]
なお、()はパスを表す。ただし、Note.2で環境設定している場合、-L(MKL path)と-I(MKL include)を書く必要はない。

Tuesday, August 10, 2010

Windowsが数値計算に向かない1つの理由

PGI® Workstation/ServerWindows®版の詳細からの引用。
# 64ビット Windows版の PGI コンパイラでは、2GB以上の単一オブジェクトを扱うことができる Linux上の -mcmodel=medium オプションと等価な機能を提供しておりません。これは、Microsoft(R) Win64 プログラミング・モデルが、まだ 2GB を超える静的な単一データオブジェクトのハンドリングをサポートしていないためです。従って、2GB を超える静的配列を扱うようなプログラムでは、実行モジュールは生成できません。たとえ Windows 64ビット版であっても、2GBを超える単一配列オブジェクトがプログラム上に存在する場合、静的な配列宣言はできず、動的な配列宣言(Allocatable 配列宣言)を行う必要があります。これは、PGI コンパイラの制約ではなく、Win64 プログラムモデルの問題です。従って、2GB以上のデータオブジェクトを扱うプログラムをコンパイルする場合は、現在のところ、このような制約がない Linux 版の方が適しています。
※ 静的な単一配列オブジェクトとは、具体的に言えば、Fortranでは、COMMON 文宣言、ルーチン内でローカルに宣言された配列であっても、その総和が 2GB を超えるもの(メモリマップ上、シングルセクション上に割り付けられる)、C言語では、STATIC 宣言された配列等が相当します。なお、Fortran の allocatable 宣言された配列は 2GB 以上であっても問題なく実行モジュールを生成できます。

Windows x64 (Win64) は、64ビットのアドレス空間は使用できるものの、そのプログラミングモデルにおいては、上記のとおり 単一の静的データあるいはデータセクションのサイズが、2GB 以内に制限されております。従来の静的宣言された配列の多いプログラムでは大きな制約となり、2GB 以上使用するプログラムではリンケージでエラーとなるケースが出てきます。この制約は、コンパイラの問題ではなく、Win64 上の共通の制限ですので、フルに 2GB 以上の個別データ領域を使用するプログラムをコンパイル・実行したい場合は、「Linux」でのコンパイル・実行環境を強く推奨します。

Monday, July 26, 2010

【Linux】 eth0とeth1を入れ替える方法

複数のNICを搭載している場合、状況によってはNICが認識される順番を変えたいときがある。例えば、手元にOSがサポートしているNICチップセットを搭載しているNIC(「NIC-s」と表記)とそうでないNIC(「NIS-ns」)の2つがあるとする。仮に、eth1はインターネットへの接続用、eth0はプライベート・ネットワークへの接続用だとしよう。もしNIC-nsがeth1として認識されている場合、ネットに接続することはできない。

このようなときに対処するには、"/etc/sysconfig/network-scripts"にある"ifcfg-eth0"、"ifcfg-eth1"のMACアドレスを入れ替えて再起動すればOK。