grid computing in bridging the digital divide, improving...

161
การอบรมเบื ้องต ้น Supercomputing Contest 2010 1

Upload: others

Post on 24-Feb-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การอบรมเบองตนSupercomputing Contest

2010

1

Page 2: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

จดท าโดยศนยไทยกรดแหงชาต

ส านกงานสงเสรมอตสาหกรรมซอฟตแวรแหงชาต

2

Page 3: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• วนท 1– ลนกซเบองตน

– การเขยนโปรแกรมภาษา C บนลนกซ– แนะน าเทคโนโลยระบบคลสเตอร

• วนท 2– หลกการของโปรแกรมแบบขนาน และ MPI

– ตวอยางของโปรแกรม MPI

3

Page 4: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ลนกสเบองตน

4

Page 5: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ลนกสท างานแบบไคลเอนต/เซรฟเวอร

– ผใชตองท าการลอคอนเพอเขาใชงาน

– ผใชจ าเปนตองม Username และ Password

• ลนกสจ าแนกผใชเปน 2 กลมหลกคอ

– ผใชทวไป (User)

– ผดแลระบบ (Root)

5

Page 6: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ปจจบนนยมใชงานโปรแกรมในกลม SSH Client เพอเขาใชงานระบบ Linux ผานทางไกล

• การท างานอยในรปแบบของ text-base และใชงานคอมมานดไลนเปนหลก

• ตวอยางโปรแกรม SSH Client ทใชงานไดฟรบนวนโดวส

• โปรแกรม Putty

• ส าหรบการใชเชลลผาน SSL (Secure Socket Layer) หรอเรยกวา SSH (Secure SHell)

• โปรแกรม WinSCP

• ส าหรบรบสงไฟลระหวางลนกสและวนโดวสผาน SFTP โปรโตคอล

6

Page 7: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โปรแกรม PuTTy อยบนวนโดวส

7

Page 8: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การเรยกใชงานลนกซดวยโปรแกรม Putty (ตอ)

• กรอกชอเครอง หรอหมายเลข IP ของเครอง

• สามารถ Save Profile ดวยการก าหนดชอ และ Save

8

Page 9: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โปรแกรมจะ save SSH keys ใหท าการกด Yes

– SSH Key เปนกระบวนการเพอยนยนตวตนของเครอง server เพอปองกนการใชงานเครองทไมถกตอง

• จะปรากฏหนาจอใหท าการ กรอก Username & Password

9

Page 10: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สงผานไฟลดวยโปรแกรม WinSCP

– การสงผานไฟลในสมยกอนนยมการสงผานดวยโปรแกรม FTP แตเนองจากโปรแกรม FTP มจดออน เรองการรกษาความปลอดภย และสามารถโดนHack ไดงาย (เปลยนไปใช sftp – secure ftp )

– โปรแกรม WinSCP เปนการสงไฟลผานมาตรฐานของระบบ Secure shell ซงมการเขารหสขอมล และมระบบปองกนการโจมตทด

– สามารถโหลดไดท http://winscp.net/eng/index.php

10

Page 11: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การใชโปรแกรม WinSCP

1. กรอก Host name

2. กรอก User name

3. กรอก Password

11

Page 12: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การใชโปรแกรม WinSCP

• โปรแกรมจะท าการเชอมตอไปยงเครองเซรฟเวอร

• ในการเชอมตอครงแรก โปรแกรมจะถามถงการยอมรบ Keys ของเซรฟเวอรวาเชอถอ และจดเกบ keys หรอไม

12

Page 13: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

13

Page 14: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• เทอรมนล(Terminal)- คอชองทางทอนญาตใหผใชลอกอนเขาสเคอรเนลทงแบบโลคอลและแบบรโมท

• เชลล(Shell)- คอสวนของลนกสจะใชส าหรบสงอนพทจากผใชไปยเคอรเนล- ลนกสสวนใหญมกใช BASH Shell (Bourne Again Shell) เปนเชลลปรยาย (Default shell)

• เคอรเนล(Kernel)- คอหวใจหลกของระบบท าหนาทตดตอไปยงฮารดแวร

• ลนกสอนญาตใหมหลายเทอรมนลได โดยแตละเทอรมนลมเชลลเปนของตนเอง

14

Page 15: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ลนกสอนญาตใหมหลายเทอรมนลได โดยแตละเทอรมนลมเชลลเปนของตนเอง

15

Page 16: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ลนกสเปนระบบปฏบตการทนยมใชการท างานแบบ text mode เปนหลก (ท างานไดเรว)

“ ในการเรยกใชค าสงจะเปนการเรยกชอค าสง (command) และ options ซงเรยกวา ‚flags‛

“ ซง Commands จะปอนเขาสระบบผาน command prompt“ ในระบบลนกส, จะตองค านงถงตวเลก-ตวใหญของตวอกษร“ บนคอมมานดไลนเดยวกนสามารถเขยนค าสงไดมากกวาหนงค าสง โดยใช ; กนระหวางค าสง

16

Page 17: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

[prompt]$ <command> <flags> <args>

user01@local$ ls –l -a unix-tutorial

Command Prompt Command (Optional) flags (Optional) arguments

17

Page 18: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ระบบไฟลบนลนกสและค าสงเบองตน

18

Page 19: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ระบบไฟลบนวนโดวส

– Windows XP, Windows VISTA

• Support FAT32, NTFS

• File system of BSD Family OS

– FFS (Fast File System)

19

Page 20: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

20

คณลกษณะ ระบบปฏบตการวนโดวส ระบบปฏบตการลนกส

ระบบไฟล NTFS, FAT ext2, ext3

การอางองรทของพารทชน C:, D:, F:แตละพารทชนเปนรท

แตละพารทชนอยภายใตรทโหนด (“/”)

Page 21: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• แบงออกเปน 2 ประเภทคอ

– Linux Swap

• ส าหรบท าหนาทเปน Virtual Memory

– Linux File System

• ท าหนาทจดเกบไฟลขอมล

• ระบบไฟลทนยมใชกนมากในปจจบนคอ ระบบไฟล ext3

21

Page 22: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

22

ไดเรกทอร ค าอธบาย

/ เกบไดเรกทอรทงหมด และไมเกบไฟลอนๆ

/boot เกบเคอรเนลและไฟลทใหส าหรบบตลนกส

/home เกบขอมลของผใชทงหมด

/usr เกบค าสงระบบและยทลตตาง

/usr/local ส าหรบซอฟตแวรทอาจตดตงเพมเตม

/opt ส าหรบซอฟตแวรทอาจตดตงเพมเตม

/var เกบขอมลของลอกไฟลตางๆ และ Spools

/tmp เกบไฟลชวคราวทสรางขนโดยโปรแกรมตางๆ

Page 23: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

23

เปรยบเทยบระหวางลนกสและวนโดวส

โครงสรางไดเรกทอรของลนกส

Page 24: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ไดเรกทอร : ใชส าหรบการเกบ และจดระเบยบไฟลขอมลหรอไดเรกทอรยอย และอยในรปของตนไม

• เสนทางแบบสมบรณ (Absolute pathname) : ชอของเสนทาง(Path) จากรทไดเรกทอร(/) ไปยงไฟลหรอไดเรกทอรปลายทาง

• รทไดเรกทอร(Root) : ชนสงสดของไดเรกทอร– จะใชสญลกษณในการอางองเปน “/”

24

Page 25: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โครงสรางของไฟลในระบบยนกส

25

/root

Page 26: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โฮมไดเรกทอร(/home) : ผใชหนงคนจะมไดเรกทอรนเพยงหนงไดเรกทอร และไมซ ากน

• ค าสงแสดงไดเรกทอรขณะใชงาน และแสดงแบบสมบรณ คอ “pwd” (print working directory)โดยเสนทางแบบสมบรณนจะอางอง ต าแหนงตนไมของโครงสรางไดเรกทอร

• ค าสงเปลยนไดเรกทอร “cd” (change directory) เปลยนไดเรกทอรไปยงไดเรกทอรทตองการ ณ ต าแหนงตนไมของโครงสรางไดเรกทอร

• ~ (metacharacter) จะอางองถงโฮมไดเรกทอร เชน “cd ~”

• Relative pathname คอการอางองต าแหนงของไฟลหรอไดเรกทอร ทอยบนไดเรกทอรขณะใชงาน ใช “./”

26

Page 27: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• “ TAB-completion ” เราสามารถใชแทบ (ป ม TAB) เพอแสดง (หรอเพมเตม) ชอค าสง หรอไฟล หรอไดเรกทอรใหสมบรณ – แสดงค าสงของระบบทเกยวของและผใชสามารถใชงานได– สามารถแสดงชอไฟลทถกอางองในไดเรกทอรนนๆ– แสดงตวแปรสภาพแวดลอมการใชงานขณะนนได ($XXX)– เปนคณลกษณะพเศษของ Bash Shell

27

Page 28: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• Text File คอ ไฟลทสามารถอานได อยในรปแบบของตวอกษร• Binary Data File คอ ไฟลทอยในรปแบบทโปรแกรมสามารถอานไดเทานน

• Executable Program File คอ ไฟลทสามารถท างานได• Directory File คอ ไฟลทแสดงรายละเอยดของไดเรกทอร

28

Page 29: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• Linked File คอไฟลทเปนตวชไปยงไฟลอน• Special Device File คอไฟลทแสดงรายละเอยดของอปกรณ• Named Pipes คอไฟลทระบชองการสงขอมลระหวางโปรแกรม(โปรเซส) ในเครองเดยวกน

• Socket Files คอไฟลทอนญาตใหโปรแกรม(โปรเซส)บนเครองคอมพวเตอรอนสามารถเขยนไฟลลงในเครองได

29

Page 30: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

30

• ไฟลทขนตนดวย “.” (จด) เปนไฟลหรอไดเรกทอรทถกซอน• หากสทธของรายการใดขนตนดวย ‘d’ เชน ‘drwxrw-r--’ หมายถงรายการดงกลาวคอไดเรกทอร

• หากสทธของรายการใดขนตนดวย ‘l’ เชน ‘lrwxrwxrwx’ หมายถง รายการดงกลาวเปน Linked File

หมายเหต :• ไฟลการปรบแตงโปรแกรม(Configuration File) มกเปนไฟลทซอนเอาไว

• ค าสง ‘ls -a’ เปนค าสงทสามารถดไดทงไฟลปรกตและไฟลทถกซอน

Page 31: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ค าสง ‚pwd‛” แสดงต าแหนงไดเรกทรอรปจจบน

“ ค าสง ‚mkdir directory‛” ค าสงส าหรบสราง ไดเรกทรอร

“ ค าสง ‚rmdir [-option] directory‛” ค าสงส าหรบลบไดเรกทรอร (เงอนไข ตองไมมไฟลขอมลอยในไดเรกทรอรนน)

” -f, ไมแสดงขอผดพลาดหรอค าเตอน

31

Page 32: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ค าสง ‚cp [-option] source_file destination_file‛” ค าสงส าหรบท าส าเนาไฟล โดยจะท าส าเนาจากไฟลตนทาง ไปยงไฟลปลายทางทก าหนด

” -f, ไมแสดงขอผดพลาดหรอค าเตอน” -R, ท าการสรางส าเนาทกไฟล และทกไดเรกทรอร” -p, ท าการคงสทธของผใชไวเหมอนเดม” -i, แสดงพรอมพเพอยนยนในกรณเขยนไฟลทบ

32

Page 33: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ค าสง ‚mv [-option] source destination‛” เปนค าสงส าหรบยาย ไฟลหรอไดเรกทรอรจากตนทางไปยงปลายทาง

– -i, ใหแสดงการยนยนในกรณเขยนทบไฟลเดม“ ค าสง ‚rm [-option] file

” เปนค าสงในการลบไฟล หรอไดเรกทรอรทตองการออกจากระบบ

– -R, ท าการลบทกไฟล และทกไดเรกทรอรยอย

33

Page 34: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ค าสง ‚cd [directory]‛ ” ค าสงส าหรบการเปลยนต าแหนงของไดเรกทรอร

” ตวอยางเชน

“ cd /usr/local“ cd ..“ cd ../../etc/“ cd, กลบไปยงดฟอลไดเรกทรอร (user directory)

“ cd ~linux34

Page 35: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การใชสญลกษณ wildcard

• ls

• ls *.doc

• ls c???

• ls file?.*

35

Page 36: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ค าสง “more *filename+”

– เปนการแสดงขอมลภายในไฟล แบบทละบรรทด

• ค าสง “less *filename+”

– เปนค าสงแสดงขอมลภายในไฟล สามารถเลอนขน/ลงเพอแสดงผลได

• ค าสง “cat *filename+”

– เปนค าสงแสดงขอมลภายในไฟลทงหมด

36

Page 37: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ค าสง ‚head [-n] [filename]‛ ” แสดงขอมลสวนตนของไฟลทก าหนด ดวยจ านวนบรรทด n

“ ค าสง ‚tail [-n] [filename]‛” แสดงขอมลสวนทายของไฟลทก าหนด ดวยจ านวนบรรทด n” มกใชดลอกไฟลขณะทโปรแกรมท างาน โดยใช ‘tail ”f’

37

Page 38: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ค าสง “ls -option”

• ls เปนค าสงส าหรบแสดงไฟล และไดเรกทรอร– Option

• -a, เปนการแสดงไฟลขอมลทกไฟล รวมทงไฟลทซอน• -l, แสดงรายละเอยดของไฟล• -R, แสดงขอมลภายในของแตละไดเรกทรอร• -c, เรยงล าดบการปรบแกขอมล• -h, แสดงขนาดของไฟลในรปแบบ KB, MB หรอ GB

38

Page 39: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ค าสงในการ mount file

– mount –t type device target-dir• type ex. ext3, …• device ex. /dev/hda1, /dev/hdb1, …• target-dir ex. /, /var, /home,

/mnt/cdrom, …

39

/

/var /home

hda3

hda4hda1

Page 40: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

40

• ใชค าสง “mount”

• ตวอยางแสดงดงภาพ

Page 41: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ตวอยางการ mount อปกรณตอพวงตางๆ เชน– CD-ROM

• #mount /dev/cdrom /mnt

– Floppy Disk

• #mount /dev/floppy /mnt

– USB drive, Thumb drive

• #mount /dev/sdb1 /mnt• โดยปรกตลนกตจะมองเหน Thumb drive เปน

sd(a,b,c) โดยขนกบดสกทตดตงอยในระบบ41

Page 42: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ใชค าสง umount

– umount directory

– umount device

• ตวอยางเชน

– umount /var

– umount /hda1

42

Page 43: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ระบบจดเกบไวในไฟล /etc/fstab

• ตวอยางขอมลภายในไฟล fstab

43

Page 44: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ระบบยนกสมการก าหนดสทธไว 3 กลมคอ

– เจาของ (ผใช)

– กลมเดยวกบผใช

– บคคลทวไป

• ซงทกๆไฟล และไดเรกทรอรจ าเปนตองมการบนทกการเขาถงไวตงแตเรมสรางไฟล และมการปรบเปลยนสทธในกรณทมการแกไข และคงไวจนกวาไฟลนนจะถกลบ

44

rwx rwx rwxUser Group Other

Page 45: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

– r = Read Permission

– w = Write Permission

– x = Execute Permission

• ในการเปลยนสทธใชค าสง “chmod number filename”

– ตวเลขสามารถหาไดจากการค านวณคา r, w, x ซงมคาดงน

– r = 4 (22)

– w = 2 (21)

– x = 1 (20)

– - = 0 45

Page 46: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ตวอยาง

” rwx = 7” rw- = 6” r-x = 5

“ rwxr-xr-x = 755“ rw-rw-rw- = 666“ rwxrwx--- = 770

46

Page 47: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การเปลยน permission ท าโดย– $ mkdir public_html

– $ chmod 755 publich_html

– $ ls

• การเปลยน permission แบบสมพทธ ชนดก าหนด ผใช ‘u’, กลม‘g’, หรอบคคลอน ‘o’.

– u = owner, g = group, o = other

– + = add permission, - = remove permission

• ค าสง chmod –R จะเปลยนสทธทงไฟลและไดเรกทอรยอย (Recursive)

47

Page 48: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Person Permission Add/remove

u = owner r = read + add

g = group w = write - remove

o = other x = execute

a = u+g+o

48

Page 49: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ rw-r--r-- change to rw-rw-r--– $ chmod g+w test

“ rw-r--r-- change to rwxrwxr-x– $ chmod ug+wx, o+x test

“ rwxrwxr-x change to rwxr--r--– $ chmod go-wx test

49

Page 50: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การเปลยนชอเจาของไฟลหรอไดเรกทรอร ท าโดย– $ chown [username].[groupname] [option] files

– option

• -R, เปลยนเจาของในไดเรกทรอรยอยดวย

• -f, ไมแสดงขอผดพลาด– $ chown user test.txt

– $ chown test.test homework.c

– $ chown test:test test.txt

– $ chown user1.group1 -R /home/

50

Page 51: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• Tar เปนค าสงในการรวมไฟล หรอไดเรกทรอร ใหรวมเปนไฟลเพยงไฟลเดยว โดยมขนาดรวมคงเดม (ไมมการบบอด)

• ค าสง– tar [option] outputfile.tar Directory(file1 file2…)

– option• c, สรางไฟล• v, แสดงการท างาน• x, การแยกไฟล• t, แสดงไฟลภายใน• f, ระบวาใหสรางไฟลแทนการพมพผลรวมออกทางหนาจอ

51

Page 52: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ตวอยางการใชงาน

– $ tar cvf test.tar /home/test

– $ tar tvf test.tar

– $ tar xvf test.tar

52

Page 53: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ค าสงส าหรบการบบอดไฟล Zip

– zip, unzip : ส าหรบไฟล MS window’s format.

– Gzip, gunzip : ส าหรบไฟล UNIX’s format

– bzip2, bunzip2 : วธการบบอดระดบสง

• ตวอยาง (การบบอดจ าเปนตองท าการ tar กอน)– $ tar cvf test.tar test ; gzip test.tar

– $ tar cvfz test.tar.gz test

– ผลลพธทง 2 ค าสงไดผลเหมอนกน, ‘test.tar.gz’.

53

Page 54: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ค าสงส าหรบการสงไฟลหรอไดเรกทอร ‘ scp ’ $ scp [-option] <source> <destination>

$ scp [-option] [user@host:/path/] [user@host:/path/]

54

Host A

User A

Host B

User B

Host C

User C

[userA@HostA]$ scp –r userB@hostB:/home/userB/send/ userC@hostC:/home/userC/

userB@hostB‟s password:

userC@hostC‟s password:

Page 55: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การเปลยนรหสผานควรท าทกๆ 3 เดอน

• รหสผานควรประกอบดวยตวเลขและตวอกษรอนๆ ผสมกน

• ค าสงส าหรบเปลยนรหสผาน– ‘ passwd ’

55

Page 56: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ลนกสมค าสงมากมาย• มคมอการใชงานแตละค าสง(Manual pages) มกถกตดตงมาพรอมกบการตดตงลนกส– จะใชค าสง “man” แลวตามดวยค าสงลนกสทตองการ– เชน “man ls”– คมอมหลายประเภท

• ค าสงบนลนกสมกเตรยมการชวยเหลอเบองตน เชน “ls --help”

• ลนกสยงมคมอหรอ Information Page เปนคมออยางงาย– ใชค าสง “info” แลวตามดวยค าสงลนกสทตองการ

56

Page 57: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• บนลนกซม text editor เปนจ านวนมาก– VI – text editor พนฐานบนระบบ UNIX มความยดหยนสงมาก แตใชงานคอนขางยาก

– Emacs – text editor ทเปนทนยมในการเขยนโปรแกรมและการเขยนเอกสาร ใชงานคอนขางยาก

– Nano – text editor อยางงายบนลนกซ

57

Page 58: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

58

Page 59: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• เรยกใชงาน nano ไดโดยการพมพค าสง “nano”

• ค าสงพนฐาน– การพมพและแกไขขอความ

• สามารถพมพและแกไขขอความไดทนท

– การเซฟไฟล• กด Ctrl+O เพอเซฟไฟล และระบชอไฟลทจะเซฟ

– การออกจากโปรแกรม• กด Ctrl+X เพอออกจากโปรแกรม

59

Page 60: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

60

Page 61: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การเซฟและออก

การเซฟ การออก

• สามารถกด Ctrl+X เพออกจาก NANO ไดทนท

• หากยงไมไดเซฟไฟล จะมค าเตอนเพอใหเซฟไฟลกอน

61

กด Ctrl+O และระบชอไฟล

Page 62: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

เปดไฟลทเคยสรางไวแลว

62

Page 63: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การเขยนโปรแกรมภาษา C บนลนกซ

63

Page 64: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ภาษา นามสกล ตวอยาง

C++

C

C#

Perl

PHP

Java

.c

.cpp

.cs

.pl

.php

.java

hello.c

hello.cpp

hello.cs

hello.pl

hello.php

hello.java

• โปรแกรมทเขยนขนมา ไมวาจะเขยนโดยใชอดเตอรอะไรกตาม จะไดซอรสโคด (source code) ซงจะเกบในรปแฟมขอมล ซงจะมนามสกลแตกตางกนไปดงน

64

Page 65: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ขอตรวจสอบดกอน

Main(){

printf(“XX”);printf(“YY”);}

ซอรสโคด

กระบวนการแปลโปรแกรม

มขอผดพลาด ไปแกไขมาใหม

ถกตองผานได

ตวแปลภาษา (Compiler)

65

สงซอรสโคดใหกบตวแปลภาษา

ตวแปลภาษา

Executable

File

ไฟลทสามารถรนได

ผลทได

Page 66: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ เมอเขยนโปรแกรมเสรจ ผานการแปลภาษาแลวผลทไดกจะเปนไฟลโปรแกรมทสามารถน าไปใชไดเลย โดยอาจกอปปลงดสกไปเปดทเครองอนๆ ได ซงจะเปนไฟลโปรแกรมแยกจากตวซอรสโคดทเราเขยน

“ ไฟลโปรแกรมทไดนนเปนไฟลแบบเลขฐานสอง หรอไบนารไฟล (.exe) เรยกวาเอกซควเทเบลไฟล(executable file) หรอ binary file

66

Page 67: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โปรแกรมภาษา C ใชค าสง gcc

– gcc mainfile.c• โปรแกรมภาษา fortran ใชค าสง , gfortran หรอ ifort

– ifort file.f90• โปรแกรมไบนารจะถกบนทกในไฟลชอ “a.out” (By default)หรอสามารถก าหนดชอโปรแกรมเพอใชในการรน(Executable File)

• การรนโปรแกรมใหน าหนาดวยเครองหมาย “./”

• เชน ./a.out

67

Page 68: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ภาษา C เปนภาษาทไดรบความนยมมากในการพฒนาโปรแกรม

“ ค าเตอน” ตองระมดระวงในการเขยนโคด เนองจากเขยนผดพลาดไดงาย” สราง bugs ส าหรบโปรแกรมไดงาย

“ แตเปนภาษาททรงประสทธภาพมาก” ท างานไดรวดเรวมาก” สามารถท างานระดบลางไดด” มค าสงทตรงไปตรงมา ไมซบซอน

68

Page 69: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ตวอยางของโปรแกรมภาษาซ

69

1 #include <stdio.h>

2

3 /* My First C program which prints "Hello world" */

4

5 int main(int argc, char * argv[])

6 {

7 printf("Hello world !\n");

8 return 0;

9 }

1 ใชไลบรารอนพทเอาตพทมาตรฐาน3 การท าคอมเมนตเพออธบายโปรแกรม5 ฟงกชนหลก main เปนฟงกชนแรกทโปรแกรมเรมท างานโดยสงคา 0 ใหกบระบบ6 เปดบลอกของโปรแกรม „{‟7 ใหคอมพวเตอรเขยน Hello world ออกทางจอภาพ8 สงคา 0 ใหกบระบบ9 ปดบลอกของโปรแกรม „}‟

ซอรสโคด

ค าอธบาย

Page 70: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

เปดคมอเพอเขยนโปรแกรม

70

1 #include <stdio.h>

2

3 /* My First C program which prints "Hello world" */

4

5 int main(int argc, char * argv[])

6 {

7 printf("Hello world !\n");

8 return 0;

9 }

ซอรสโคด

• ใช ‘ man stdio.h’

• ใช ‘man 2 printf’

• คมอทเกยวของกบการใชงานไลบรารตางๆมกอยทหมายเลข 2 และ 3

Page 71: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

#include<stdio.h>

void main()

{

char name[15]; // String Arrayint age;

printf(“What is your name ?\n”);

scanf(“%s”, name);

printf(“Enter year of your Age: ”);

scanf(“%d”,&age);

printf(“Hello %s, your Age is %d\n”, name ,age);

}

71

Page 72: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ สรางขนเพอความสะดวกสะบายในการเขยนโปรแกรมและคอมไพลโปรแกรม

“ บรรจค าสงเชนเดยวกบเชลลสครปต“ ตรวจสอบการแกไขซอรสไฟล (up-to-date)“ เปนเครองมอทจ าเปนในการพฒนาโปรแกรมบนลนกสและยนกส“ ไมตองท างานแบบล าดบเชนเดยวกบเชลลสครปต“ ใชเลเบลเพออางองการท างาน“ ใชค าสง ‘ make ’ เพอรนเมคไฟล

72

Page 73: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การสรางและใชงานเมคไฟล (ตอ)

73

• COMPILER=/usr/bin/gcc เปนการประกาศตวแปร• อางองตวแปรดวย $(<variable_name>) เชน $(COMPILER)• ค าสง ‘ make ’ จะเรมท างานทเลเบลแรก ในทนคอ ‘make’• สามารถขามไปท างาน ณ ต าแหนงเลเบลทตองการเชน ‘ $ make clean ’• เลเบลมกตามดวยอนพทของค าสงทใชภายใตเลเบลนน และใช ‘ $< ’ เพออางอง

Page 74: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สรางโปรแกรม Hello world ดวยภาษาซ และบนทกชอเปน test.c ดงน

74

Page 75: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ เขยน Makefile โดยใชคอมไพเลอรเปน gcc “ ก าหนดออปเจกตไฟลเปน test.o และรนโปรแกรมในชอ launch“ สรางเลเบลส าหรบลบไฟลทเคยคอมไพล ดงน

75

Page 76: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

“ ท าการคอมไพลโปรแกรม Hello world โดยใช Makefile “ Makefile ทสรางขนจะตองไมคอมไพล test.c ซ า ดงรป“ ทดลองใช ‘ make clean’ แลวคอมไพลใหม

76

Page 77: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การจบเวลาอยางงาย สามารถท าไดโดยใชค าสง time ในการจบเวลาการประมวลผล

[somsak_sr@gcc tmp]$ time ./hello_worldHello world

real 0m0.001suser 0m0.000ssys 0m0.001s[somsak_sr@gcc tmp]$

Real – เวลาโดยรวมทงหมดทใชในการประมวลผลUser – เวลาทใชในการประมวลผลSystem – เวลาทใชในการตดตอกบระบบ (เชน การอานเขยนไฟล การพมพขอความ)

77

Page 78: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

แนะน าเทคโนโลยระบบคลสเตอร

78

Page 79: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• “การค านวณแกปญหาทมขนาดใหญและมความซบซอนมาก โดยใชคอมพวเตอรทมความสามารถสงทสดเทาทมในเวลานน”– “ปญหาทมขนาดใหญและซบซอน”

– “คอมพวเตอรทมความสามารถสงทสด”

– “เทาทมในเวลานน”

79

Page 80: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ขนาด (Size): ปญหาทนกวทยาศาสตร หรอวศวกรไมสามารถแกไดดวยคอมพวเตอรพซ ตวอยางเชนปญหาทตองการหนวยความจ าขนาดใหญ หรอหนวยจดเกบขอมลขนาดหลายกกะไบต

• ความเรว (Speed): ปญหาทนกวทยาศาสตร หรอวศวกร ตองใชระยะเวลาทนานมากๆ ในการทจะไดมาซงค าตอบ ดวยการค านวณบนเครองคอมพวเตอรสวนบคคล (PC) ในขณะทใชระยะเวลาการค านวณไมกชวโมงบนเครอง ซเปอรคอมพวเตอร (Supercomputer)

80

Page 81: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ปญหาทมขนาดใหญและซบซอน

81

Page 82: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ปญหาทมความซบซอนมากขนาดทคอมพวเตอรทดทสดในเวลานนไมสามารถแกปญหาไดในเวลาอนเหมาะสม

• กลมปญหา Grand Challenge จะเปลยนไปเรอยๆ เมอคอมพวเตอรพฒนาขน• ตวอยางปญหาทาทายคอมพวเตอร

– Weather Forecast

– Computer Animation

– Molecular simulation

– Bioinformatics

– etc

82

Page 83: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ท าไดโดยการจ าลองการเปลยนแปลงของบรรยากาศ ณ เวลาหนงโดยค านวณทละ time step

• ตวอยางการค านวณ– พนทขนาด 36 X 36 ตร.กม. แบงเปนตารางขนาด 136 x 112 จ านวน 33 ชน รวมเปน

503,000 สวน พยากรณลวงหนา 24 ชม. โดยแบงเปน 1067 time step จะตองใชการค านวณทงหมด 2,558,666 Mflop หรอ 2.56 TeraFlop

– ป 2000 ใชเครอง Pentium III 500 MHz (99 Mflop/s) ใชเวลา 7.11 ชม.• ใชคลสเตอรจ านวน 64 เครอง ไดในเวลา 20 นาท

– ป 2004 ใชเครอง Xeon 2.8 GHz dual processor (991 Mflop/s) ใชเวลา 42.68 นาท

• รวมเปนคลสเตอรขนาด 120 เครอง ใชเวลา 66 วนาท เทานน !!

83

Page 84: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Less fish …

More fish!

• การท างานเชงขนาน (Parallelism)คอการท างานหลายๆอยางในเวลาเดยวกน ท าใหท างานไดเสรจมากกวาในเวลาทเทากน

84

Page 85: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• 1960- 1980s แนวคดทางทฤษฎเกดขนมากมาย

• 1962 CDC 1604 ซเปอรคอมพวเตอรเปนเครองแรก

• 1975 Cray-1 (80 MHz) ซเปอรคอมพวเตอรเครองแรกทผลตเพอจ าหนาย

• 1975-1990 มนวตกรรมคอมพวเตอรแบบขนานจ านวนมาก มงานวจยและผผลตจ านวนมาก Cray X MP, Cray Y MP, Cray-2

85

Page 86: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• 1990 บรษทผผลตหลายรายเลกกจการไป

• 1994 เบวลฟคลสเตอร (Beowolf cluster) เกดขน

• ปจจบน SMP (Symmetric Multiprocessor) และคลสเตอรคอสถาปตยกรรมหลก

• คอมพวเตอรในปจจบนเรมน าแนวคดแบบขนานมาใช

86

Page 87: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ถอก าเนดในป 1994

• โดยนาย Donald Becker จาก NASA ท าการประกอบคอมพวเตอร คลสเตอรตวแรกของโลก ประกอบดวย 16 เครอง DX4 PCs ระบบเครอขายเปน 10 Mb/s Ethernet

• เรยกระบบนวา เบวลฟคลสเตอร (Beowulf cluster)

• สรางจากอปกรณทหาไดทวไป (commercial off-the-shelf hardware) เชน คอมพวเตอรระดบพซ (PC) หรอสถานงาน (workstation) และอเทอรเนตสวตช (ethernet switch)

• ตวอยางโปรแกรม เชน data mining, simulations, parallel

processing, weather modeling, computer graphical rendering, etc. 87

Page 88: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Front-end

Compute-0

Compute-1

Compute-2

Compute-3

88

Page 89: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

คลสเตอร แบงไดเปน• High Performance Cluster

– เนนสมรรถนะหรอความเรว– Parallel programming

• High Throughput Computing– เนนปรมาณงานโดยรวม ใชทรพยากรใหเกดประโยชนสงสด– อาจใชวธ cycle-stealing

• High Availability Cluster– เนนความทนทานตอความผดพลาดของระบบ– มกใชอปกรณซ าๆกนหลายๆตว ท าหนาทเดยวกน

89

Page 90: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Demise of Mainframes, Supercomputers, & MPPs

คลสเตอรคอมพวเตอร

90

Page 91: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Serial computing

Front-end

Compute 0 Compute 1 Compute n…RAM

B CA

RAM RAM

D

91

Page 92: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Parallel computing

Front-end

Compute 0 Compute 1 Compute n…

A

RAM RAM RAM

A AA

A AA

92

Page 93: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ขนตอนใชงานระบบคลสเตอรมดงน– Log-in เขาใชงานระบบผานโปรแกรม Putty

– เขยนโปรแกรม– คอมไพลเปนไบนารไฟล– สงใหโปรแกรมท างาน– ตรวจสอบผล– ตดตามการท างานของโปรแกรม

93

Page 94: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ในระบบคลสเตอร ทมผใชหลายคน จ าเปนตองมการจดล าดบการใชงานทรพยากร

• โปรแกรมทท าหนาทจดการเรยกวา โปรแกรมจดล าดบงาน (Job Scheduler)– SUN Grid Engine

– PBS/Torque, LSF, Condor, Moab

• ท าไมตองม?– เพอก าหนดสทธ และล าดบขนของการท างาน เพอใหเกดความเสมอภาค และสามารถใช

ทรพยากรไดคมคาสงสด

94

Page 95: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

หลกการของโปรแกรมแบบขนาน

95

Page 96: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• จดประสงคคอการท าใหโปรแกรมท างานไดเรวขน

• งานขนาดใหญสามารถท าใหท างานเรวขนไดโดย– แบงงานใหญเปนงานยอยๆ หลายๆงาน

– สงงานยอยไปท างานยงเครองประมวลผลหลายๆ เครองพรอมกน

– รวบรวมผลทไดจากเครองประมวลผลตางๆ

96

Page 97: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โดยทวไปจะใชวธการ massage passing

– ลกษณะของ message passing คอ• การใชหนวยประมวลผลพรอมๆกนกบงานชนเดยวกน

• สามารถแลกเปลยนขอมลขณะประมวลผล

• มาตรฐานของการโปรแกรมแบบขนาน– MPI

• ปจจบนเปนเสมอนมาตรฐานส าหรบการเขยนโปรแกรมแบบขนาน

97

Page 98: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• วธการพฒนา– พฒนาโปรแกรมแบบขนานดวยไลบรารของ message passing เชน

MPI, PVM เปนตน ซงปจจบนไลบรารเหลานไดสนบสนนภาษาการเขยนโปรแกรมหลายภาษา เชน C/C++, java เปนตน

– คอมไพลโปรแกรมดวย คอมไพเลอรของโปรแกรมแบบขนาน

– พฒนาโปรแกรมดวยภาษาพเศษส าหรบโปรแกรมแบบขนาน เชน OpenMP, High performance fortan (HPF) เปนตน

98

Page 99: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• อลกอรทมในการแบงโปรแกรมแบบขนาน

– Functional Parallelism• เปนอลกอรทมทใชแบงแตละสวนของฟงกชนออกจากกน โดยสวนทแบงออกมานนจะตองเปนอสระตอกนและไมเกยวของกน แลวน าแตละสวนมาประมวลผลพรอมกน

• ตวอยาง E = A*B + C*D

• A*B และ C*D สามารถประมวลผลพรอมกนได เพราะทงสองสวนนนเมอแบงออกมาแลวจะไมมสวนทเกยวของกน

99

Page 100: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• อลกอรทมในการแบงโปรแกรมแบบขนาน (2)

– Data Parallelism

• เปนอลกอรทมทจะกระจายฟงกชนเดยวกนแตมขอมลขาเขาแตกตางกนไป แลวประมวลผลพรอมกน

• ตวอยาง A[1] = B[1] + C[1]

A[2] = B[2] + C[2]A[N] = B[N] + C[N]

• โดยแตละโปรแกรมจะประมวลผลพรอมๆกน ทงหมดใชหนวยประมวลผล N หนวย

B C

B[1] C[1]

B[2] C[2]

B[n] C[n]

A= +

A[1]

A[2]

A[n]

= +

= +

= +

100

Page 101: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ความสมพนธของขอมล (Data Dependency)

– เกดขนเมอการประมวลผลจ าเปนตองใชขอมลรวมกน

– ตวอยางท 1โปรแกรมท 1 คอ A = B + C, โปรแกรมท 2 คอ D = E + F• ไมมความสมพนธขอมล

– ตวอยางท 2โปรแกรมท 1 คอ A = B + C, โปรแกรมท 2 คอ D = E + A

• มความสมพนธขอมล โดยโปรแกรมท 1 จะตองประมวลผลเสรจกอนทจะเรมประมวลผลโปรแกรมท 2

101

Page 102: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ความสมพนธของขอมล (Data Dependency)

• ตวอยางท 1– A[i,j] = A[i-1, j] + 1

– A[0,0] A[1,0]

A[0,3]

A[1,3]

A[2,3]

A[3,3]

A[0,2]

A[1,2]

A[2,2]

A[3,2]

A[0,1]

A[1,1]

A[2,1]

A[3,1]

A[0,0]

A[1,0]

A[2,0]

A[3,0]

102

Page 103: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ความสมพนธของขอมล (Data Dependency)

• ตวอยางท 2– A[i,j] = A[i, j-1] + 2

– A[0,0] A[0,1]

A[0,3]

A[1,3]

A[2,3]

A[3,3]

A[0,2]

A[1,2]

A[2,2]

A[3,2]

A[0,1]

A[1,1]

A[2,1]

A[3,1]

A[0,0]

A[1,0]

A[2,0]

A[3,0]

103

Page 104: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

เลอกวธการแบงขอมล

• ความสมพนธของขอมล (Data Dependency)

• ตวอยางท 3– A[i,j] = A[i-1, j] + A[i, j-1]

– A[0,1], A[1,0] A[1,1]

104

Page 105: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• วธการพฒนาโปรแกรมแบบขนาน– เรมตนจากออกแบบโปรแกรมแบบ sequential ซงเปนการโปรแกรมแบบปกตทใชกน

– ตรวจสอบการท างานของโปรแกรมวามสวนใดบางทตองใชเวลาประมวลผลมากกวา เพอทจะพฒนาเปนการประมวลผลแบบขนาน

– เลอกวธการแบงขอมลและแบงงานออก

– เพมการเขยนโปรแกรมลงไปใหเปนโปรแกรมแบบขนาน

105

Page 106: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• MPI คอ Message Passing Interface

• เปนไลบรารส าหรบการตดตอสอสารระหวางหนวยประมวลผลและการแลกเปลยนขอมล

• ใชส าหรบการเขยนโปรแกรมแบบขนาน• ปจจบนไลบรารนไดถกพฒนาขนหลายแบบดงน

– MPICH• เปนไลบรารทไดรบความนยมสงสด

– OpenMPI

106

Page 107: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ขนตอนการใชงาน mpi

– เขยนโปรแกรมดวยไลบราร mpi

– คอมไพลโปรแกรมดวย คอมไพเลอร mpi โดยจะตองเลอกใหเหมาะกบภาษาทเขยนโปรแกรม

mpif77 mpi_prog.f

mpicc mpi_prog.c

mpif90 mpi_prof.f90

mpiCC mpi_prof.C

107

Page 108: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ขนตอนการใชงาน mpi (2)

– ระบเครองทสามารถประมวลผลไดใน machine file

– ประมวลผลโปรแกรมดวย mpirun

compute-0-0

compute-0-1

compute-0-2

mpirun –np <number of process> [option] <program>

108

Page 109: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• greetings.c#include <stdio.h>

#include <mpi.h>

main(int argc, char** argv) {

int my_rank; /* Rank of process */

int p; /* Number of processes */

int source; /* Rank of sender */

int dest; /* Rank of receiver */

int tag = 50; /* Tag for messages */

char message[100]; /* Storage for the message */

char name[32]; /* Processor name */

int name_len;

MPI_Status status; /* Return status for receive */

printf("start\n");

MPI_Init(&argc, &argv);

printf("MPI_Init OK\n");

109

Page 110: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• greetings.c (ตอ)MPI_Comm_rank(MPI_COMM_WORLD, &my_rank);

MPI_Comm_size(MPI_COMM_WORLD, &p);

MPI_Get_processor_name(name, &name_len);

if (my_rank != 0) {

sprintf(message, "Greetings from process %d at %s!", my_rank, name);

dest = 0;

MPI_Send(message, strlen(message)+1, MPI_CHAR, dest,

tag, MPI_COMM_WORLD);

} else {

printf("Process %d is waiting for greeting messages at %s\n", my_rank,

name);

for (source = 1; source < p; source++) {

MPI_Recv(message, 100, MPI_CHAR, source, tag,

MPI_COMM_WORLD, &status);

printf("%s\n", message);

}

}

MPI_Finalize();

}

110

Page 111: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• คอมไพลโปรแกรม

• รนโปรแกรม

• ผลการรนโปรแกรมstart

start

start

start

MPI_Init OK

Process 0 is waiting for greeting messages at pluto.cp.eng.chula.ac.th

Greetings from process 1 at compute-0-0.local!

Greetings from process 2 at compute-0-1.local!

Greetings from process 3 at compute-0-2.local!

MPI_Init OK

MPI_Init OK

MPI_Init OK

mpicc –o greetings greetings.c

mpirun –np 4 greetings

111

Page 112: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• เราสามารถก าหนดเครองทจะรนโปรแกรมได โดยสราง machine file ขนมา ทจะระบชอเครองตางๆ– machines

• รนโปรแกรมโดยระบ machine file น ดวย –machinefile

<machine file>

compute-0-0

compute-0-1

compute-0-2

mpirun –np 6 -machinefile machines greetings

112

Page 113: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ผลลพธทได[user1@pluto mpi]$ mpirun -np 6 -machinefile machines greetings

start

start

start

start

start

start

MPI_Init OK

Process 0 is waiting for greeting messages at pluto.cp.eng.chula.ac.th

Greetings from process 1 at compute-0-0.local!

Greetings from process 2 at compute-0-1.local!

Greetings from process 3 at compute-0-2.local!

Greetings from process 4 at compute-0-0.local!

Greetings from process 5 at compute-0-1.local!

MPI_Init OK

MPI_Init OK

MPI_Init OK

MPI_Init OK

MPI_Init OK

เปนเครองทระบใน machine file ตามล าดบ

113

Page 114: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การเขยนโปรแกรม MPI

114

Page 115: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• Rank

– ทกๆโปรเซสจะไดรบหมายเลขประจ าตว (Rank) หมายเลขหนง ซงจะเรมตนทหมายเลข 0 เสมอ Rank จะใชงานในการระบตนทางและปลายทาง ของการรบสง message ระหวางโปรเซส

• Group และ Communicator

– กลมของโปรเซส โดยทกลมของโปรเซสจะเชอมโยงกบ Communicator ซงเปนตวอางองส าหรบการท างานแบบเปนกลม โดยคาเรมตนของโปรแกรม MPI นน ทกๆโปรเซสจะอยในกลมทชอวา MPI_COMM_WORLD กอนเสมอ

115

1 2

34MPI_COMM_WORLD

0

Page 116: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• โปรแกรม MPI จะมการก าหนดชนดของตวแปร (Datatypes) ชนดใหมขนมาทงหมด– ตวแปรพนฐาน เชน MPI_INT (Integer)

MPI_DOUBLE_PRECISION (double)

– ตวแปรประเภท Array

– ตวแปรอนๆทสรางขนภายหลง โดยผใช

• ในการเรยกใชงานฟงกชนของ MPI จะตองมการระบประเภทของตวแปร โดยจะตองใชประเภทของตวแปรทก าหนดโดยมาตรฐาน MPI เสมอ

116

Page 117: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ในการรบสง message จะสามารก าหนดสงทเรยกวา tag เพอใชในการแยกประเภทของ message แตละสวนได

• ฝงรบสามารถทจะระบ tag ของ message ทตองการรบได หรอจะระบเปน MPI_ANY_TAG เพอรบทกๆ tag กได

117

Page 118: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การตดตอแบบจดตอจด (point-to-point)

– เปนการสง message ระหวางโปรเซส 2 โปรเซส

• การตดตอแบบเปนกลม (collective)

– เปนการสง message ระหวางกลมของโปรเซส เชน การสงจากจดเดยวไปหลายจด การรบจากหลายจดมาจดเดยว การรบและกระจายขอมล เปนตน

• การตดตอแบบ asynchronous

– เปนการรบสงขอมล โดยไมตองรอใหผ รบ/สง ไดรบขอความกอน– ชวยใหสามารถปรบปรงสมรรถนะของโปรแกรม ใหสามารถประมวลผลไปพรอมๆกบการรบสงขอมลได

118

Page 119: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• MPI มฟงกชนใหใชงานเปนจ านวนมากกวา 129 ฟงกชน แตส าหรบผ เรมตน รเพยง 6 ฟงกชนกสามารถเขยนโปรแกรม MPI ไดแลว

• ฟงกชนทง 6 ไดแก– MPI_INIT(int *argc, char **argv);

• เรมการท างานของโปรแกรม MPI

– MPI_FINALIZE();• จบการท างานของโปรแกรม MPI

– MPI_COMM_SIZE(comm,size);• อานคาจ านวนของโปรเซสทประมวลผลอย

– MPI_COMM_RANK(comm,pid);

• อานคาของ Rank ปจจบนของโปรเซสปจจบน

– MPI_SEND(buf,count,datatype,dest,tag,comm);

– MPI_RECV(buf,count,datatype,source,tag,comm,status);119

Page 120: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

#include "mpi.h"

#include <stdio.h>

int main( int argc, char *argv[] )

{

int rank, size;

MPI_Init( &argc, &argv );

MPI_Comm_rank( MPI_COMM_WORLD, &rank );

MPI_Comm_size( MPI_COMM_WORLD, &size );

printf( "I am %d of %d\n", rank, size );

MPI_Finalize();

return 0;

}

120

Page 121: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

MPI_Send (start, count, datatype, dest, tag, comm)

• ขอมลทจะสงจะระบโดยอาศย (start, count, datatype).

• ปลายทางทจะสง จะระบโดย dest (เปน rank ของปลายทางทจะสงไป)

• tag และ comm ใชระบ tag และกลมทจะสงขอมล• เมอฟงกชนเสรจสนการท างานแลว ขอมลจะถกน าสงไปเพอเตรยมสงไปยงปลายทาง โดยขอมลอาจจะยงไปไมถงปลายทาง

121

Page 122: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

MPI_Recv(start, count, datatype, source, tag, comm,

status)

• Start ชไปถงจดเรมตนของ buffer ทจะรบขอมล

• รอจนกวาขอมลทสงมาจาก Rank ทระบโดย Source และ Tag จะมาถง

• หากตองการไมระบทมาของขอความ สามารถระบ source เปน MPI_ANY_SOURCE

• Status จะระบสถานะของการรบขอมล

• Count ใชระบขนาดสงสดของ buffer ทใชพกขอมล

122

Page 123: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• Status เปนตวแปรประเภท MPI_Status ทใชอานขอมลของผสงขอมลint recvd_tag, recvd_from, recvd_count;

MPI_Status status;

MPI_Recv(..., MPI_ANY_SOURCE, MPI_ANY_TAG, ..., &status )

recvd_tag = status.MPI_TAG;

recvd_from = status.MPI_SOURCE;

MPI_Get_count( &status, datatype, &recvd_count );

123

Page 124: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

#include <mpi.h>

#include <stdio.h>

double wtime1,wtime2;

int buff[1024]={1,2,3,};

MPI_Status status;

int main(int argc,char **argv)

{

int mysize,myid;

int i;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&mysize);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

124

Page 125: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

if ( myid==0 ) {

wtime1=MPI_Wtime();

printf("I am process #%d sending\n",myid);

MPI_Send(buff,100,MPI_INT,1,0,MPI_COMM_WORLD);

printf("I am process #%d receiving\n",myid);

MPI_Recv(buff,1024,MPI_INT,MPI_ANY_SOURCE,0,MPI_COMM_WORLD,&status);

wtime2=MPI_Wtime();

printf("Round Trip Time=%10.4f\n",wtime2-wtime1);

MPI_Finalize();

} else {

printf("I am process #%d receiving\n",myid);

MPI_Recv(buff,1024,MPI_INT,MPI_ANY_SOURCE,0,MPI_COMM_WORLD,&status);

for(i=0;i<3;i++) printf("%d ",buff[i]);

printf("\n");

printf("I am process #%d sending\n",myid);

MPI_Send(buff,100,MPI_INT,0,0,MPI_COMM_WORLD);

MPI_Finalize();

}

}

125

Page 126: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ตวอยางของโปรแกรม MPI

126

Page 127: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การหาคาของ PI สามารถประมาณไดโดยการใชฟงกชนดงน

• โดยการอนทเกรดคาตามฟงกชนน จาก 0 ไปถง 1 และคณดวย 4

127

41

11

0

2

dxx

Page 128: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• แบงการอนทเกรด ใหเปนการหาพนทใตกราฟดงตวอยาง โดยแบงพนทออกเปนพนทยอยๆหลายๆพนท

• โปรเซสแตละโปรเซสจะค านวณหาพนทในแตละสวน• เมอค านวณหาพนทเสรจแลวจงน ามารวมกนในขนตอนสดทาย

• ในกรณน จะเหนไดวายงแบงยอยพนท (เพมจ านวนโปรเซส) มากขน กจะไดคา PI ทมความละเอยดสงขน

128

Page 129: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

#include <stdio.h>

#include <math.h>

#include <mpi.h>

int main(int argc, char *argv[])

{

int myid, numprocs, i, rc, count;

/* divide graph into 10000000 fragment */

int n = 100000;

double PI25DT = 3.141592653589793238462643;

double mypi, pi, h, sum, x, a;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&numprocs);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

h = 1.0 / (double) n;

sum = 0.0;

for (i = myid + 1; i <= n; i += numprocs) {

x = h * ((double)i - 0.5);

sum += 4.0 / (1.0 + x*x);

}

mypi = h * sum;

ตวอยางโปรแกรมหาคา Pi อยางงาย

if(myid != 0) {

// send back data

MPI_Send(&mypi, 1, MPI_DOUBLE, 0, 0, MPI_COMM_WORLD);

} else {

// gather all data

pi = mypi;

count = 0;

while(count < (numprocs - 1) ) {

MPI_Recv(&mypi, 1, MPI_DOUBLE, MPI_ANY_SOURCE,

0, MPI_COMM_WORLD, NULL);

count++;

pi += mypi;

}

}

if (myid == 0)

printf("pi is approximately %.16f, Error is %.16f\n",

pi, fabs(pi - PI25DT));

MPI_Finalize();

return 0;

}129

เรมการท างาน

ค านวณพนทกราฟสวนยอย

รวมผลลพธการค านวณ

แสดงผลและจบการท างาน

Page 130: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

#include <stdio.h>

#include <math.h>

#include <mpi.h>

int main(int argc, char *argv[])

{

int myid, numprocs, i, rc, count;

/* divide graph into 10000000 fragment */

int n = 100000;

double PI25DT = 3.141592653589793238462643;

double mypi, pi, h, sum, x, a;

MPI_Status status;

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&numprocs);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

h = 1.0 / (double) n;

sum = 0.0;

for (i = myid + 1; i <= n; i += numprocs) {

x = h * ((double)i - 0.5);

sum += 4.0 / (1.0 + x*x);

}

mypi = h * sum;

ตวอยางโปรแกรมหาคา Pi ฉบบปรบปรง

MPI_Reduce(&mypi, &pi, 1, MPI_DOUBLE, MPI_SUM, 0,

MPI_COMM_WORLD);

if (myid == 0)

printf("pi is approximately %.16f, Error is %.16f\n",

pi, fabs(pi - PI25DT));

MPI_Finalize();

return 0;

}

130

เรมการท างาน

ค านวณพนทกราฟสวนยอย

รวมผลลพธการค านวณ

แสดงผลและจบการท างาน

Page 131: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• หาคาของผลลพธในการคณเมตรกซ A และ B

A B

X

Page 132: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

double a,b,c;

main(int argc,char *argv[])

{

integer i,j,k;

readfile(a,b);

for( i=0; i < n; i++)

for (j=0; j < n; j++) {

c[i][j]=0;

for(k=0; k < n; k++)

c[i][j] += a[i][k] * b[k][j];

}

writefile( c);

}

Page 133: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สมมตเราม 4 โปรเซส: P0-P3– ขนท 1: กระจาย B ไปยง

P0-P3

– ขนท 2: สง column ทถกตองไปยง P0-P3

– ขนท 3: ค านวณผลลพธของเมตรกซยอย

– ขนท 4: รวมเมตรกซยอยเขาเปนผลลพธรวม

B

P0

P1

P2P3

A

C

P0

P1

P2P3

Page 134: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

โปรแกรมคณเมตรกซแบบขนานโดยใช MPI

/*/* * mmult.c: matrix multiplication using MPI. * There are some simplifications here. The main one

is that matrices B and C * are fully allocated everywhere, even though only a

portion of them is * used by each processor (except for processor 0) */ #include <mpi.h>#include <stdio.h> #define SIZE 400 /* Size of matrices */ int A[SIZE][SIZE], B[SIZE][SIZE], C[SIZE][SIZE]; void fill_matrix(int m[SIZE][SIZE]){static int n=0;int i, j;for (i=0; i<SIZE; i++)for (j=0; j<SIZE; j++)m[i][j] = n++;

}

void print_matrix(int m[SIZE][SIZE]){

int i, j = 0;for (i=0; i<SIZE; i++) {

printf("\n\t| ");for (j=0; j<SIZE; j++)

printf("%2d ", m[i][j]);printf("|");

}}

Page 135: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

int main(int argc, char *argv[]){int myrank, P, from, to, i, j, k;int tag = 666; /* any value will do */MPI_Status status;

double t1,t2,t;

MPI_Init (&argc, &argv);MPI_Comm_rank(MPI_COMM_WORLD, &myrank); /* who am i */MPI_Comm_size(MPI_COMM_WORLD, &P); /* number of processors */

if (SIZE%P!=0) {

if (myrank==0) printf("Matrix size not divisible by number of processors\n");

MPI_Finalize();exit(-1);

}from = myrank * SIZE/P;to = (myrank+1) * SIZE/P;

/* Process 0 fills the input matrices and broadcasts them to the rest */ /* (actually, only the relevant stripe of A is sent to each process) */

if (myrank==0) {fill_matrix(A);fill_matrix(B);

}t1 = MPI_Wtime(); MPI_Bcast (B, SIZE*SIZE, MPI_INT, 0, MPI_COMM_WORLD);MPI_Scatter (A, SIZE*SIZE/P, MPI_INT, A[from], SIZE*SIZE/P, MPI_INT, 0,

MPI_COMM_WORLD);

Page 136: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

// printf("computing slice %d (from row %d to %d)\n", myrank, from, to-1);for (i=from; i<to; i++) for (j=0; j<SIZE; j++) {C[i][j]=0;for (k=0; k<SIZE; k++)C[i][j] += A[i][k]*B[k][j];

}MPI_Gather (C[from], SIZE*SIZE/P, MPI_INT, C, SIZE*SIZE/P, MPI_INT, 0, MPI_COMM_WORLD);

t2 = MPI_Wtime(); if (myrank==0) printf("%d,%5.2f\n",P,t2-t1);

if (myrank==0) {printf("\n\n"); print_matrix(A); printf("\n\n\t * \n"); print_matrix(B);printf("\n\n\t = \n"); print_matrix(C); printf("\n\n");

}MPI_Finalize();return 0;

}

Page 137: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

การสงงานประมวลผลในระบบคลสเตอร

137

Page 138: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

Sun Grid Engine (SGE)

• ท าไมตองเรยก “กรด”?

– รองรบการท างานบนทรพยากรหลากหลายชนด อาท compute

server, data collector, visualization terminal..

• SGE คอ โปรแกรมบรหารจดการทรพยากร– รองรบการสงงานจากผใช– จดล าดบการท างานตามเงอนไขทผแล

ก าหนด– รองรบการท างานไดมากกวา 100

งานพรอมกน138

Page 139: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การบรหารงานใน SGE

• ผใชแตละคนสามารถสงงานไปประมวลผลผานระบบจดล าดบงาน SGE แลวสามารถออกจากระบบไดเลย โดยทไมจ าเปนตองรอใหงานประมวลผลเสรจ

• ระบบจดล าดบงาน SGE จะเลอกเครองประมวลผลเองอตโนมต ตามนโยบายทผดแลเครองก าหนดไว

• ขอมลขาออก(output) และขอมลความผดพลาด(error) ของงานทไปประมวลผลนน จะถกบนทกอยในไฟลขอมลขาออกและขอมลความผดพลาด

139

Page 140: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ค าสง ค าอธบาย

qsub สงงานไปประมวลผล

qstat แสดงสถานะการท างาน

qdel ยกเลกงานทประมวลผล

qhost แสดงเครองประมวลผลทสามารถตดตอไดในขณะน

qalter แกไขคาคณลกษณะของงาน

• ค าสงพนฐานของระบบจดล าดบงาน SGE

140

Page 141: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การเขยนสครปตงาน เปนการระบโปรแกรมทตองการประมวลผล โดยในสครปตงานหนงอาจจะเรยกใชมากกวา 1 โปรแกรม

• ตวอยางการเขยนสครปตงานเพอทจะสงงานไประบบจดล าดบงาน SGE

#!/bin/sh

date

echo “Hello world”

141

Page 142: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ขนตอนการเขยนสครปตงานเพอสงไปยงระบบจดล าดบงาน SGE

– เปดโปรแกรมเขยนขอความ เชน vi, nano, pico เปนตน– เขยนสครปตงานตามทตองการ

– บนทกขอมลใหนามสกลเปน .sh หรอ .job

– สงงานไประบบจดล าดบงาน SGE ดวยค าสง qsub

– ตรวจสอบสถานะการท างานดวยค าสง qstat

142

Page 143: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• เปดโปรแกรมเขยนขอความ

• เขยนสครปตงาน

• บนทก

#!/bin/sh

date

echo “Hello world”

[userl @frontend-0 ~]$ vi simplejob.sh

1. Esc

2. Shift + :wq

3. enter

143

Page 144: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สงงานไปยงระบบจดล าดบงาน SGE ดวยค าสง qsub

• หลงจากสงงานไปแลวระบบจดล าดบงาน SGE จะมอบหมายเลขงาน (Job ID) ซงเอาไวอางองถงงานน เชนถาหากตองการยกเลกการประมวลผลงานนใหใชค าสง qdel พรอม Job ID

[user1@frontend-0 ~]$ qsub simplejob.sh

Your job 3241 (“simplejob.sh") has been submitted

[user1@frontend-0 ~]$

144

Page 145: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• หลงจากทงานไดถกประมวลผลเรยบรอย ขอมลขาออก (output) จะถกบนทกอยในไฟล “simplejob.o<job id>” และขอความผดพลาด (error) จะถกบนทกในไฟล “simplejob.e<job id>”

[user1@frontend-0 ~]$ ls simplejob*

simplejob.sh simplejob.sh.e3249 simplejob.sh.o3249

[user1@frontend-0 ~]$ cat simplejob.sh.o3249

Mon Oct 22 13:18:55 ICT 2007

Hello world

[user1@frontend-0 ~]$ cat simplejob.sh.e3249

[user1@frontend-0 ~]$

145

Page 146: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• เปดโปรแกรมเขยนขอความ

• เขยนสครปตงาน

• บนทก

[userl @frontend-0 ~]$ nano simplejob2.sh

#!/bin/sh

date

echo “sleep 10000 seconds”

sleep 10000

146

Page 147: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สงงานไปยงระบบจดล าดบงาน SGE ดวยค าสง qsub

• ตรวจสอบสถานะการท างานดวยค าสง qstat

• สถานะ “qw” หมายถงงานรอการประมวลผลอยทควประมวลผล ซงระบบจดล าดบงาน SGE ก าลงหาเครองประมวลผลใหกบงานอย

[userl @frontend-0 userl]$ qsub simplejob2.sh

[userl @frontend-0 ~]$ qsub simplejob2.sh

Your job 3250 ("simplejob2.sh") has been submitted

[userl @frontend-0 ~]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

--------------------------------------------------------------------------------

3250 0.00000 simplejob2 userl qw 10/22/2007 13:24:59 1

[userl @frontend-0 ~]$

147

Page 148: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ตวอยางท 2 การเขยนสครปตงานเพอสงไปยงระบบจดล าดบงาน SGE

• เมอลองตรวจสอบอกครงหนงดวย qstat พบวาสถานะเปน “t” หมายถง งานก าลงเรมประมวลผล

• เมอสถานะเปน “r” หมายถง งานก าลงประมวลผล

[userl @frontend-0 ~]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

-------------------------------------------------------------------------------

3255 0.55500 simplejob2 userl t 10/22/2007 13:34:55 [email protected] 1

[userl @frontend-0 ~]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

-------------------------------------------------------------------------------

3255 0.55500 simplejob2 userl r 10/22/2007 13:34:55 [email protected] 1

148

Page 149: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

ขอมล ค าอธบาย

job id หมายเลขประมวลผล

name ชองาน

user name ชอเจาของงาน

state สถานะการท างาน

queue ควประมวลผลงาน ใน Rocks สวนใหญจะเปนชอเครองลกขาย

• ขอมลทส าคญของการแสดงสถานะ

149

Page 150: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• การยกเลกการประมวลผลงาน

• ตรวจสอบหมายเลขประมวลผลดวยค าสง qstat

• ยกเลกการประมวลผลงานดวยค าสง qdel <job id>[userl @frontend-0 ~]$ qdel 3255

userl has registered the job 3255 for deletion

[userl @frontend-0 ~]$

[userl @frontend-0 ~]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

-------------------------------------------------------------------------------

3255 0.55500 simplejob2 userl t 10/22/2007 13:34:55 [email protected] 1

150

Page 151: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ตวอยางท 3 การเขยนสครปตงานเพอสงไปยงระบบจดล าดบงาน SGE

• สรางไดเรกทอร “myproject” แลวเขาไปยงไดเรกทอรน

• สรางโปรแกรม “myprog.c” ตามตวอยางตอไปน

[userl@frontend-0 ~]$ mkdir myproject

[userl@frontend-0 ~]$ cd myproject

#include <stdio.h>

int main(int argc, char * argv[]){

if(argc < 2){

return -1;

}

printf("arg 1 is %s\n", argv[1]);

return 0;

}

151

Page 152: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• คอมไพลโปรแกรม “myprog”

• เขยนสครปตงานทชอ “advancejob.sh”

[userl @frontend-0 myproject]$ gcc myprog.c -o myprog

#!/bin/sh

echo "This is advance job"

echo "Job argument is $*"

./myprog $*

152

Page 153: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สงงานไปยงระบบจดล าดบงาน SGE ดวยค าสง qsub

• ตรวจสอบขอมลขาออก (output) และขอความผดพลาด (error)

[userl @frontend-0 myproject]$ qsub advancejob.sh

[userl @frontend-0 myproject]$ qsub advancejob.sh

Your job 3257 ("advancejob.sh") has been submitted

[userl @frontend-0 myproject]$ ls

advancejob.sh myprog myprog.c

[userl @frontend-0 myproject]$ qstat

[userl @frontend-0 myproject]$ cd ..

[userl @frontend-0 ~]$ ls advancejob*

advancejob.sh advancejob.sh.e3257 advancejob.sh.o3257

[userl @frontend-0 ~]$ cat advancejob.sh.o3257

This is advance job

Job argument is

[userl @frontend-0 ~]$ cat advancejob.sh.e3257

/opt/gridengine/default/spool/compute-0-1/job_scripts/3257: line 6:

./myprog: No such file or directory

[userl @frontend-0 ~]$ ไมเจอโปรแกรม myprog153

Page 154: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ปกตระบบจดล าดบงาน SGE จะท างานอยบนไดเรกทอร home ของแตละผใช

• ขอมลขาออก (output) และขอมลความผดพลาด (error) จะถกเกบไวทไดเรกทอร home

• เพอทจะประมวลผลงานตวอยางท 3 ได จ าเปนตองก าหนดตวเลอก(option)ของระบบจดล าดบงาน SGE ดงน – -cwd เปนการเปลยนไดเรกทอรทท างานของระบบจดล าดบงาน SGE จากเดมทเปนไดเรกทอร home ใหเปนไดเรกทอรปจจบนทใชค าสง qsub

– -o, -e เปนการระบชอไฟลทเปนขอมลขาออก (output) และขอมลความผดพลาด (error) ใหม

154

Page 155: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ลองสงงานไประบบจดล าดบงาน SGE ใหมอกครง พรอมกบตวเลอกทตงคาใหมดงน (โดยอารกวเมนต arg1 arg2 arg3 เปนการก าหนดคาตวแปรในโปรแกรม myprog)

• ผลลพธทไดเปนดงน

[userl@frontend-0 myproject]$ qsub -cwd -o ./advancejob.out

-e ./advancejob.err advancejob arg1 arg2 arg3

[userl@frontend-0 myproject]$ ls

advancejob.err advancejob.out advancejob.sh myprog myprog.c

[userl@frontend-0 myproject]$ cat advancejob.out

This is advance job

Job argument is arg1 arg2 arg3

arg 1 is arg1

[userl@frontend-0 myproject]$ cat advancejob.err

[userl@frontend-0 myproject]$

155

Page 156: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ระหวางทงานรอประมวลผล ผใชสามารถทจะหยดการประมวลผลชวคราว (suspend) เพอใหงานทส าคญกวาแตมาทหลงไดประมวลผลกอนได

• งานทหยดการประมวลผลชวคราวไดนน ตองเปนงานทก าลงรออยในควประมวลผล (มสถานะเปน qw)

156

Page 157: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• หยดการท างานชวคราวดวยค าสง “qhold <job id>”

• ใหงานกลบมาประมวลใหมอกครง ใชค าสง “qrls <job id>”

[user1@frontend-0 myproject]$ qhold 3259

modified hold of job 3259

[user1@frontend-0 myproject]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

-----------------------------------------------------------------------------

3259 0.00000 advancejob user1 hqw 10/22/2007 14:12:07 1

[user1@frontend-0 myproject]$

[user1@frontend-0 myproject]$ qrls 3259

[user1@frontend-0 myproject]$ qstat

job-ID prior name user state submit/start at queue slots ja-task-ID

-----------------------------------------------------------------------------

3259 0.00000 advancejob user1 qw 10/22/2007 14:12:07 1

[user1@frontend-0 myproject]$

157

Page 158: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• ในการเขยนสครปตงานสามารถทจะก าหนดตวเลอกของ SGE ลงไปในสครปตได ดวยการระบ “#$”

#!/bin/sh

#$ -cwd

#$ -j y

#$ -N advancejob

#$ -o ./myprog.out

echo "This is advance job"

echo "Job argument is $*"

./myprog $*

158

Page 159: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• mpirun จะรนโปรแกรมบนโพรเซสเซอรเฉพาะทระบไว ซงอาจจะเพมภาระใหโพรเซสเซอรนนมากเกนไป

• SGE สามารถจดการกบโปรแกรม MPI ซงจะชวยกระจายงานไปยงโพรเซสเซอรตางๆใหเหมาะสม

• ใชค าสง qsub –pe <parallel environment>

<number of processor> <script>

159

Page 160: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

• สรางสครปตงานดงน (greetings.sh)

• รนโปรแกรมผาน SGE ดวยค าสง qsub –pe mpich <np> <script>– qsub –pe mpich 5 greetings.sh (ใช 5 processor)– qsub –pe mpich 3-5 greetings.sh (ใช 3 - 5 processor)– qsub –pe mpich -5 greetings.sh (ใชไมเกน 5 processor)– qsub –pe mpich 5- greetings.sh (ใช 5 processor ขนไป)

#!/bin/bash

#$ -cwd

#$ -j y

export MPICH_HOME=/opt/mpich/gnu

export MPIAPP=greetings

$MPICH_HOME/bin/mpirun -np $NSLOTS -machinefile $TMPDIR/machines $MPIAPP

160

Page 161: Grid Computing in Bridging the Digital Divide, Improving ...–การเขียนโปรแกรมภาษา c บนลีนุกซ์ –แนะน าเทคโนโลยีระบบคลัสเตอร์

จบการน าเสนอ

161