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

Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

  • Upload
    others

  • View
    1

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

Supercomputing Contest 2009

1

Page 2: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

2

Page 3: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

3

Page 4: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

ลนกสเบองตน

4

Page 5: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ลนกสทางานแบบไคลเอนต/เซรฟเวอร– ผใชตองทาการลอคอนเพอเขาใชงาน

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

• ลนกสจาแนกผใชเปน 2 กลมหลกคอ– ผใชทวไป (User)

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

5

Page 6: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

• โปรแกรม Putty • สาหรบการใชเชลลผาน SSL (Secure Socket Layer) หรอ

เรยกวา SSH (Secure SHell)

• โปรแกรม WinSCP

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

6

Page 7: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

7

Page 8: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

(ตอ )

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

• สามารถ Save

Profile ดวยการ กาหนดชอ และ Save

8

Page 9: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• โปรแกรมจะ save SSH keys ใหทาการกด Yes– SSH Key เปนกระบวนการเพอยนยนตวตนของเครอง server เพอปองกนการใชงานเครองทไมถกตอง

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

9

Page 10: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

Hack ไดงาย (เปลยนไปใช sftp

secure ftp )

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

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

10

Page 11: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

1.

กรอก Host name

2.

กรอก User name

3.

กรอก Password

11

Page 12: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• ในการเชอมตอครงแรก โปรแกรมจะ ถามถงการยอมรบ Keys ของ

เซรฟเวอรวาเชอถอ และจดเกบ  keys หรอไม

12

Page 13: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

13

Page 14: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

แบบรโมท

• เชลล(Shell) ‐ คอสวนของลนกสจะใชสาหรบสงอนพทจากผใชไปยเคอรเนล

- ลนกสสวนใหญมกใช BASH Shell (Bourne Again  Shell) เปนเชลลปรยาย (Default shell)

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

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

14

Page 15: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

15

Page 16: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

ซง Commands จะปอนเขาสระบบผาน command prompt

ในระบบลนกส, จะตองคานงถงตวเลก-ตวใหญของตวอกษร

บนคอมมานดไลนเดยวกนสามารถเขยนคาสงไดมากกวาหนงคาสง โดยใช ; กนระหวางคาสง

16

Presenter�
Presentation Notes�
Explain the command notation for deep-understanding $ <command> <-option|-option> [<-option>]�
Page 17: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

Command Prompt Command (Optional) flags (Optional) arguments

17

Presenter�
Presentation Notes�
Explain the command notation for deep-understanding $ <command> <-option|-option> [<-option>]�
Page 18: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

18

Page 19: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ระบบไฟลบนวนโดวส–Windows XP, Windows VISTA

• Support FAT32, NTFS• File system of BSD Family OS

– FFS (Fast File System)

19

Page 20: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

20

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

ระบบไฟล NTFS, FAT ext2, ext3การอางองรทของพารทชน C:, D:, F:

แตละพารทชนเปนรท

แตละพารทชน

อยภายใตรทโหนด (“/”)

Page 21: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

– Linux File System• ทาหนาทจดเกบไฟลขอมล• ระบบไฟลทนยมใชกนมากในปจจบนคอ ระบบไฟล ext3

21

Page 22: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

22

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

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

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

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

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

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

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

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

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

Page 23: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

23

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

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

Page 24: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

ปลายทาง

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

24

Page 25: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

25

/root

Page 26: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

• คาสงแสดงไดเรกทอรขณะใชงาน และแสดงแบบสมบรณ คอ “pwd”

(print  working directory)โดยเสนทางแบบสมบรณนจะอางอง ตาแหนงตนไม

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

• คาสงเปลยนไดเรกทอร “cd”

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

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

~”• Relative pathname คอการอางองตาแหนงของไฟลหรอไดเรกทอร ทอย

บนไดเรกทอรขณะใชงาน ใช “./”

26

Page 27: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• “ TAB‐completion ” เราสามารถใชแทบ (ป ม TAB) เพอ แสดง (หรอเพมเตม) ชอคาสง หรอไฟล หรอไดเรกทอรใหสมบรณ 

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

27

Page 28: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

อานไดเทานน

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

28

Page 29: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

คอมพวเตอรอนสามารถเขยนไฟลลงในเครองได

29

Page 30: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

30

• ไฟลทขนตนดวย “.”

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

รายการดงกลาวคอไดเรกทอร

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

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

ซอนเอาไว

• คาสง ‘ls

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

Page 31: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง “pwd”

แสดงตาแหนงไดเรกทรอรปจจบน

คาสง “mkdir

directory”

คาสงสาหรบสราง ไดเรกทรอร

คาสง “rmdir

[-option] directory”

คาสงสาหรบลบไดเรกทรอร (เงอนไข ตองไมมไฟลขอมลอยในไดเรก ทรอรนน)

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

31

Page 32: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง “cp [-option] source_file

destination_file”

คาสงสาหรบทาสาเนาไฟล โดยจะทาสาเนาจากไฟลตนทาง ไปยง ไฟลปลายทางทกาหนด

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

-R, ทาการสรางสาเนาทกไฟล และทกไดเรกทรอร

-p, ทาการคงสทธของผใชไวเหมอนเดม

-i, แสดงพรอมพเพอยนยนในกรณเขยนไฟลทบ

32

Presenter�
Presentation Notes�
Introduce to scp(secure copy) for third party copy $ scp [<option>] <source> <distination>�
Page 33: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง “mv

[-option] source destination”

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

– -i, ใหแสดงการยนยนในกรณเขยนทบไฟลเดม

คาสง “rm

[-option] file

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

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

33

Page 34: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง “cd

[directory]”

คาสงสาหรบการเปลยนตาแหนงของไดเรกทรอร

ตวอยางเชน

cd

/usr/local

cd

..

cd

../../etc/

cd, กลบไปยงดฟอลไดเรกทรอร (user directory)

cd

~linux

34

Presenter�
Presentation Notes�
Most processes/programs can be run on command-based. Programmer can write the program on top of commands. ADD: 1. Create shortcut :: $ ln –s <name> <distinatoin>�
Page 35: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

*.doc

• ls

c???

• ls

file?.*

35

Page 36: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• คาสง “more [filename]”

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

• คาสง “less [filename]”

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

• คาสง “cat [filename]”

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

36

Presenter�
Presentation Notes�
Can we search specified text in file both less and more?�
Page 37: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง “head [-n] [filename]”

แสดงขอมลสวนตนของไฟลทกาหนด ดวยจานวนบรรทด n

คาสง “tail [-n] [filename]”

แสดงขอมลสวนทายของไฟลทกาหนด ดวยจานวนบรรทด n

มกใชดลอกไฟลขณะทโปรแกรมทางาน โดยใช ‘tail –f’

37

Presenter�
Presentation Notes�
Try… 1. head –help 2. tail –help 3. <command>; <command>; … <command>�
Page 38: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• คาสง “ls

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

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

38

Presenter�
Presentation Notes�
Try ‘ls –alRch’ ‘ls –help’ ‘man ls’ �
Page 39: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

40

• ใชคาสง “mount”

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

Page 41: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ใชคาสง umount

– umount

directory

– umount

device• ตวอยางเชน

–umount

/var

–umount

/hda1

42

Page 43: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ระบบจดเกบไวในไฟล /etc/fstab• ตวอยางขอมลภายในไฟล fstab

43

Page 44: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ระบบยนกสมการกาหนดสทธไว 3 กลมคอ– เจาของ (ผใช)

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

– บคคลทวไป

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

เรมสรางไฟล และมการปรบเปลยนสทธในกรณทมการแกไข และคงไว

จนกวาไฟลนนจะถกลบ

44

rwx rwx rwx

User Group Other

Page 45: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

ตวอยาง

rwx

= 7

rw-

= 6

r-x

= 5

rwxr-xr-x

= 755

rw-rw-rw-

= 666

rwxrwx---

= 770

46

Page 47: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• Tar เปนคาสงในการรวมไฟล หรอไดเรกทรอร ใหรวมเปนไฟล

เพยงไฟลเดยว โดยมขนาดรวมคงเดม (ไมมการบบอด)

• คาสง

– tar [option] outputfile.tar

Directory(file1 file2…) – option

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

51

Page 52: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ตวอยางการใชงาน– $ tar cvf test.tar /home/test

– $ tar tvf test.tar

– $ tar xvf test.tar

52

Page 53: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

54

Host AUser A

Host BUser B

Host CUser C

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

Page 55: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

– ‘

passwd

55

Page 56: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ลนกสมคาสงมากมาย• มคมอการใชงานแตละคาสง(Manual pages) มกถกตดตงมา

พรอมกบการตดตงลนกส

– จะใชคาสง “man” แลวตามดวยคาสงลนกสทตองการ– เชน “man ls”– คมอมหลายประเภท

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

‐‐help”• ลนกสยงมคมอหรอ Information Page เปนคมออยางงาย

– ใชคาสง “info” แลวตามดวยคาสงลนกสทตองการ

56

Page 57: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

ใชงานคอนขางยาก

– Emacs

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

– Nano

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

57

Page 58: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

58

Page 59: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

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

59

Page 60: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

60

Page 61: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

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

เซฟไฟลกอน

61

กด Ctrl+O และระบ

อไ ฟล

Page 62: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

62

Page 63: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

63

Page 64: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

ซอรสโคด

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

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

ถกตอง

ผานได

ถกตอง

ผานได

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

65

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

ตวแปลภาษา

Executable File

Executable File

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

ผลทไดผลทได

Page 66: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

เมอเขยนโปรแกรมเสรจ ผานการแปลภาษาแลวผลทไดกจะเปนไฟล

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

ไฟลโปรแกรมทไดนนเปนไฟลแบบเลขฐานสอง หรอไบนารไฟล (.exe)

เรยกวาเอกซควเทเบลไฟล(executable file) หรอ binary file

66

Page 67: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

mainfile.c

• โปรแกรมภาษา fortran ใชคาสง ,

gfortran หรอ ifort

– ifort

file.f90• โปรแกรมไบนารจะถกบนทกในไฟลชอ “a.out”

(By default)

หรอสามารถกาหนดชอโปรแกรมเพอใชในการรน(Executable  File)

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

./a.out

67

Presenter�
Presentation Notes�
What is ‘gcc’ ? <c/c++ compiler –g++, g90, gxxx… > What is benefit when you write a program on unix-like system or linux ? <strict, many tools, flexibility, more library, etc… >�
Page 68: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

คาเตอน

ตองระมดระวงในการเขยนโคด เนองจากเขยนผดพลาดไดงาย

สราง bugs สาหรบโปรแกรมไดงาย

แตเปนภาษาททรงประสทธภาพมาก

ทางานไดรวดเรวมาก

สามารถทางานระดบลางไดด

มคาสงทตรงไปตรงมา ไมซบซอน

68

Page 69: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

69

1 #include <stdio.h>23 /* My First C program which prints "Hello world" */45 int main(int argc, char * argv[])6 {7 printf("Hello world !\n");8 return 0;9 }

1 #include <stdio.h>23 /* My First C program which prints "Hello world" */45 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 ป

ดบล

อกของโปรแกรม ‘}’

1 ใช

ไ ลบราร

นพ

ท เอ

าต

ทมาตรฐาน

3 การทา คอมเมนต เพ

ออธ

บายโ

ปรแกรม

5 ฟ

งก

นหล

ก main เป

นฟ

งก

นแรกท

โ ปรแกรมเร

มทา งา

โดยส

งค

า 0 ให

บระบบ

6 เป

ดบล

อกของโปรแกรม ‘{’

7 ให

คอมพ

วเตอร

เข

ยน Hello world ออกทางจอภาพ

8 ส

งค

า 0 ให

บระบบ

9 ป

ดบล

อกของโปรแกรม ‘}’

ซอรสโคด

คาอธบาย

Presenter�
Presentation Notes�
1. Show the compilation process. 2. Inter-process communication.�
Page 70: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

70

1 #include <stdio.h>23 /* My First C program which prints "Hello world" */45 int main(int argc, char * argv[])6 {7 printf("Hello world !\n");8 return 0;9 }

1 #include <stdio.h>23 /* My First C program which prints "Hello world" */45 int main(int argc, char * argv[])6 {7 printf("Hello world !\n");8 return 0;9 }

ซอรสโคด

• ใช ‘ man stdio.h’• ใช ‘man 2 printf’• คมอทเกยวของกบการใชงานไลบรารตางๆมกอยทหมายเลข 2 และ 3

Presenter�
Presentation Notes�
1. Show the compilation process. 2. Inter-process communication.�
Page 71: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

บรรจคาสงเชนเดยวกบเชลลสครปต

ตรวจสอบการแกไขซอรสไฟล (up-to-date)

เปนเครองมอทจาเปนในการพฒนาโปรแกรมบนลนกสและยนกส

ไมตองทางานแบบลาดบเชนเดยวกบเชลลสครปต

ใชเลเบลเพออางองการทางาน

ใชคาสง ‘

make ’ เพอรนเมคไฟล

72

Page 73: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

73

• COMPILER=/usr/bin/gcc เปนการประกาศตวแปร

• อางองตวแปรดวย $(<variable_name>) เชน $(COMPILER)

• คาสง ‘

make ’ จะเรมทางานทเลเบลแรก ในทนคอ ‘make’

• สามารถขามไปทางาน ณ ตาแหนงเลเบลทตองการเชน ‘

$ make clean ’

• เลเบลมกตามดวยอนพทของคาสงทใชภายใตเลเบลนน และใช ‘

$< ’ เพออางอง

Page 74: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

test.c ดงน

74

Page 75: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

เขยน Makefile โดยใชคอมไพเลอรเปน gcc

กาหนดออปเจกตไฟลเปน test.o และรนโปรแกรมในชอ launch

สรางเลเบลสาหรบลบไฟลทเคยคอมไพล ดงน

75

Page 76: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

ทาการคอมไพลโปรแกรม Hello world โดยใช Makefile

Makefile ทสรางขนจะตองไมคอมไพล test.c ซา ดงรป

ทดลองใช ‘

make clean’ แลวคอมไพลใหม

76

Page 77: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

[somsak_sr@gcc

tmp]$ time ./hello_world

Hello world

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

tmp]$ 

[somsak_sr@gcc

tmp]$ time ./hello_world

Hello world

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

tmp]$ 

Real – เวลาโ ดยรวมท

งหมดท

ใช

ในการประมวลผลUser – เวลาท

ใช

ในการประมวลผล

System – เวลาท

ใช

ในการต

ดต

อก

บระบบ (เช

น การอ

านเข

ยนไ

ฟล

การ พ

มพ

อความ)

77

Page 78: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

78

Page 79: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• “การคานวณแกปญหาทมขนาดใหญและมความซบซอนมาก โดยใช

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

79

Page 80: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

หรอหนวยจดเกบขอมลขนาดหลายกกะไบต

• ความเรว (Speed): ปญหาทนกวทยาศาสตร หรอวศวกร ตองใช

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

80

Page 81: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

81

Page 82: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• ตวอยางปญหาทาทายคอมพวเตอร

– Weather Forecast

– Computer Animation

– Molecular simulation

– Bioinformatics

– etc

82

Page 83: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

Less fish …

More fish!

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

84

Page 85: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• 1960‐

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

• 1962

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

• 1975

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

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

85

Page 86: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• 1990 บรษทผผลตหลายรายเลกกจการไป• 1994 เบวลฟคลสเตอร (Beowolf

cluster) เกดขน

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

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

86

Page 87: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

88

Page 89: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

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

89

Page 90: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

Demise of Mainframes, Supercomputers, & MPPs

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

90

Page 91: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

Serial computing

Front‐endFront‐end

Compute 0Compute 0 Compute 1Compute 1 Compute nCompute n…RAMRAM

B CA

RAMRAM RAMRAM

D

91

Page 92: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

Parallel computing

Front‐end

Compute 0 Compute 1 Compute n…

A

RAM RAM RAM

A AA

A AA

92

Page 93: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ขนตอนใชงาน ระบบคลสเตอรมดงน

– Log‐in เขาใชงานระบบผานโปรแกรม  Putty

– เขยนโปรแกรม

– คอมไพลเปนไบนารไฟล

– สงใหโปรแกรมทางาน

– ตรวจสอบผล

– ตดตามการทางานของโปรแกรม

93

Page 94: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

– SUN Grid Engine– PBS/Torque, LSF, Condor, Moab

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

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

94

Page 95: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

95

Page 96: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

96

Page 97: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• โดยทวไปจะใชวธการ massage passing– ลกษณะของ message passing คอ

• การใชหนวยประมวลผลพรอมๆกนกบงานชนเดยวกน• สามารถแลกเปลยนขอมลขณะประมวลผล

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

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

97

Page 98: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

– คอมไพลโปรแกรมดวย คอมไพเลอรของโปรแกรมแบบขนาน– พฒนาโปรแกรมดวยภาษาพเศษสาหรบโปรแกรมแบบขนาน เชน 

OpenMP, High performance fortan

(HPF) เปนตน

98

Page 99: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

ออกมาแลวจะไมมสวนทเกยวของกน

99

Page 100: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

ปกตทใชกน

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

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

105

Page 106: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• MPI คอ Message Passing Interface• เปนไลบรารสาหรบการตดตอสอสารระหวางหนวยประมวลผลและการ

แลกเปลยนขอมล

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

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

– OpenMPI

106

Page 107: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ขนตอนการใชงาน mpi– เขยนโปรแกรมดวยไลบราร mpi

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

mpif77 mpi_prog.f

mpicc mpi_prog.c

mpif90 mpi_prof.f90

mpiCC mpi_prof.C

107

Page 108: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

• รนโปรแกรม

• ผลการรนโปรแกรมstartstartstartstartMPI_Init OKProcess 0 is waiting for greeting messages at pluto.cp.eng.chula.ac.thGreetings 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 OKMPI_Init OKMPI_Init OK

mpicc –o greetings greetings.c

mpirun –np 4 greetings

111

Page 112: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

– machines

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

compute-0-0compute-0-1compute-0-2

mpirun –np 6 -machinefile machines greetings

112

Page 113: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ผลลพธทได[user1@pluto mpi]$ mpirun -np 6 -machinefile machines greetingsstartstartstartstartstartstartMPI_Init OKProcess 0 is waiting for greeting messages at pluto.cp.eng.chula.ac.thGreetings 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 OKMPI_Init OKMPI_Init OKMPI_Init OKMPI_Init OK

เปนเครองทระบใน machine file

ตามลาดบ

113

Page 114: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

114

Page 115: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• Group และ Communicator

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

115

1 2

3 4MPI_COMM_WORLD0

Page 116: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

– ตวแปรพนฐาน เชน MPI_INT (Integer)  MPI_DOUBLE_PRECISION (double)

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

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

116

Page 117: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ในการรบสง message จะสามารกาหนดสงทเรยกวา tag เพอใช

ในการแยกประเภทของ message แตละสวนได

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

117

Page 118: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• การตดตอแบบจดตอจด (point‐to‐point)– เปนการสง message ระหวางโปรเซส 2 โปรเซส

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

หลายจด การรบจากหลายจดมาจดเดยว การรบและกระจายขอมล เปนตน

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

พรอมๆกบการรบสงขอมลได

118

Page 119: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

MPI_Send

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

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

• ปลายทางทจะสง จะระบโดย dest

(เปน rank ของปลายทางทจะ สงไป)

• tag และ comm ใชระบ tag และกลมทจะสงขอมล

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

121

Page 122: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

126

Page 127: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

127

4111

02

π=

+∫ dxx

Page 128: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

• โปรเซสแตละโปรเซสจะคานวณหาพนทในแตละสวน

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

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

128

Page 129: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

A B

X

Page 132: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

137

Page 138: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

Sun Grid Engine (SGE)

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

หลากหลายชนด อาท compute  server, data collector, 

visualization

terminal..

• SGE คอ โปรแกรมบรหารจดการ ทรพยากร

– รองรบการสงงานจากผใช

– จดลาดบการทางานตามเงอนไขทผแล กาหนด

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

138

Page 139: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

ผดแลเครองกาหนดไว

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

139

Page 140: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

คาสง คาอธบาย

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

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

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

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

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

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

140

Page 141: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

งานหนงอาจจะเรยกใชมากกวา 1 โปรแกรม

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

#!/bin/shdateecho “Hello world”

141

Page 142: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• ขนตอนการเขยนสครปตงานเพอสงไปยงระบบจดลาดบงาน SGE– เปดโปรแกรมเขยนขอความ เชน vi, nano, pico เปนตน– เขยนสครปตงานตามทตองการ– บนทกขอมลใหนามสกลเปน .sh หรอ .job– สงงานไประบบจดลาดบงาน SGE ดวยคาสง qsub– ตรวจสอบสถานะการทางานดวยคาสง qstat

142

Page 143: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• บนทก

#!/bin/shdateecho “Hello world”

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

1. Esc

2. Shift + :wq

3. enter

143

Page 144: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

ใชคาสง qdel พรอม Job ID

[user1@frontend-0 ~]$ qsub simplejob.shYour job 3241 (“simplejob.sh") has been submitted[user1@frontend-0 ~]$

144

Page 145: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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.o3249Mon Oct 22 13:18:55 ICT 2007Hello world[user1@frontend-0 ~]$ cat simplejob.sh.e3249[user1@frontend-0 ~]$

145

Page 146: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• บนทก

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

#!/bin/shdateecho “sleep 10000 seconds”sleep 10000

146

Page 147: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

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

[userl @frontend-0 ~]$ qsub simplejob2.shYour job 3250 ("simplejob2.sh") has been submitted[userl @frontend-0 ~]$ qstatjob-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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

[userl @frontend-0 ~]$ qstatjob-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 ~]$ qstatjob-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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

ขอมล คาอธบาย

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

name ชองาน

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

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

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

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

149

Page 150: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

• ยกเลกการประมวลผลงานดวยคาสง qdel

<job id>[userl @frontend-0 ~]$ qdel 3255userl has registered the job 3255 for deletion[userl @frontend-0 ~]$

[userl @frontend-0 ~]$ qstatjob-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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

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

[userl @frontend-0 myproject]$ qsub advancejob.shYour job 3257 ("advancejob.sh") has been submitted[userl @frontend-0 myproject]$ lsadvancejob.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.o3257This is advance jobJob 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 ~]$ ไมเจอโปรแกรม myprog

153

Page 154: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• เพอทจะประมวลผลงานตวอยางท 3 ได จาเปนตองกาหนดตวเลอก  (option)ของระบบจดลาดบงาน SGE ดงน

– ‐cwd เปนการเปลยนไดเรกทอรททางานของระบบจดลาดบงาน SGE จาก เดมทเปนไดเรกทอร home ใหเปนไดเรกทอรปจจบนทใชคาสง qsub

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

154

Page 155: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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]$ lsadvancejob.err advancejob.out advancejob.sh myprog myprog.c[userl@frontend-0 myproject]$ cat advancejob.outThis is advance jobJob argument is arg1 arg2 arg3arg 1 is arg1[userl@frontend-0 myproject]$ cat advancejob.err[userl@frontend-0 myproject]$

155

Page 156: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

ประมวลผลกอนได

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

156

Page 157: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

• หยดการทางานชวคราวดวยคาสง  “qhold

<job id>”

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

<job id>”

[user1@frontend-0 myproject]$ qhold 3259modified hold of job 3259[user1@frontend-0 myproject]$ qstatjob-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]$ qstatjob-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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

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

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

• ใชคาสง qsub

–pe

<parallel environment>   <number of processor>  <script>

159

Page 160: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา 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/gnuexport MPIAPP=greetings

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

160

Page 161: Supercomputing Contest 2009 - Kasetsart University · – การเขียนโปรแกรมภาษา c บนลีกซุน์ – แนะนําเทคโนโลย

จบการนาเสนอ

161