Midterm.... Dirichet มันเป็นยังงาย?
posted on 18 Dec 2008 18:07 by aniefefalus in CPEKMUTT
อ๊าก
ตารางสอบออกแล้ว แอ๊ว แอ๊ว แอ๊ว แอ๊ว ........................
ทำไม... พาราเรลสอบวันเดียวกับOS วะคะ -*- ช่างสร้างสรรค์ คนที่รู้จัก2อย่างนี้จะรู้ว่ามันนรกมากมาย
แบบวิชามันเหมือนจะเกี่ยวเนื่องกันแบบกลายๆ แต่พาราเรลไม่ลึกขนาด OS เพราะง้น มันก็จำแทนกันไม่ได้อยู่ดี ก็ต้องจำๆไป แค่ตอนนี้เรายังไม่ได้เริ่มจำ กร๊าก
ถ้าสอบวันเดียวกับยุ่นเราจะไม่บ่นเลยนะ (คราวนี้ด่าถึงสววรค์ชั้นอธิการ ท่องอ้วกแตกอ้วกแตน)
งั้นก็วันจันทร์หน้าแล้วดิ? ทำไมเรายังทำตัวชิวอยู่เลยหว่า 555
แถมยังง่วงๆปรือๆเหมือนคนขี้เซาเมาขี้ตา เพราะนอนน้อยมาหลายคืน ส่งงาน.... ยุ่น OS(ถึงจะไม่ค่อยได้ช่วยเพื่อนทำก็เถอะ เอิ้ก รู้สึกผิดT^T ) พาราเรลที่ทำโค้ดเผาๆ3คืนเสร็จ ออกเน่าๆแต่ก็ใช้ได้ล่ะวะ
เดี๋ยวจะบรรยายตอนส่งให้ฟัง 555 ไม่อยากฟังก็ต้องฟัง บังคับ *-*
เดี๋ยวชี้เเจงงานก่อน
พาราเรลคือการประมวลผลแบบขนาน จะทำให้การวิเคราะห์คำสั่งโปรแกรมได้เร็วขึ้นเพราะมีจำนวนprocessorหลายตัว ให้แบ่งงานกันทำแล้วก็ส่งข้อมูลที่ได้จากการคำนวณมาที่เครื่อง root เครื่องต้นทางที่ส่งงานทั้งหลายให้กับเครื่องลูกๆทั้งหลาย อะไรเเบบเนี้ย
แล้วการบ้านอันที่คุณพี่แก๊ส อาจารย์ที่สอนวิชานี้สั่งคือ โปรแกรม dirichet (ดิริเข้)
คือการส่งผ่านความร้อนผ่านแผ่นเหล็กทางขอบ โดยที่จะให้ความร้อนตรงขอบสม่ำเสมอ แล้วก็ค่อยๆส่งความร้อนเข้าทางขอบจนถึงตรงกลาง ส่งแต่ละครั้งก็คือจำนวนรอบเวลา ยิ่งมาก ความร้อนก็จะยิ่งแผเข้าตรงกลางมากเท่าขึ้น จนกระทั่งทั้งแผ่นร้อนเท่ากันหมด
ตัวอย่าง(ไม่ดิ จริงๆก็ทำแบบนี้แล่ะ )
matrix 5x7
255 255 255 255 255 255 255
255 0 0 0 0 0 255
255 0 0 0 0 0 255
255 0 0 0 0 0 255
255 255 255 255 255 255 255
ให้ 255 คือค่าความร้อนสูงสุดส่งจากขอบเข้าไป เพราะฉะนั้นเมื่อค่าถึง255แล้วค่าก็จะไม่เปลี่ยน เพราะมันร้อนที่สุดแล้ว ยูโนว์?
แล้วก็คิดแบบนี้ค่ะ สมมติเราจะเอาจุดไหนหาค่าความร้อน เราก็เอาจุดรอบๆตัวมันอ่ะ บวกกัน แล้วหาร8
255 255 255
255 0 0
255 0 0 ตัวหนาแดงคือจุดที่เราต้องการคิด
ก็จะได้เป็น (255*5)/8 ถูกมั้ย จะได้ 159
255 255 255
255 159 0
255 0 0
แบบนี แล้วตัวต่อไปก็คิดแบบนี้ต่อไปเรื่อยๆ(คือจุดต่อจาก159อ่ะให้คิอว่าไอ้159เป็น0นะ เพราะรอบแรกอยู่ให้คิอแต่ละตัวเวลาเท่ากัน )
--- โวยวาย เมื่อกี๊พิมพ์จะเสร็จแล้ว เน็ทตัด เลยหายเกลี้ยงเลย T[]T ---
รอบแรก
255 255 255 255 255 255 255
255 159 95 95 95 159 255
255 95 0 0 0 95 255
255 159 95 95 95 159 255
255 255 255 255 255 255 255
รอบที่สอง
255 255 255 255 255 255 255
255 183 139 119 139 183 255
255 159 99 71 99 159 255
255 183 139 119 139 183 255
255 255 255 255 255 255 255
อะไรแบบเนี้ยยยยยยย ก็จำนวนรอบมากค่าก็จะยิ่งเข้าใกล้ 255 มากขึ้น
นี่เอาโปรแกรมที่ทำมาคิดนะ ขี้เกียจคิดเอง ฮ่าๆ
มันฟังดูเหมือนง่ายนะ แต่ว่ามันยากตรงที่อัลกอริทึ่ม ว่าเราจะส่งข้อมูลไปที่processor อื่นๆไปทำอะไรบ้าง แล้วก็ส่งข้อมูลกลับมา แล้วก็ไอ้จำนวนแถวกับจำนวนหลักจะไม่ fixed ต่อให้เป็นกี่แถวกี่หลักก็ยังต้องคิดได้อยู่
ถ้ารันในจำนวน process ที่พี่เค้าจะเล่นไม่ได้ก็เจ๊ง
ถ้าคำนวณในแต่ละprocess ถูก แต่ส่งค่ามาผิดก็เจ๊ง
ถ้าส่งมาได้แต่รวมค่าทั้งหมดที่เครื่อง root ผิด ก็เจ๊ง
ส่งค่าจากroot มาผิด ก็ เจ๊ง
แสดงผลทั้งหมดออกมาเป็นอันเดียวไม่ได้ ก็
เจ๊ง
เอวัง ประการฉะนี้ TvT
แล้ววันอังคารที่ผ่านมาก็ถึงกำหนดส่งค่ะพี่น้อง ไอ้โปรแกรมที่ทำเรานอยมาหลายวัน บ้านช่องไม่กลับอยู่เผางานกะฝูงเพื่อน ไฟลนตูดกันเลยทีเดียว กว๊าก ก็งมกับการส่งข้อมูลแบบคอลัมภ์ ตั้งวันนึงแถมคิดผิดอีกตะหาก -*- โคดเวงเลย
วิธีส่งงานของพี่แก๊ส อาจารย์ที่สอนวิชานี้คือจะให้ส่งกับตัวพี่แก๊สแล้วก็กับพี่เบลล์(TA) แล้วพี่เค้าก็โยน input file มาเป็นแบบนี้
มี 307 แถว ! 521 หลัก ! วนทั้งหมด 500 รอบ
หน้าตาก็เหมือนกับที่เรายกตัวอย่างไปอ่ะ แต่หน้าตาน่ากลั๊วน่ากลัวกว่านี้หลายร้อยล้านปีวองโกเล่
เอาวะ หน้าตายังดูหล่อเหลามากกว่าไอ้อันที่พี่โยนมาให้ลองเทสต์โปรแกรมตัวเอง อันที่โยนมาอันนั้นอ่ะ นรกสันขวานมากมาย...
คือแบบ ..... ไม่เคยเห็นเท็กซ์ไฟล์ใหญ่ขนาด 19.5 MB มาก่อน....
แม่ง ก็มีแค่เลข 0 กับเลข 255 เท่านั้นอ่ะนะ ปาไปสิบเก้าเมก เปิดไฟล์ทีนี่โหลดเป็นชาติ
อ่ะนะ ก็เล่นมีหมื่นแถว กับอีกพันกว่าหลัก แหม่ จิ๊บๆ
แล้วเวลาลองรันนี่ก็ ให้ใช้วนเป็นหมื่นรอบ ให้จั๊กจี้เล่นๆ
อ่ะนะ จั๊กจี้ไปป่ะ?
ทำน้องชู ASUS เราค้างไปเลย
อีชู RAM 2 GB HDD 250 GB ยังค้าง......
แบบเมาส์แน่นิ่ง อาการย่ำแย่ แล้วเครื่องก็ดับไปอย่างสงบ... อาเมน
รู้สึกว่าเป็นครั้งแรกที่สงสารแลปทอปเอามากๆ
ครั้งนี้อาจารย์ก็เลยหยวนให้ เอาแค่ร้อยกว่าๆพอ(เมตตาแล้วจริงๆ)
แต่ว่าก่อนส่งนี่มีอาถรรพฺ์กับเพื่อนๆเรากันเกือบหมดเลยอ่ะ แบบoutput file ออกมาไม่ได้
แค่output file ยังทำไม่ได้อ่ะ ไม่รู้ทำไม อาถรรพ์พาราเรลก่อนส่ง อย่างเพื่อนเมเรานี่ก็คำนวณได้ค่าขยะออกมา ทั้งๆที่เมื่อคืนเรากะมันก็ไถๆกันจนเสร็จ ไม่มีอะไรผิดแล้วนะ คอนเฟิร์ม!
แต่ก็ดันมาเอ๋อก่อนส่งซะชิบ
แต่ของเราไม่เป็นไรอ่ะ ^^ อีชูมันดวงแข็ง แต่รันช้ากว่าเพื่อนไปหน่อย แก้ไม่ได้อ่ะ ทำไมเรารันอืดกว่าชาวบ้านวะ กว๊าก
พอถึงคิวเราส่ง
พี่เค้าก็ให้เรารันให้ output file ออกมา แล้วพี่เค้าก็ดูๆผลที่ได้ พอดูแล้วว่ามันถูก(พี่แกก็ลากผ่านๆไปงั้นแล่ะ เช็คคำตอบไปใยว่ามันถูกมั้ยตั้งหลายพันตัว )
พี่เค้าก็มาดูโค้ด
เท่านั้นแล่ะ
พี่แกก็
ลบ !
O-o !!!! ทำอะร๊ายยยยยยยยยยยยยยยยยยยยยย ของคู้นนนนนนนนนนนนนนนนนนนนนนนนนน
พี่เค้าส่วนสำคัญยิ่งชีพของโปรแกรมไปอ่ะค่า! ลบไป 1 บรรทัด (อ่ะอย่ามาฮานะเคอะ โปรแกรมแต่ละอันนี่ถ้าลองไปลบซักตัวนึงของโค้ดแล้วล่ะก็ ชีวิตคุณจะบรรลัยทันทีเลยนะคะ! แล้วยิ่งถ้าลบไปตอนที่ไม่รู้ตัวนี่ ชิหัยโคดๆค่า )
แล้วพี่แกก็ให้เราพิมพ์ไอ้ส่วนนั้นอ่ะ อีกทีนึง(เป็นวิธีการเช็คว่าลอกโค้ดรึว่าให้คนอื่นทำรึเปล่าของเค้าอ่ะ ไม่ใช่ให้เราโชว์พาวอะไรหรอก)
แล้วเราทำไงรู้มั้ยคะ ^^ พี่เบลล์แทบจะเอาโลห์มาประเคนให้กับวิธีเกรียนๆของเราเลยทีเดียว
เราก็...
CTRL + Z
Undo ซะเลย ^^ แล้วโค้ดที่เคยอันตรธานหายไปนั้นก็ปรากฎขึ้นมาใหม่อีกครั้งแบบไม่ขาดตกบกพร่องใดๆทั้งสิ้น
พี่เบลล์มองหน้าเราแทบจะงับหัวเราให้ขาดให้ได้
เเล้วพี่เค้าก็ลบใหม่อีกรอบ 555 เราไม่แกล้งเค้าแล้วล่ะ (พี่เบลล์เป็นพี่บัณฑิตเราปีนึงค่ะ รุ่นเราเลยสนิทแล้วก็กล้าเล่นกับเค้า)
เราก็เลยพิมพ์ๆไปตามที่ข้อนิ้วทั้ง 10 นิ้วของเรายังจดจำได้ โค้ดอันนี้ไม่ใช้สมองค่ะ ใช้แค่นิ้วกับเมาส์ไถๆเอา กร๊าก ๆ ก็ไม่มีสมองอ่ะนะ โฮะ
พอถูก พี่เค้าก็ลากๆๆๆ ไปดูส่วนอื่น แล้วก็เอาอีกและ ลบอีกและ
เราก็พิมพ์ใหม่อีกและ แหม่ -*- ดูบันเทิงเริงใจดีเนาะพี่เนาะ แต่แล้วงานก็เข้าค่ะ เราพิมพ์ MPI_Recv เป็น MPI_Isend
พี่เบลล์ก็แกล้งเราอีก อ้าว ไหงพิมพ์ไม่เหมือนกันล่ะ
เราก็แถๆไปว่าเราดู rank ไม่ทันอ่ะ ก็พี่ลากโค้ดซะเร็วมองตามไม่ทันว่ามันอยู่ rank ไหน
พี่เค้าก็อืมๆ แล้วก็เช็คเราผ่านไป ทันใดนั้นเอง! พี่แก๊สก็ปรากฎขึ้นอย่างผู้พิทักษ์แห่งหมอก !
หยุดก่อน อธิบายให้ผมฟังก่อนสิครับ ^^ クフフ
ไอ้クフフ ไม่มีนะ เรายังไม่อยากอธิบาย C++ ให้สัปป้าฟังหรอกนะ -*- (ถ้าโกคุไม่ก็คุณฮิก็ว่าไปอย่าง เอ้ย)
เเล้วเราก็สวดสรภัญญะภาคภาษา C ให้เค้าฟัง ฟังรู้เรื่องไม่รู้เรื่องเราไม่สนแระ จะให้อธิบายภาษาชั้นสูงกว่านี้ก็ไม่สามารถจริงๆนะพี่ ก็ช้านเข้าใจอย่างเงี้ย
แล้วพี่ก็เช็คขีดๆให้เรา เอาเป็นว่าเราจะเข้าใจว่าของเราผ่านแล้วก็แล้วกันนะ ฮ่าๆๆๆ เอางั้นเลย
โอ้ว ยาวเหยียด จบเถอะเนาะ บ่นอะไรไม่รู้ให้อ่านเยอะแยะ เฮ่อ
อ่านจนจบได้นี่ เข้าใจมั้ยอ่ะ? กับภาษาที่เราเขียนๆไป เราเขียนเองเรายังงงๆกับตัวเองเลยนะบางที *-*
โอย พรุ่งนี้ส่ง Microsoft Project ทำยังไง ทำไม่เปนนนนนน !!!!
ปล . อยากคอส อยากไพรเวท T^T
ปล . เดือนหน้างานตรึม มีรับน้อง เลือกตั้ง กว๊ากๆๆๆๆ
แต่ก็รู้ว่าเครียดค่ะ
ไม่มีใครเม้นจิงๆด้วย
เพราะเค้าอ่านไม่รุเรื่องกันเฟ้ย
เอามาอัพทำม๊ายยยย
อ่านไปเราก็สะเทือนใจ (น้ำตาไหลไป)
ฮ่าๆๆ
อย่าไปเกร็ง งานต่อไปยากกว่า ฮ่าๆ
ปล . อยากคอส อยากไพรเวท T^T<-- อยากไปด้วย
#1 By แก๊งค์ล่าฉลามพม่า (202.44.8.100) on 2008-12-18 22:48