MPICH บน Core 2 Duo

Written by Waipot on July 11, 2008 – 6:54 am

การเขียนโปรแกรมแบบขนาน (parallel programming) ด้วย MPI บนเครื่องคลัสเตอร์ขนาดใหญ่นั้น ดูเหมือนจะเป็นเรื่องลำบาก เนื่องจากบนระบบใหญ่ๆ จำผู้ใช้งานก็มีมาก ซึ่งต้องรอคิวสั่งงานกันนานๆ มันจึงเป็นอุปสรรคต่อการพัฒนาโปรแกรมในระยะเริ่มต้น ซึ่งต้องคอมไพล์รวมทั้งการดีบักโปรแกรมกันบ่อยครั้งด้วย ตอนแรกผมพยายามมองหาวิธีแก้ไขปัญหานี้ โดยคิดว่าจะสร้างเครื่องคลัสเตอร์เล็กๆ ส่วนตัว เพื่อใช้ในการพัฒนาโปรแกรม และ แก้บั๊ก ก่อน จนกว่าโปรแกรมจะเสถียร แล้วจึงค่อยนำไปรันบนเครื่องคลัสเตอร์ใหญ่ๆ แต่การสร้างคลัสเตอร์ต้องมีคอมพิวเตอร์มากกว่าหนึ่งเครื่อง ซึ่งมันใช้ต้นทุนสูงไป ผมค้นหาสักพัก พบว่า mpich มีโมดุลที่เรียกว่า ch_shmem ซึ่งสนับสนุนเครื่องประเภท Symmetric Multiprocessors (SMPs) อย่างเช่น Core 2 Duo ของเครื่องโน๊ตบุคของผมนั่นเอง โดยโครงสร้างของเครื่องแบบนี้คือ มี 2 cpu แต่แชร์หน่วยความจำร่วมกัน

การติดตั้ง
ผมมี Ubuntu 64-bit version บน Intel Core 2 Duo T7300 (2.0 GB) สำหรับโน๊ตบุค โดยใน Ubuntu ได้ทำไบนารีไฟล์ไว้แล้ว คือ libmpich-shmem* libmpich-shmem*-dev libmpich-shmem-bin ซึ่งสามารถติดตั้งด้วยคำสั่ง sudo apt-get install ซึ่งพร้อมใช้งานได้ทันทีหลังจากติดตั้งเสร็จ แต่ในที่นี้ผมขอเสนอการติดตั้งจาก source เพราะสามารถปรับแต่งได้ ให้เริ่มจากการดาวน์โหลด mpich source ผมต้องการติดตั้ง mpich v1 (1.2.7p1) ในที่นี้

$tar xzf mpich.tar.gz
$cd mpich-1.2.7p1
$./configure --prefix=/usr/local --with-arch=LINUX --with-device=ch_shmem \\
--with-usesysv 
$make
$sudo make install
#หากต้องการถอนการติดตั้ง
$sudo /usr/local/sbin/mpiuninstall

การคอมไพล์ mpich นี้ค่อนข้างมาตรฐาน ยกเว้นตรงตัวเลือกใน ./configure คือ –with-arch=LINUX บอกให้รู้สถาปัตยกรรมของเครื่อง –with-device=ch_shmem เลือก DEVICE เพื่อคอมไพล์ mpich สำหรับ shared memory และ –with-usesysv เพื่อเลือกใช้ System V shared memory และ semaphore routines ซึ่งตัวเลือกเหล่านี้ได้อธิบายไว้ในคู่มือของ mpich หมดแล้ว

การใช้งาน
ผมจะทดสอบการใช้งาน mpich ch_shmem โดยการรันโปรแกรมง่ายๆ คือ hello-mpi.c ซึ่งมีโค๊ดดังนี้

#include <stdio.h>
#include <stdlib.h>
#include <mpi.h>
 
int 
main(int argc, char *argv[]) {
 int rank, nproc;
 
 MPI_Init(&argc,&argv);
 MPI_Comm_rank(MPI_COMM_WORLD, &rank);
 MPI_Comm_size(MPI_COMM_WORLD, &nproc);
 
 printf("Hello! from process %d of %d CPUs\n", rank, nproc);
 
 MPI_Finalize();
 return(0);
}

จากนั้นคอมไพล์ด้วยคำสั่ง

mpicc -o hello-mpi hello-mpi.c

ที่นี้ลองมารันกันดู เริ่มจาก

$mpirun -np 2 ./hello-mpi
Hello! from process 1 of 2 CPUs
Hello! from process 0 of 2 CPUs

ซึ่งได้ผลตามคาดหมายเพราะ Core 2 Duo นั้นมี 2 cpu ในตัวเดียว จากนั้นเพิ่มลองเพิ่มจำนวนโปรเซสในคำสั่งนี้ดู

$mpirun -np 4 ./hello-mpi
Hello! from process 1 of 4 CPUs
Hello! from process 2 of 4 CPUs
Hello! from process 3 of 4 CPUs
Hello! from process 0 of 4 CPUs

จะเห็นว่ามันสามารถกระจายทั้งสี่โปรเซสไปบน cpu ทั้งสองได้ เปรียบสเมือนมีหลายๆ cpu ในเครื่องเดียว แต่ mpich ch_shmem ปกติได้กำหนดจำนวน cpu สูงสุดไว้ที่ 32 ซึ่งเราอาจจะสามารถเพิ่มได้ (สังเกตุว่า process 0 ซึ่งเป็น Master node มักเสร็จสิ้นทีหลัง)

สรุปแล้ว mpich ch_shmem นี้มีประสิทธิภาพพอที่จะทำให้เราเรียนรู้ และ พัฒนาโปรแกรมแบบขนานในสไตล์ของ SPMD (single program multiple data) โดยการติดตั้งบนเครื่อง SMP อย่าง Core 2 Duo ได้ ซึ่งถ้าใครมี Quad core ก็น่าจะสนุกกว่านี้ แต่อย่างไรก็ตามเมื่อพัฒนาโปรแกรมจนเสถียรแล้ว ควรจะนำไปรันบนเครื่องคลัสเตอร์ระดับใหญ่ เพื่อให้ได้ประสิทธิภาพสูงสุด อย่างเช่น เครื่อง Tera cluster ของ โครงการ ThaiGrid หรือ NECTEC HPC ซึ่งเปิดโอกาสให้บุคคลทั่วไปสมัครเป็นสมาชิกได้ ซึ่งผมมีบัญชีผู้ใช้ของเครื่อง Tera แล้ว แต่ของ NECTEC HPC ยังไม่ได้ลองสมัครเลย

Tags: , , ,
Posted under Computers and Software | 2 Comments »

Hardy Heron มาแล้ว

Written by Waipot on May 8, 2008 – 1:21 pm

ที่จริงไม่ได้ตั้งใจจะอัพเกรด แต่เห็นระบบอัตโนมัติ มันแจ้งให้ทราบว่า Ubuntu 8.04 พร้อมให้อัพเดทกันแล้ว ผมเลยตัดสินใจคลิ๊ก อัพเกรด มันเสียเลย หลังจากผ่านไปกว่าสองชั่วโมง ในการ อัพเกรดออนไลน์ ผมก็ได้ภาพนี้มา ดูเหมือนว่าเวอร์ชันนี้จะเจ๋ง ได้ Firefox 3 Beta 5 มาให้ด้วย ต้องลองๆ งานนี้

Tags:
Posted under Computers and Software | 2 Comments »

Ubuntu แผ่นแท้

Written by Waipot on January 27, 2008 – 11:21 am


บางคนอาจจะกำลังขำๆ ผมอยู่ในใจ ที่จริง Ubuntu Linux (หรือ Linux ตระกูลอื่น) เขาก็มีให้ดาวน์โหลดฟรีๆ กัน เพราะมันเป็น open-source operating system แค่คุณดาวน์โหลด image ไฟล์ (iso) แล้วก็เขียนลงแผ่นซีดีเปล่า คุณก็ได้แผ่นติดตั้งระบบปฏิบัตการ Ubuntu Linux อย่างถูกต้องตามลิขสิทธิ์แล้ว นอกจากนี้ทาง Canonical ผู้พัฒนา Ubuntu นี้ ยังให้เราสามารถ ขอซีดีแผ่นติดตั้ง Unbuntu พร้อมจัดส่งให้ฟรีๆ ถึงบ้าน (แต่อาจจะใช้เวลานานกว่าสองเดือนกว่าจะถึงมือ) ซึ่งผมก็เพิ่งได้รับซีดี Ubuntu 7.10 (Gutsy Gibbon) เวอร์ชันล่าสุดวันนี้นี่เอง เป็นแผ่นแท้ที่ผลิตจากโรงงานเลยทีเดียว ที่จริงผมได้ดาวน์โหลดและติดตั้ง Gutsy Gibbon นี้บนโน๊ตบุคผมแล้วหละ แต่ผมแค่อยากได้แผ่นซีดีสวยๆ ไว้เป็นที่ระลึกแค่นั้นเอง คุณเองก็สามารถ Request free CD นี้ได้ตามลิงค์นี้

Tags: ,
Posted under Uncategorized | 1 Comment »

หลงรัก Ubuntu เสียแล้ว

Written by Waipot on October 22, 2007 – 12:21 am

ผมตัดสินใจเอา Fujitsu A6030 โน๊ตบุคใหม่ของผมลง Ubuntu 7.10 (Gutsy Gibbon) เนื่องจากไม่พอใจ Windows Vista Home Premium ที่เป็นระบบปฏิบัติ 32bit ซึ่งติดมากับเครื่อง

โน๊ตบุคตัวนี้มากับ Core 2 Duo T7300 เป็น CPU 64bit ของ Intel ดังนั้นเจ้า Vista ตัวนี้ดูจะไม่ตอบสนองความแรงของเครื่องเท่าที่ควร เหมือนนักวิ่งโอลิมปิคฝีเท้าดี แต่ดันใส่รองเท้าแตะวิ่งแข่งซะอย่างนั้น แต่อย่างไรก็ตาม มันเป็น Windows ของแท้ที่ในชีวิตของผมได้สัมผัส ผมจะเก็บมันไว้ โดยการติดตั้งระบบปฏิบัติการแบบ Dual Boot (อ่านขั้นตอนที่นี่) ที่ทำให้เราสามารถเลือกใช้ระหว่าง Windows หรือ Linux ได้ในเครื่องเดียว โดยไม่ส่งผลกระทบต่อเครื่องแต่อย่างใด เพราะ Windows กับ Linux จะแยกกันอยู่คนละพาร์ติชันของฮาร์ดดิสค์

หลังจากดาวน์โหลด Ubuntu 7.10 64bit AMD and Intel computers อิมเมจไฟล์แล้ว เบิร์นใส่แผ่นซีดี สั่งบู๊ตเครื่อง ติดตั้งตามขั้นตอน แต่ขั้นตอนที่สำคัญคือการแบ่งพาร์ติชัน ระหว่าง Vista กับ Ubuntu (อ่านขั้นตอนภาษาไทยแบบละเอียดที่นี่) พบว่า Ubuntu จัดการได้ดี มองเห็นไดร์ของวินโดว์ได้หมด หลังจากเสร็จสิ้นขั้นตอนการติดตั้งแล้ว ทันทีที่ลอกอินใช้งานพบว่า เจ้า Ubuntu ตัวนี้หน้าตาดูเรียบง่ายแต่สวยงามมาก สนุบสนุนฮาร์ดแวร์ของโน๊ตบุคของผมได้ดี และที่สำคัญคือ มันสนับสนุนภาษาไทยได้ดีทีเดียว ประทับใจ แทบจะหลงรัก Ubuntu เสียแล้ว

เราถูกสอนให้ใช้แต่ Windows ตั้งแต่ในวิชาคอมพิวเตอร์ตัวแรก เราจึงขาดวินโดว์ไม่ได้ แต่อยู่ในอเมริกาต้องคำนึงถึงความถูกต้องของลิขสิทธิ์ของซอฟต์แวร์ ดังนั้นการใช้ open operating system อย่าง Ubuntu จริงเป็นทางเลือกที่ดี ในบ้านเราก็มีชุมชนของผู้ใช้ Ubuntu อย่าง www.ubuntuclub.com ที่ถือว่าค่อนข้างจะตื่นตัวมากกันเลยทีเดียว

อ้างอิง

www.pantip.com/tech/article/article.php?id=205
www.ubuntuclub.com

Tags: , ,
Posted under Uncategorized | No Comments »