Tags:
Node Thumbnail

กูเกิลนำเสนอปัญญาประดิษฐ์ MLGO นำมาช่วยคอมไพลเลอร์ให้ออปติไมซ์โค้ดได้ดีขึ้นกว่าเดิม ทั้งในแง่ประสิทธิภาพการทำงาน และขนาดโค้ดที่ได้หลังจากคอมไพล์แล้ว

การปรับปรุงขนาดโค้ดนั้นอาศัยการย้ายโค้ดจากในฟังก์ชั่นออกมาภายนอก (inlining) ที่ก่อนหน้านี้คอมไพล์เลอร์ก็มีตัวออปติไมซ์แบบ heuristic ที่ค้นหาแนวทางการทำ inlining ให้ได้โค้ดขนาดเล็กที่สุดอยู่แล้ว แต่กระบวนการออปติไมซ์นั้นซับซ้อนและปรับปรุงเพิ่มเติมได้ยาก การใช้ MLGO เข้าไปช่วยออปติไมซ์เป็นการฝึกปัญญาประดิษฐ์แบบ reinforce learning (RL) ที่ปัญญาประดิษฐ์จะได้รางวัลจากตัดสินใจทำ inlining แล้วโค้ดเล็กลง ผที่ได้จากการคอมไพล์โค้ดภายในของกูเกิลเองสามารถลดขนาดโค้ดได้ 3-7%

อีกส่วนหนึ่งคือการจัดเรียงการใช้งาน registry ในซีพียูที่มีจำนวนจำกัด และเมื่อต้องพิจารณาตัวแปรต่างๆ ก็ต้องโหลดข้อมูลเข้าออกจาก registry เรื่อยๆ การจัดเรียงโค้ดโดยคำถึงนึงการใช้งาน registry ทำให้ซอฟต์แวร์โดยรวมประสิทธิภาพดีขึ้นได้ ในกรณีนี้ MLGO สามารถออปติไมซ์ประสิทธิภาพโค้ดภายในได้ 0.3-1.5%

ทีมงานคาดว่าตัวปัญญาประดิษ์สามารถออกแบบให้ดีขึ้น และออปติไมซ์โค้ดได้มากกว่าเดิม ขณะที่ในอนาคตก็อาจจะพัฒนา MLGO ไปใช้งานในการออปติไมซ์งานส่วนอื่นๆ ของคอมไพล์เลอร์เพิ่มเติม

ที่มา - Google AI Blog

No Description

Get latest news from Blognone

Comments

By: rattananen
Android Windows
on 7 July 2022 - 15:52 #1254459

เขียน code แบบนี้ควร optimize ตัวเองก่อนที่จะให้ compiler optimize ให้

By: deaknaew on 7 July 2022 - 15:56 #1254460 Reply to:1254459

ในห้องเรียน: แยก code การทำงานออกมาเป็น ฟังก์ชันๆ จะได้เข้าใจง่าย

นักเรียนที่ส่งงาน:

By: zda98
Windows Phone
on 7 July 2022 - 16:50 #1254473 Reply to:1254459

คือเขียนให้คนอ่านอาจจะต้องเขียนเยอะหน่อย แต่เวลา compile อาจจะให้ compiler optimize ให้ดีขึ้น ผมคิดว่าอย่างนี้นะ คือเขียนสั้นไปต้องใช้พลังสมองคิดเยอะ หน่อย ฮ่าๆ

By: IDCET
Contributor
on 7 July 2022 - 19:48 #1254487 Reply to:1254459

ผมว่า Programmer ส่วนใหญ่ก็อยากเขียนแบบนี้หละครับ แต่มันยากและไม่ค่อยเข้าใจเท่า Code ยาวๆ ที่เห็นภาพการทำงานชัดเจนกว่า Code สั้นๆ


ความล้มเหลว คือจุดเริ่มต้นสู่ความหายนะ มีผลกระทบมากกว่าแค่เสียเงิน เวลา อนาคต และทรัพยากรที่เสียไป - จงอย่าล้มเหลว

By: rattananen
Android Windows
on 8 July 2022 - 11:13 #1254543 Reply to:1254487

ถ้าเจอโจทย์ครั้งแรก ตั้งเป้าแค่ run ผ่าน, bugfree ก่อนได้ครับแต่ปัญหาอย่างนึงคือ เขียน run ผ่าน, test ผ่าน คือจบเลย ไม่กลับมาดูที่ตนเองเขียนไว้

ผมก็มีบ้างเขียนอะไรไม่ efficient แบบนี้ แต่ผมกลับมาดู code ตัวเองและ refactor เสมอพอทำบ่อยๆ เวลาเจอโจทย์ มันก็จะมี pattern ลอยขึ้นมาเอง

By: mr_tawan
Contributor iPhone Android Windows
on 7 July 2022 - 20:33 #1254489 Reply to:1254459
mr_tawan's picture

เริ่มจากแก้ magic number ออกก่อนเลย 555


  • 9tawan.net บล็อกส่วนตัวฮับ
By: ZodiacJB on 8 July 2022 - 01:50 #1254507

MLGO : printf (ฉันปวดหัวกับเธอมากนะ), มาก ๆ);