Tools

2008/12/21

FedoraにインテルC++コンパイラ(Ver.11)をインストールする

デュアルコアマシンで自作プログラム(もちろん並列処理は一切考えない)を動かしても1つのコアでしか処理しないので場合によってはシングルコアマシンよりも不利になる。

私の数値計算プログラムも、自分のマシン(ThinkPad R61 Core2Duo 1.8GHz)上でG++でコンパイルして動かすときは片コアのみが100%になっているが、もう片コアは遊んでいる。

普段研究室にいるときは割り当てられた研究室のマシン(Pen4 3.4GHz)で動かせばいいが、常に研究室のマシンとつながっているわけにはいかないのでR61のCPUをフルに使って自作プログラムを動かすことを考えた。

しかし、OpenMPやスレッドなどは手軽にできそうにない。そこでインテルコンパイラの自動並列化機能を使うことにした。これならコンパイル時に「-parallel」オプションを与えるだけで済む。(現時点ではコード内で効率的な並列化を指示できないと思った)

というわけで、まずはインテルC++コンパイラをインストールする。

Link:インテル ® C++ コンパイラ Linux* 版のダウンロード

ここからインテルコンパイラの最新版(11.0)をダウンロードしてくる。(今回はFedora 8 32bit版なのでIA-32版をダウンロードした。64bit版ならintel(R) 64版だろう。IA-64は80x86ベースじゃないし。)

インストールはダウンロードしてきたアーカイブを解凍し、生成されたディレクトリ内に移動して

# ./install

とすればインストーラーが起動するので、インストーラーの指示に従ってインストールする。(事前にcompat-libstdc++関連をインストールしておく)

また、インストール中にサポートしてないバージョンと警告されても無視してインストール。(バージョン11.0はFedoraの場合は9をサポートしてる)

インストールが完了してもiccコマンドなどを使えるようにするには環境変数の設定やインストール先にPATHを通さなくてはならないが、これらをやってくれるスクリプトが付属している。だけど、このスクリプトはコンパイルの度に実行しなくてはならないようなので、自動で読み込まれるようにする。

# cd /etc/profile.d/

# ln -s /opt/intel/Compiler/11.0/074/bin/ia32/iccvars_ia32.*  ./

次にインテルコンパイラのライブラリを共通ライブラリに登録しておく。

# echo "/opt/intel/Compiler/11.0/074/lib/ia32/lib" > /etc/ld.so.conf.d/icclib.conf

# ldconfig

これでiccコマンドでコンパイルできるようになる。試しに

$ icc -O2 -march=core2 -parallel myProgram.cpp

こんな感じでコンパイルして実行してみたら、両コアを使って処理をするようになり、速度があがった。

ただし、計算方法によって並列化の度合いは変わるので注意。例えば連立方程式の反復解法の場合、Gauss-Seidel法はあまり並列化の恩恵を受けないが(GSのアルゴリズムを見ればわかる)、共役勾配法は並列化によってかなり速くなる。

| | コメント (0) | トラックバック (0)

2008/12/17

SSHで公開鍵認証

公開鍵を使ってログインするためのメモ。

まずは、クライアント側で鍵を作る。

$ ssh-keygen -t rsa

-tオプションで暗号化アルゴリズムを指定できる。SSH2ではrsaとdesが選択できるが、わざわざdesにする必要はないだろう。このコマンドを実行するとパスフレーズの入力を促されるが、何も入力しないでEnterを押せば空のパスフレーズの鍵が生成される。(空のパスフレーズの鍵を置いたサーバにはSSHでログインするときに何も入力せずログインできるようになる)

実行し終えるとクライアントのホームディレクトリ下の.sshディレクトリ内に秘密鍵「id_rsa」と公開鍵「id_rsa.pub」が生成される。

次に公開鍵をサーバ側にある自分のアカウントの~/.sshに送る。送ったら.ssh内で

$ cat id_rsa.pub >> authorized_keys

とする。これで公開鍵認証できるようになる。

| | コメント (0) | トラックバック (0)

2008/12/10

GKrellM

GKrellMはGTK+を使ったGUIのシステムモニタ。

Gkrellm_2

Fedoraならリポジトリに用意されているから簡単にインストールできる。

GKrellMを自動起動させたい場合は「セッション」の自動起動するプログラムに追加しておけばいい。コマンドは「gkrellm」。

| | コメント (0) | トラックバック (0)

2008/10/19

gnome-terminalとgconf-editor

GNOME Terminalをキーボード・ショートカットで設定したキーで起動したときのサイズと位置がデフォルトのままで、どうしたらいいものか悩んでいたけど、gconf-editorで設定すればいいようだ。

gconf-editor(設定エディタ)を起動して

/
- desktop
   - gnome
      - applications
         - terminal

このterminalのところでgnome-terminalにオプションを与えておけば反映される。

| | コメント (0) | トラックバック (0)

2008/10/14

Fedora 8にpacoをインストール

Fedora 8にpacoをインストールしてみた。

[pacoを手に入れる]

pacoのサイトからダウンロードするかもしくは

$ wget http://downloads.sourceforge.net/paco/paco-2.0.6.tar.gz

でダウンロードする。

[pacoをインストール]

まずは解凍する。

$ tar zxvf paco-2.0.6.tar.gz

作成されたディレクトリ内に移動して

$ ./configure

configureの途中で、

No package 'gtkmm-2.4' found

というエラーメッセージが出たので、とりあえずyumでgtkmmに関するパッケージを調べてみると以下のパッケージがあった。

# yum list | grep gtkmm
bitgtkmm.i386      
bitgtkmm-debuginfo.i386      
bitgtkmm-devel.i386      
gtkmm24.i386      
gtkmm24-devel.i386      
gtkmm24-debuginfo.i386
gtkmm24-docs.i386

まとめてインストールした。

# yum -y install bitgtkmm*

これで下2つ以外はすべてインストールされる。インストール後にもう一度 configureをしてみるとエラーメッセージが表示されなくなった。

configureが成功したら後はお決まりの

$ make

# make install

これでpacoはインストールされるけど、このままではpaco自身の管理ができないので、

# make logme

を実効してpaco自身も管理できるようにする。

[確認]

pacoがちゃんと管理できているか確認。

$ paco -a
paco-2.0.6

さっき追加したpaco自身が表示されている。

| | コメント (0) | トラックバック (0)

2008/09/01

NTPサーバーと時刻を同期させる

システムクロックがずれたときはNTPサーバーと同期させればいい。

GNOMEだと上のメニューバーにある時計を右クリックして「日付と時刻の調整」を選択し、「ネットワークタイムプロトコル」のタブでNTPサーバーを追加した後「サービス開始前にシステムクロックを同期する」にチェックを入れればいい。

NTPサーバーは例えばインターネットマルチフィードのサービスがある。

Link:時刻情報提供サービス for Public

| | コメント (0) | トラックバック (0)

2008/08/31

GNOME起動時にコマンドを自動実行

以前、シェルの深さに応じてコマンドを実行するように.bashrcを設定することを考えたけど、このやり方だとGNOME端末を起動しなくてはならない。

今回はGNOME端末を自動で起動したいのでこの方法では本末転倒。

どうしたものかと思ってちょっと調べてみたらコマンドの自動実行は案外簡単にできることがわかった。しかもGNOMEの機能で。(.bashrcいじるよりより簡単じゃん・・・)

GNOMEのメニューバーの「システム」-「設定」-「他の個人設定」内に「セッション」というメニューがあるのでそれを開く。

開くと「自動起動するプログラム」というタブがあるので、それを選択し、「追加」ボタンで自動起動したいプログラムのコマンドを入力する。

gnome-terminal --geometry=80x45-0+0

geometryオプションは起動時のウィンドウのサイズと座標を指定して起動することができる。詳しいことはgnome-terminalのmanページ、もしくは--helpオプションで調べられる。

| | コメント (0) | トラックバック (0)

2008/08/07

文字コードを変換「iconv」

文字コードを変換するコマンドは「nkf」が有名だと思うけど、Fedoraには「nkf」がインストールされておらず、変わりに「iconv」がインストールされているようだ。(リポジトリに「nkf」は用意されているので、ちゃんとインストールすることはできる)

使い方は「nkf」とは少し違う。

例) file1.txt(EUC-JP) → file2.txt(UTF-8)に変換

$ iconv -f EUC-JP -t UTF-8 file1.txt > file2.txt

指定できる文字コードは、

  • Shift-JIS
  • EUC-JP
  • UTF-8
  • ISO-2202-JP

だそうな。

| | コメント (0) | トラックバック (0)

2008/08/04

パーティションのマウント

パーティションのマウントについて簡単にメモ。

# mkdir /mnt/tmp

# mount /dev/sda5  /mnt/tmp

/mntでないディレクトリ(例えば/の直下にworkというディレクトリを作る)にもマウントできた。

アンマウントは

# umount /dev/sda5

毎度この作業をするのが面倒なら、/etc/fstabに設定を追記して自動でマウントさせることもできる。(詳しいことはfstabのmanページを読むといい)

| | コメント (0) | トラックバック (0)

2008/06/25

Gnuplotの使い方って

正直よくわからん・・・

ただ、バージョン4.2以降でdefaultのTerminal typeが'x11'ではなく'wxt'になっているのは、 wxWidgetsをインストールしていると、gnuplotのTerminal typeがdefaultで'wxt'になってしまうかららしい。

| | コメント (0) | トラックバック (1)