2010年6月18日 星期五

MPI 簡述

1. 說明:
MPI 是個標準, 而目前最新版是 MPICH2.

在 MPI1 時, 有 MPICH 與 OPENMPI 前身兩大陣營提供.

而在 MPICH2 時, 由 MPICH2 與 OPENMPI 兩大函式庫提供.


底下用 OPENMPI 說明:

2. 執行過程:
MPIsourecode
|
MPICC
|
mpirun

而 mpirun 能用 qsub 送到底層的 Cluster


3. 範例:
I
hello.c
{{{
#include
#include

int main(int argc, char *argv[]) {
int numprocs, rank, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];

MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);

printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);

MPI_Finalize();
}

}}}

II.
/afs/slac.stanford.edu/package/mpich/bin/mpicc hello.c -o hello

III.
mpirun -np 4 -machinefile machinefile.morab hello
其中 machinefile 是跨 node 才須要, 若一顆是 8 code, 且只要 4 個 process 就不用,
且也是在 cluster 才要 machinefile.







4. 注意:


5. 參考:
MPI

2010年6月17日 星期四

Cluster 說明與環境

1.說明:
Cluster 目前有的是 PBS 為常見

2. 常用指令:
qsub/qsatat 為最常見指令


3. 環境變數:
前置詞為 PBS_ , 而可以看見 Cluster 的

PBS_O_WORKDIR The absolute path of the current working directory of the qsub command.
PBS_NODEFILE The name of the file that contains the list of the nodes assigned to the job.


4. 指令細節:



5. 範例:
test.sh
{{{
#!/bin/bash
#PBS -l nodes=2:ppn=4
#PBS -V

### env var
#module load mpich

cd $PBS_O_WORKDIR

P4_RSHCOMMAND=rsh
NCPUS=`wc -l $PBS_NODEFILE | awk '{print $1}'`

#cat $PBS_NODEFILE > NODES
#cat $PBS_NODEFILE
mpirun -machinefile $PBS_NODEFILE -np $NCPUS $PBS_O_WORKDIR/hello

}}}



6. 注意:
I. 在 home 目錄執行


7. 參考:
Qsub

2010年6月15日 星期二

JSP 的初探

1. 在 JSP 中可以寫自己的 code
使用
<%
... your java code
%>

且會轉成 java code 執行

2. 若你是要宣告參數與建立函數時
使用
<%!
...
%>

2010年6月13日 星期日

筆電保護

/////////////////////////////// 硬體篇 //////////////////////
1. 電池
a. 新的先充電 4-8小時
b. 不要邊用整流器與電池
c. 若長時間不用可將電池取出, 但一個月要作一次充放電測式
參考:
1
2


2. 螢幕
a. 用保護貼
b. 有指紋或靜電產生的灰塵, 請用專用的清潔濟
1
1


3. 鍵盤
a. 用保護貼

4. 防撞


//////////////////////////////////////////////
1. 軟體:
a. 請裝防毒軟體

2. 資料
a. backup

All
All2

Windows File System

1. 目前 winFS 是下一代的 window file system,

它主要結合 SQL 與 XML 完成對檔案的高階操作,

提供更大的搜尋進步與整合.

詳細請看
wikipedia windows fs

Reflecting (反射物件)

1. 說明:
Reflecting 為動態載入物件與類別的方法, Java 提供 Class, Object, Method 等物件,

讓每個物件都能在執行的時後知道自己的 類別, 實例, 方法等資訊,

也可有動態載入, 也能作到介面分派的行為, 透過開發時自由在抽像物件的跳拖與轉換,

達到物件的彈性 .

還有兩種方式可用 class
1. 用 object instace
2. 用 class literal 的 .calss 可得到此 class object



2. 範例:

a 動態載入類別, 並呼叫該類別的實例, 並取得該類別的方法, 透過 Method 物件來呼叫
ReflectingTest.java
{{{
import java.lang.reflect.Method;

public class ReflectingTest {
public static void main(String[] args) throws Exception {
Class cls = Class.forName("foo");
Object foo = cls.newInstance();
Method method = cls.getMethod("Hello", null);
method.invoke(foo, null);
}

}

class foo {
public void Hello() {
System.out.println("Hello");
}
}


}}}


b. 使用 Class 的 .class 取得 class 載入
FooTest.java
{{{
package net.asgc.gap.portal.util;

import java.lang.reflect.Method;
import net.asgc.gap.portal.util.VQSClientProperties;
public class FooTest {
public static void main(String[] args) {
try{
for (Method m : VQSClientProperties.class.getMethods() )
System.out.println("VQSClientProperties>>" + m);


}catch(Exception e){
e.printStackTrace();
}
}


}

}}}

可以看到使用 VQSClientProperties 的 class 內建的 .class 將它轉成 Class 後取
它的 Methods().


參考:
Java class doc
Java Object doc
Java Method doc

2010年6月11日 星期五

目錄結構

1. 從最上層看
[root@vt-002 /]# printf '%s\n' $(ls) | nl
1 afs
2 bin 放置常用指令, 像 vi, grep
3 boot 放 Linux kernel 與 grub, 像
4 dev 放裝置檔地方, 像
5 etc 放軟體設定檔的地方, 像 profile.d, sudoers, hosts, ssh,yum
6 home 為使用者建立個人資料區域的場所, 像 andy, steven
7 initrd
8 lib 放置各種軟體可能需要函式庫
9 lost+found
10 media
11 misc
12 mnt
13 opt
14 proc
15 root
16 sbin
17 selinux
18 srv
19 sys
20 tmp
21 usr
22 var

2. bin 資料夾
{{{
[root@vt-002 bin]# ls
alsaunmute chown dumpkeys gunzip ls nisdomainname sed tracepath view
arch cp echo gzip mail pgawk setfont tracepath6 ypdomainname
ash cpio ed hostname mailx ping setserial traceroute zcat
ash.static csh egrep igawk mkdir ping6 sh traceroute6 zsh
aumix-minimal cut env ipcalc mknod ps sleep true
awk date ex kbd_mode mktemp pwd sort umount
basename dd false kill more red stty uname
bash df fgrep ksh mount rm su unicode_start
bsh dmesg gawk link mt rmdir sync unicode_stop
cat dnsdomainname gettext ln mv rpm tar unlink
chgrp doexec grep loadkeys netstat rvi tcsh usleep
chmod domainname gtar login nice rview touch vi
}}}

3. boot 資料夾
{{{
[root@vt-002 boot]# ls
config-2.6.9-89.0.23.EL.cernxenU lost+found System.map-2.6.9-89.0.25.EL.cernxenU
config-2.6.9-89.0.25.EL.cernxenU message System.map-2.6.9-89.EL.cernxenU
config-2.6.9-89.EL.cernxenU message.ja vmlinuz-2.6.9-89.0.23.EL.cernxenU
grub symvers-2.6.9-89.0.23.EL.cernxenU.gz vmlinuz-2.6.9-89.0.25.EL.cernxenU
initrd-2.6.9-89.0.23.EL.cernxenU.img symvers-2.6.9-89.0.25.EL.cernxenU.gz vmlinuz-2.6.9-89.EL.cernxenU
initrd-2.6.9-89.0.25.EL.cernxenU.img symvers-2.6.9-89.EL.cernxenU.gz
initrd-2.6.9-89.EL.cernxenU.img System.map-2.6.9-89.0.23.EL.cernxenU

}}}

4.
{{{
[root@vt-002 dev]# ls
arpd loop0 md1 md23 md9 ram0 ram9 tap10 tty tty21 tty35 tty49 tty62 xvda3
console loop1 md10 md24 mem ram1 ramdisk tap11 tty0 tty22 tty36 tty5 tty63 zero
core loop2 md11 md25 mice ram10 random tap12 tty1 tty23 tty37 tty50 tty7
cpu loop3 md12 md26 net ram11 rawctl tap13 tty10 tty24 tty38 tty51 tty8
dnrtmsg loop4 md13 md27 nflog ram12 root tap14 tty11 tty25 tty39 tty52 tty9
evtchn loop5 md14 md28 null ram13 route tap15 tty12 tty26 tty4 tty53 urandom
fd loop6 md15 md29 parport0 ram14 route6 tap2 tty13 tty27 tty40 tty54 usersock
full loop7 md16 md3 parport1 ram15 shm tap3 tty14 tty28 tty41 tty55 vcs
fwmonitor lp0 md17 md30 parport2 ram2 skip tap4 tty15 tty29 tty42 tty56 vcsa
gpmctl lp1 md18 md31 parport3 ram3 stderr tap5 tty16 tty3 tty43 tty57 xfrm
initctl lp2 md19 md4 port ram4 stdin tap6 tty17 tty30 tty44 tty58 XOR
input lp3 md2 md5 ppp ram5 stdout tap7 tty18 tty31 tty45 tty59 xvc0
ip6_fw MAKEDEV md20 md6 ptmx ram6 systty tap8 tty19 tty32 tty46 tty6 xvda
kmsg mapper md21 md7 pts ram7 tap0 tap9 tty2 tty33 tty47 tty60 xvda1
log md0 md22 md8 ram ram8 tap1 tcpdiag tty20 tty34 tty48 tty61 xvda2

}}}

5.
{{{
[root@vt-002 /]# ls
afs boot etc initrd lost+found misc opt root selinux sys usr
bin dev home lib media mnt proc sbin srv tmp var
[root@vt-002 /]# cd etc
[root@vt-002 etc]# ls
a2ps.cfg fonts ksysguarddrc openldap securetty
a2ps-site.cfg foomatic lcm.conf opt security
acpi fstab ldap.conf pam.d selinux
adjtime gconf ld.so.cache pam_smb.conf sensors.conf
alchemist gimp ld.so.conf pango services
aliases gnome-vfs-2.0 ld.so.conf.d passwd sestatus.conf
aliases.db gnome-vfs-mime-magic ld.so.conf.orig passwd- setuptool.d
alsa gpm-root.conf lftp.conf pbm2ppa.conf sgml
alternatives gre.d libuser.conf pcmcia shadow
anacrontab grid-security libuser.conf.anaconda pine.conf shadow-
at.deny group lilo.conf.anaconda pine.conf.fixed shells
auditd.conf group- lisarc pinforc skel
audit.rules grub.conf localtime pki smartd.conf
auto.master gshadow log.d pnm2ppa.conf smi.conf
auto.misc gshadow- login.defs ppp smrsh
auto.net gssapi_mech.conf logrotate.conf prelink.cache sound
bashrc gtk logrotate.d prelink.conf ssh
blkid.tab gtk-2.0 lsb-release.d printcap stunnel
bluetooth hal ltrace.conf profile sudoers
bonobo-activation hepix lvm profile.d sysconfig
capi.conf host.conf lynx.cfg protocols sysctl.conf
ccm.conf hosts lynx.cfg.cs pwdb.conf syslog.conf
cdrecord.conf hosts.allow lynx.cfg.ja quotagrpadmins termcap
cpuspeed.conf hosts.deny lynx.cfg.sk quotatab udev
cron.d hotplug lynx-site.cfg racoon updatedb.conf
cron.daily hotplug.d mail rc vfontcap
cron.deny html2psrc mailcap rc0.d vimrc
cron.hourly idmapd.conf mail.rc rc1.d warnquota.conf
cron.monthly im_palette.pal makedev.d rc2.d wgetrc
crontab im_palette-small.pal man.config rc3.d wvdial.conf
cron.weekly im_palette-tiny.pal maven rc4.d X11
csh.cshrc imrc mc rc5.d xdg
csh.login init.d mgetty+sendfax rc6.d xinetd.conf
cups initlog.conf mime.types rc.d xinetd.d
dbus-1 inittab minicom.users rc.local xml
default inputrc modprobe.conf rc.sysinit xpdfrc
depmod.d iproute2 modprobe.conf.dist readahead.early.files yp.conf
dev.d isdn motd readahead.files yum
DIR_COLORS issue mtab redhat-lsb yum.conf
DIR_COLORS.xterm issue.net mtools.conf redhat-release yumex.conf
diskdump java Muttrc resolv.conf yumex.profiles.conf
dumpdates jvm ncm-ncd.conf rhgb yum.repos.d
enscript.cfg jvm-commmon netplug rmt zlogin
environment jwhois.conf netplug.d rpc zlogout
esd.conf kde nscd.conf rpm zprofile
exports kderc nsswitch.conf samba zshenv
fb.modes kermit ntp sane.d zshrc
fdprm krb5.conf ntp.conf screenrc
filesystems krb.conf odbc.ini scrollkeeper.conf
firmware krb.realms odbcinst.ini scsi_id.config
}}}

6.
{{{
[root@vt-002 home]# ls
Andy diane2lsa edglsa glitelsa scchiu waynesan
}}}

7.
{{{
[root@vt-002 lib]# ls
cpp libc.so.6 libm.so.6 libpam_misc.so.0
evms libdb-4.2.so libNoVersion-2.3.4.so libpam_misc.so.0.77
firmware libdevmapper.a libNoVersion.so.1 libpam.so.0
i686 libdevmapper.a.1.02 libnsl-2.3.4.so libpam.so.0.77
iptables libdevmapper-event.a libnsl.so.1 libpcre.so.0
kbd libdevmapper-event.a.1.02 libnss1_compat-2.3.4.so libpcre.so.0.0.1
ld-2.3.4.so libdevmapper-event-lvm2mirror.so libnss1_compat.so.1 libproc-3.2.3.so
ld-linux.so.2 libdevmapper-event-lvm2mirror.so.2.02 libnss1_dns-2.3.4.so libpthread-0.10.so
ld-lsb.so.3 libdevmapper-event-lvm2snapshot.so libnss1_dns.so.1 libpthread.so.0
libacl.so libdevmapper-event-lvm2snapshot.so.2.02 libnss1_files-2.3.4.so libresolv-2.3.4.so
libacl.so.1 libdevmapper-event.so libnss1_files.so.1 libresolv.so.2
libacl.so.1.1.0 libdevmapper-event.so.1.02 libnss1_nis-2.3.4.so librt-2.3.4.so
libanl-2.3.4.so libdevmapper.so libnss1_nis.so.1 librt.so.1
libanl.so.1 libdevmapper.so.1.00 libnss_compat-2.3.4.so libSegFault.so
libasound.so.2 libdevmapper.so.1.01 libnss_compat.so.1 libselinux.so.1
libasound.so.2.0.0 libdevmapper.so.1.02 libnss_compat.so.2 libsepol.so.1
libattr.so libdl-2.3.4.so libnss_db.so.2 libssl.so.0.9.7a
libattr.so.1 libdl.so.2 libnss_db.so.2.0.0 libssl.so.4
libattr.so.1.1.0 libdm.a libnss_dns-2.3.4.so libss.so.2
libaudit.so.0 libdm.la libnss_dns.so.1 libss.so.2.0
libaudit.so.0.0.0 libdm.so libnss_dns.so.2 libtermcap.so.2
libblkid.so.1 libdm.so.0 libnss_files-2.3.4.so libtermcap.so.2.0.8
libblkid.so.1.0 libdm.so.0.0.4 libnss_files.so.1 libthread_db-1.0.so
libBrokenLocale-2.3.4.so libe2p.so.2 libnss_files.so.2 libthread_db.so.1
libBrokenLocale.so.1 libe2p.so.2.3 libnss_hesiod-2.3.4.so libutil-2.3.4.so
libc-2.3.4.so libext2fs.so.2 libnss_hesiod.so.2 libutil.so.1
libcap.so libext2fs.so.2.4 libnss_ldap-2.3.4.so libuuid.so.1
libcap.so.1 libgcc_s-3.4.6-20060404.so.1 libnss_ldap.so.2 libuuid.so.1.2
libcap.so.1.10 libgcc_s.so.1 libnss_nis-2.3.4.so libwrap.a
libcidn-2.3.4.so libhandle.a libnss_nisplus-2.3.4.so libwrap.so
libcidn.so.1 libhandle.la libnss_nisplus.so.2 libwrap.so.0
libcom_err.so.2 libhandle.so libnss_nis.so.1 libwrap.so.0.7.6
libcom_err.so.2.1 libhandle.so.1 libnss_nis.so.2 lsb
libcrypt-2.3.4.so libhandle.so.1.0.3 libnss_winbind.so.2 modules
libcrypto.so.0.9.7a libiw.so.27 libnss_wins.so.2 rtkaio
libcrypto.so.4 libiw.so.28 libpamc.so.0 security
libcrypt.so.1 libm-2.3.4.so libpamc.so.0.77 tls

}}}


/////////////////////////////////////////////////////////////////
//////// 常用的目錄 /////////////
/////////////////////////////////////////////////////////////////

------------------ 放置 crontabl ---------------------------------
位置: /etc/cron.d
功能: 自動工作排程管理
說明:
使用: ...
參考: http://ftp.sunet.se/pub/Linux/distributions/redhat/redhat-archive/redhat/linux/9/en/doc/RH-DOCS/rhl-cg-zh_TW-9/index.html