Home > Parallel Programming > Assignment 4 (CS427) – Use hpccluster and MPI programming

Assignment 4 (CS427) – Use hpccluster and MPI programming

ขั้นตอนการติดต่อเครื่อง hpccluster และคำสั่งพื้นฐาน

1. เมื่อเริ่มต้นติดต่อไปยังเครื่อง hpccluster.cs.tu.ac.th เป็นครั้งแรก ระบบจะถามถึง passphrase ที่ต้องการใช้ และตำแหน่งที่เก็บ passphrase เพื่อใช้ในการเข้ารหัส private key

2. ใช้คำสั่ง $ ssh-agent /bin/sh เพื่อให้สามารถสั่งงาน compute-node โดยที่ไม่จำเป็นจะต้องกรอก passphrase เข้าไปใหม่ และใช้คำสั่ง $ ssh-add เพื่อให้ private-key ถูกโหลดขึ้นไปยังหน่วยความจำ เมื่อเรียกโปรแกรมนี้ โปรแกรมจะถามถึง passphrase เพื่อใช้ในการถอดรหัส ให้กรอก passphrase ตามที่ได้ตั้งไว้

3. ใช้คำสั่ง $ cluster-fork uptime เพื่อแสดงว่าเครื่อง compute-node ใดบ้างที่ทำงานอยู่และมี workload เป็นอย่างไร ซึ่งเมื่อทำการ Redirect ออกมาเป็นไฟล์ด้วยคำสั่ง $ cluster-frok uptime > output และทำการโหลดไฟล์มายังเครื่องด้วยโปรแกรมจะได้ไฟล์ที่มีข้อมูลดังนี้

compute-0-14: down
compute-0-17:  21:04:52 up 30 days, 12:14,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-20:  21:04:52 up 30 days, 12:15,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-28: down
compute-0-29:  21:04:55 up 30 days, 12:14,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-30:  21:04:55 up 30 days, 12:15,  0 users,  load average: 0.15, 0.08, 0.01

compute-0-31:  21:04:56 up 30 days, 12:15,  0 users,  load average: 0.00, 0.00, 0.00

compute-0-32: down

MPI Programming

1. คัดลอกโฟลเดอร์ของไฟล์โปรแกรม MPI ตัวอย่างโดยใช้คำสั่ง $ cp -r /opt/mpich/gnu/examples /home/cs4270904/examples ทำการคอมไพล์โปรแกรม cpi.c ด้วยคำสั่ง $ mpicc cpi.c –o cpi โดยจะได้ executable file ชื่อว่า cpi

2. ออกคำสั่ง $ lamboot เพื่อสร้าง LAM runtime system และออกคำสั่ง $ lamnodes เพื่อตรวจสอบว่ามีเครื่องใดอยู่ใน LAM runtime system ซึ่งควรจะมีเพียงเครื่องเดียว เนื่องจากยังไม่ได้กำหนดเครื่องอื่นเพิ่มเติม

3. รันโปรแกรม cpi ด้วยคำสั่ง $ mpirun –np 1 cpi โดยที่ –np1 หมายถึงให้รันโปรแกรมโดยใช้ 1 โพรเซส จะได้ผลลัพท์คือ

ทดสอบด้วยการเพิ่มจำนวนโพรเซสที่ใช้รันเป็น 4 และ 8 ตามลำดับ

โปรแกรม cpi ทำหน้าที่หาค่า Pi ซึ่งจากการทดสอบพบว่ายิ่งเพิ่มจำนวนโพรเซสก็จะใช้เวลาในการทำงานเพิ่มขึ้น เนื่องจากยังกำหนดให้ประมวลผลบนเครื่องเดียว และยิ่งเพิ่มจำนวนโพรเซสก็จะยิ่งได้ค่า Pi ที่แม่นยำขึ้น (Error ลดน้อยลง)

4. และเมื่อทดสอบการใช้งานแล้วให้ออกคำสั่ง $ lamhalt เพื่อปิด LAM runtime system

5. เพื่อที่จะรันโปรแกรมด้วยการใช้เครื่องหลายเครื่องช่วยกันประมวลผล จะต้องทำการสร้าง hostfile ที่จะระบุชื่อของเครื่องทั้งหมดที่จะใช้งาน (ดูเครื่องที่ปัจจุบันสามารถใช้งานได้จากคำสั่ง cluster-fork uptime) ซึ่งในที่นี้จะตั้งชื่อไฟล์ว่า machine จะเปิดระบบ LAM runtime system ใหม่โดยใช้คำสั่ง $ lamboot machines เพื่อให้เริ่มต้นการทำงานโดยมีเครื่องภายในไฟล์ machines เป็นเครื่อง cluster ที่จะร่วมกันทำงาน ไฟล์ machine ที่ใช้ เป็นดังนี้

hpccluster
compute-0-17
compute-0-20
compute-0-29
compute-0-30
compute-0-31

6. จากนั้นใช้คำสั่ง $ lamnodes เพื่อดูเครื่องทั้งหมดที่ทำงานอยู่

7. ทดสอบการรันโปรแกรม cpi อีกครั้ง ซึ่งแตกต่างจากเดิมในส่วนที่ครั้งนี้จะใช้เครื่องหลายเครื่องช่วยในการประมวลผลโดยออกคำสั่งคือ $ mpirun n1-5 –np 4 cpi ซึ่งหมายถึงให้ใช้เครื่อง n1 ถึง n5 ในการประมวลผล (ไม่ใช้เครื่อง hpscluster เป็น front node) และใช้โพรเซสจำนวนทั้งหมด 4 โพรเซส ได้ผลลัพท์คือ

และทดลองใช้ 8 โพรเซส

ผลลัพธ์ที่ได้คือทั้งการใช้ 4 และ 8 โพรเซสบนเครื่องที่มีจำนวนมากขึ้นจะทำให้สามารถประมวลผลได้เร็วขึ้น

8. คัดลอกโปรแกรม Master/slave จากเว็บ http://www.mcs.anl.gov/research/projects/mpi/tutorial/mpiexmpl/src2/io/C/main.html และเซฟไฟล์ด้วยชื่อ io.c จากนั้นทำการอัพโหลดขึ้นไปยังเครื่อง Server โดยโปรแกรมนี้มีการทำงานคือจะส่งข้อความจากโพรเซสที่เป็น Slave มายังโพรเซสที่เป็น Master และทำการแสดงผลออกทางหน้าจอ

9. คอมไพล์โปรแกรมด้วยคำสั่ง $ mpicc io.c –o io และทดสอบรันด้วยการใช้ 4 โพรเซส ซึ่งจะมีโพรเซสที่เป็น Master 1 โพรเซส และ Slave อีก 3 โพรเซส

Categories: Parallel Programming Tags: , ,
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: