แสดงบทความที่มีป้ายกำกับ BOINC แสดงบทความทั้งหมด
แสดงบทความที่มีป้ายกำกับ BOINC แสดงบทความทั้งหมด

วันจันทร์ที่ 12 กันยายน พ.ศ. 2554

BOINC on Ubuntu

เรื่องมีอยู่ว่าผมมี Desktop PC เครื่องเก่าอายุกว่า 7 ปีมาแล้วที่ตอนนี้จะเอามาเล่นเกมส์อะไรก็ไม่ได้ (ซื้อคอมพ์มาไว้เล่นเกมส์จริงๆนะเนี่ย) สเปคเครื่องก็แค่ Pentium4 2.66GHz, Ram 1 GB, HDD 40 GB ถ้าลง Microsoft Windows ก็คงเปลืองพื้นที่โดยใช้เหตุ แถมแพงอีกต่างหาก ราคาเกือบๆ 5 พันบาท จะทิ้งก็เสียดายเพราะมันยังทำงานได้อยู่ จึงเป็นที่มาของการลองลง OS ฟรีที่ตั้งใจจะลองเล่นนานแล้ว นั่นคือ Linux และเอาไว้ให้มันคำนวนงานทางวิทยาศาสตร์ของ BOINC


เริ่มแรกก็โมเครื่องให้เหลือแค่ที่จำเป็นด้วยการดึงการ์ดจอออก เพราะมี on-board อยู่แล้ว จากนั้นก็เปลี่ยนถ่าน BIOS แล้วก็ใช้อีกเครื่องหนึ่งโหลด Ubuntu มา เข้าไปในเวบจะมี 2 แบบให้เลือกคือ Desktop กับ Server ผมเลือกที่จะใช้ตัว Server เผื่อว่าจะลองเล่นอย่างอื่นเช่น Mail server หรือ Database 


หลังจาก Download ไฟล์ Ubuntu ที่มาเป็น .ISO เสร็จเป็นที่เรียบร้อยแล้วก็ทำการไรท์ลงแผ่น CD สำหรับนำไปติดตั้ง โดยเลือกให้เครื่องทำการบูทจากแผ่น CD ขั้นตอนการติดตั้งไม่ได้ยากอะไร แทบไม่ต่างจากวินโดวส์ ไม่นานนัก เจ้าเครื่องเก่า Pentium4 ตัวนี้ก็มี OS พร้อมใช้งาน ยอมรับเลยว่าติดตั้งได้เร็วมาก ไม่ต้องคอยจนเบื่อเหมือนวินโดวส์


แต่หลังจากนี้จะเป็นอะไรที่ยากแล้ว เพราะครั้งสุดท้ายที่เล่น Command Line OS ก็ตอนเป็น MS-DOS สมัย... 16 ปีก่อน แถมคำสั่งยังไม่เหมือนกันอีก ไม่รู้คำสั่งอะไรเกี่ยวกับ UNIX เลย เป้าหมายของเราคือติดตั้ง BOINC ดังนั้นเจ้าเครื่องนี้ต้องติดต่อกับ Server ของ BOINC ได้ผ่าน Internet ในตอนติดตั้งเราสามารถเซ็ตค่าเน็ตเวิร์คได้ตั้งแต่ต้น แต่พอดีผมดันข้ามขั้นตอนนี้ไปก็เลยต้องมาตามเซ็ตทีหลัง โชคดีได้คุณเพื่อนที่แสนดีช่วยหา link วิธีเซตให้ http://www.ubuntugeek.com/ubuntu-networking-configuration-using-command-line.html เราก็ทำตามอย่างว่าง่าย พิมพ์คำสั่งตามที่ในเวบบอก

sudo vi /etc/network/interfaces

*(sudo ที่นำหน้า คือคำสั่งที่แสดงว่าเรามีสิทธิ์ใช้ระบบ ย่อมาจาก "substitute user do")
หน้าจอก็เปลี่ยนไปแสดงข้อมูลในไฟล์ เราต้องการให้ router แจก IP Address เองก็สั่ง Auto ไปเลย


auto eth0
iface eth0 inet dhcp



หรือถ้าจะกำหนดเองก็ไม่ยาก


auto eth0
iface eth0 inet static
address 192.168.1.4
gateway 192.168.1.1
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.1.255



ตัวอย่างข้างบนกำหนดให้ IP address เป็น 192.168.1.4 ไม่ยากเท่าไหร่


แต่ที่ยากคือ เจ้าโปรแกรม VI ที่เราใช้แก้ไขข้อความเนี่ย เราจะออก จะเซฟไงเนี่ย ก็เลยต้องเปิดเวบหาอีก http://www.washington.edu/computing/unix/vi.html สรุปที่ใช้เลยก็คือ 3 คำสั่งนี้

ZZ บันทึกไฟล์และออกจากโปรแกรม
:w บันทึกไฟล์ :q! ออกจากโปรแกรมโดยไม่บันทึก

แล้วเราก็ต้องสั่งให้ Ubuntu เริ่มใช้ค่าใหม่ที่เราเพิ่งเขียนไปด้วยคำสั่งนี้

sudo /etc/init.d/networking restart


ตอนนี้ Ubuntu ก็เข้าอินเตอร์เน็ตได้แล้ว ต่อไปคือการติดตั้งโปรแกรม BOINC ผมก็ไปใฃ้อีกเครื่องทำการ Download ไฟล์ติดตั้งซึ่งนามสกุลเป็น .sh แล้วก็ก๊อปปี้ใส่ USB Flash Drive แต่เมื่อเสียบ USB Flash Drive ไปแล้ว Ubuntu จะยังใช้งานไดรฟ์ไม่ได้ทันที ต้องมีคำสั่งใช้ไดร์ฟก่อน นั่นคือการ mount
https://help.ubuntu.com/community/Mount/USB

sudo mkdir /media/external

sudo mount -t vfat /dev/sdb1 /media/external

ก่อนอื่นเราต้องสร้าง Directory ขึ้นมาใหม่ก่อนเพื่อเวลาเราทำการ mount แล้ว USB Flash Drive ก็จะเสมือนเป็น Directory นึงในเครื่อง ตัว /dev/sdb1 คือ USB Flash Drive ที่เราเพิ่งเสียบเข้าไปนั่นเอง อยากรู้ว่ามี Drive อะไรในเครื่องบ้าง ก็ใช้คำสั่งนี้ครับ

sudo fdisk -l

มาถึงตรงนี้ถึงนึกได้ว่า คำสั่งพื้นฐาน Unix มีอะไรบ้างเนี่ย http://mally.stanford.edu/~sr/computing/basic-unix.html ที่นี่รวมไว้ให้หมดล่ะ

ที่ใช้อยู่หลักๆก็คงเป็น
 ls -l                       ดูรายชื่อไฟล์ (เหมือน dir ของ MS-DOS)
mkdir dirname      สร้างไดเรคทอรี่ใหม่
cd dirname           เข้าไดเรคทอรี่
cp file1 file2         คัดลอกไฟล์1 ไปยังไฟล์2 (เหมือน copy ของ MS-DOS)

หลังจากก๊อบไฟล์นามสกุล .sh ของ BOINC มาแล้วก็ทำการติดตั้ง โดยใช้คำสั่ง sh ตามด้วยชื่อไฟล์

sudo sh boincx86.sh

แค่นี้เป็นอันเสร็จ... หรือเปล่า อ้าว ผมรันโปรแกรม BOINC ไม่ขึ้น แต่เห็นไดเรคทอรี่ของ BOINC แล้วนะ ลองเข้าไปดูในเวบเห็นมีคำสั่งแปลกๆ เกี่ยวกับ install เลยลองดู

http://boinc.berkeley.edu/wiki/Installing_BOINC_on_Ubuntu

sudo aptitude install boinc-client

โดนฟ้องว่าหาไม่เจอ แล้วพอลองสั่ง sudo run_client start ก็โดนฟ้องว่าขาด library สุดท้ายเพิ่งมาฉลาดว่า จริงๆแล้วไม่ต้องไป Download ไฟล์ .sh มาตั้งแต่ต้น ไม่ต้อง copy ใส่ Flash Drive มา mount ให้ยุ่งยาก แค่เพียงสั่งให้ Ubuntu ติดตั้งผ่าน internet ได้เลย

sudo apt-get install boinc-client

Ubuntu ก็จะทำการ Download มาติดตั้งเอง เรียบร้อย ง่ายดาย
เมื่อมี BOINC Client พร้อมที่จะทำงานแล้ว เราก็ต้องเรียกให้โปรแกรมขึ้นมาทำงาน

sudo /BOINC/run_client start

อ้าว แล้วจะเลือกโปรเจคกับเข้า account เรายังไงล่ะเนี่ย ลองเปิดค้นดูเจอหน้านี้เข้า
http://boinc.berkeley.edu/wiki/Boinccmd_tool พารามิเตอร์เยอะเหมือนกันนะเนี่ย

boinccmd --lookup_account URL email password 

เราจะได้ account key ออกมาเพื่อนำไป attach กับโปรเจค

boinccmd --project_attach URL account_key

เป็นอันเสร็จสิ้น BOINC ก็จะโหลดไฟล์คำนวนของโปรเจคกับไฟล์งานมาทำงานของมันเอง ลองตรวจดูความคืบหน้าได้โดย

boinccmd --get_state

และแล้วเครื่องเก่าของผมก็ได้ใช้เพื่อคำนวณงานด้านวิทยาศาสตร์ ไม่ได้เป็นแค่กองเศษเหล็กอีกต่อไป


วันอาทิตย์ที่ 3 เมษายน พ.ศ. 2554

ช่วยงานวิจัย

สมัยเรียนประถมศึกษา วิชาสร้างเสริมประสบการณ์ชีวิต (สปช.)ในสมัยนั้นทำหลักสูตรให้น่าสนใจมาก โดยเฉพาะการทดลองทางวิทยาศาสตร์ เรากับเพื่อนเตรียมการทดลองและทำการทดลองที่เข้าใจง่ายบ้าง ทำไปทั้งๆที่คาดผลลัพท์ได้ล่วงหน้าแล้วบ้าง แต่ก็สนุกสนานและทำให้เกิดความรู้สึกอยากเรียนรู้วิทยาศาสตร์มากขึ้น จินตนการว่าโตขึ้นจะเป็นนักวิทยาศาสตร์สติเฟื่องอย่างดร. เอ็มเม็ตต์ บราวน์ในภาพยนตร์เรื่องเจาะเวลาหาอดีต (Back to the future ปี 1985 แสดงโดยคริสโตเฟอร์ ลอยด์) เมื่อเรียนสูงขึ้นก็พบว่าไม่ใช่ทุกคนที่จะเหมาะกับการทดลองและงานวิจัยทางวิทยาศาสตร์ ในขณะที่นักวิจัยเองก็ได้พบกับปัญหาเมื่อการค้นพบสิ่งใหม่ๆ สมมติฐานและแบบจำลองต้องใช้การคำนวณที่ยาวนานเกินกว่าช่วงอายุของมนุษย์ เทคโนโลยีคอมพิวเตอร์และอินเตอร์เน็ตจึงได้เข้ามามีส่วนช่วยในการคำนวณสิ่งเหล่านั้นแทนมนุษย์ โดยเฉพาะอย่างยิ่งในปัจจุบันมีคอมพิวเตอร์มากกว่าพันล้านเครื่อง ถ้าใช้ทรัพยากรการคำนวณอันมหาศาลเหล่านี้จะสามารถย่นระยะเวลาในการทำงานวิจัยลงไปได้อย่างมาก

ถึงตอนนี้แม้เราจะไม่ได้จบด้านวิทยาศาสตร์สาขาใดๆมาก็ตาม เราก็สามารถมีส่วนร่วมในงานวิจัยที่จะเปลี่ยนแปลงโลกนี้ได้กับโปรแกรม Berkeley Open Infrastructure for Network Computing (BOINC) ของมหาวิทยาลัยแคลิฟอร์เนีย ในขณะที่พวกเราเปิดคอมพิวเตอร์เพื่อใช้งานทั่วๆไปเช่นเขียนรายงาน ท่องเวบ หรือแม้แต่ดูภาพยนตร์จากดีวีดี คอมพิวเตอร์ของพวกเราจะไม่ได้ใช้ความสามารถของมันเต็ม 100% สามารถเปิดดูได้จาก Task Manager ถ้าคุณใช้ Windows เพียงกด Ctrl + Alt + Del แล้วเลือก Task Manager (แตกต่างกันไปใน Windows แต่ละรุ่น และไม่แนะนำให้กดถ้าคุณยังใช้ MS-DOS อยู่ 555) โปรแกรม BOINC จะใช้ทรัพยากรที่เหลือของคอมพิวเตอร์ในการคำนวณงานวิจัยต่างๆที่คุณสามารถเลือกได้เองว่าจะวิจัยด้านใดตามความสนใจของคุณ และคุณจะได้รับเครดิตจากการคำนวณโดยเครื่องคอมพิวเตอร์ของคุณ


Task Manager จะเห็นว่าจากการใช้งานคอมพิวเตอร์โดยทั่วไป จะมีการใช้ CPU ต่ำมากๆ


ในตอนแรกการอาสาสมัครเพื่อการคำนวณ (Volunteer Computing) มีเพียงโปรเจคเดียวคือ SETI@Home (Search for Extra-Terrestrial Intelligence at home) ซึ่งเป็นโครงการที่วิเคราะห์คลื่นวิทยุเพื่อค้นหาการส่งสัญญาณจากอารยธรรมที่มีปัญญานอกโลก แต่ก็ได้มีการโกงการส่งผลการคำนวณกันขึ้น BOINC จึงถูกพัฒนามาเพื่อป้องการการโกงเครดิตของโปรเจคและเพิ่มระดับการรักษาความปลอดภัยให้กับโปรเจค ในปัจจุบันมีโปรเจคที่ร่วมกับโปรแกรม BOINC มากกว่า 30 โปรเจค ตั้งแต่งานวิจัยทางการแพทย์ เคมี การวิจัยสภาพอากาศ ไปจนถึงเกมหมากรุก!


โปรเจคที่น่าสนใจที่อยากแนะนำมีอยู่ 3 โครงการได้แก่
  1. Rosetta@Home ของมหาวิทยาลัยวอชิงตัน เป็นงานวิจัยโครงสร้าง 3 มิติของโปรตีนเพื่อหาทางรักษาโรคของมนุษย์
  2. World community grid ของ IBM โปรเจคนี้จะรวมงานวิจัยย่อยๆไว้อีกหลายโครงการเช่น การค้นหายาแก้ไข้เลือดออก การรักษามะเร็งในเด็ก รวมถึงการวิจัยพลังงานสะอาด โดยเราสามารถเลือกได้ว่าจะให้คอมพิวเตอร์ของเราวิจัยงานใดบ้าง 
  3. Climate Prediction ของมหาวิทยาลัยอ็อกซ์ฟอร์ด ที่คำนวณแบบจำลองสภาพอากาศของโลกในอีก 100 ปีข้างหน้า

Climate Prediction application

การติดตั้งโปรแกรม BOINC ก็ไม่ได้ซับซ้อนวุ่นวายเลยเพียงแค่ดาวน์โหลดตัวติดตั้งจากเวบไซต์ BOINC  แล้วทำการติดตั้งโดยเราสามารถเลือกให้ BOINC เป็น Screensaver ได้ด้วย โปรแกรม BOINC ไม่จำเป็นต้องเชื่อมต่อกับอินเตอร์เน็ตตลอดเวลาเพราะเมื่อรับข้อมูลมาทำการวิเคราะห์และส่งผลการคำนวณแล้ว BOINC ก็ไม่ได้ใช้ช่องสัญญาณเชื่อมต่ออินเตอร์เน็ตเลย ตัวโปรแกรม BOINC นั้นยังถูกพัฒนาไปจนสามารถดึงเอาพลังการคำนวณจาก Graphics Processing Unit (GPU) มาใช้ได้แล้วแต่การ์ดจอของคุณต้องเป็นรุ่นใหม่ที่รองรับความสามารถด้านนี้ด้วย (CUDA) ซึ่งการคำนวณจะเร็วกว่าการคำนวณโดย CPU เพียงอย่างเดียวตั้งแต่ 2 - 10 เท่า โดยปกติแล้ว BOINC จะทำงานโดยไม่รบกวนการใช้ CPU ปกติของเรา แต่มีข้อแนะนำอยู่สามเรื่อง คือ 
  • ถ้าจะเล่นเกมส์ที่ใช้ความสามารถของเครื่องหนักเช่นเกมส์ 3 มิติแล้วละก็ควรปิด BOINC ก่อนเล่นเกมส์ 
  • ข้อมูลของโปรเจค Climate Prediction ไฟล์จะใหญ่มากเนื่องจากเป็นโมเดลของสภาพอากาศทั้งโลก (ประมาณ 500 MB เทียบกับโครงการอื่นที่ประมาณ 20 - 100 MB)
  • การใช้ไฟฟ้าที่เพิ่มมากขึ้น เพราะเมื่อ CPU ทำงานมากขึ้น จะมีการใช้ไฟฟ้ามากขึ้นซึ่งจะทำให้สิ้นเปลืองพลังงานต่างกับขณะที่ไม่ได้ใช้งาน
Computer state (24 hrs/day)Typical power usageEnergy per monthCost per month (USA)Cost per month (Europe)
Off0 watts0 kWh$0€0
Idle100 watts73 kWh$5.84€14,60
Active150 watts110 kWh$8.80€22,00

ที่มา http://boinc.berkeley.edu/wiki/Heat_and_energy_considerations

ประเทศที่ีมีผู้เข้าร่วมโครงการและส่งผลการคำนวณมากที่สุดคือสหรัฐอเมริกา ครองอันดับ 1 ในทุกโครงการ ในส่วนของประเทศไทยเองมีผู้เข้าร่วมและส่งผลการคำนวณอยู่ในอันดับที่ 52 จำนวนสมาชิก 295 คนจาก Rosetta อันดับที่ 47 จำนวนสมาชิก 684 คนจาก World Community Grid และอันดับที่ 51 จำนวนสมาชิก 303 คนจาก Climate Prediction

ถ้าคุณยังใข้คอมพิวเตอร์ของคุณไม่เต็มความสามารถที่มันมีแล้ว ลองสมัครเข้าร่วมโครงการกับ BOINC ดูเพื่อมีส่วนร่วมในงานวิจัยทางวิทยาศาสตร์ ไม่แน่ว่าคอมพิวเตอร์ของคุณอาจเป็นเครื่องที่ช่วยให้ค้นพบอารยธรรมต่างดาว หรือ ยารักษาโรคที่ปัจจุบันยังไม่มีก็ได้