อ่าน 3 นาที
อิลนูเมอริกส์
ILNumerics เป็น ภาษาเฉพาะโดเมน (DSL) แบบ โอเพนซอร์ส สำหรับการ ใช้งาน อัลกอริทึม เชิงตัวเลข บน แพลตฟอร์ม .
อิลนูเมอริกส์
| อิลนูเมอริกส์ | |
|---|---|
| นักพัฒนา | บริษัท อิลนูเมอริกส์ จำกัด |
| เวอร์ชันเสถียร | v7.4.56 / 10 มิถุนายน 2026 |
| เขียนเป็น | C# , Visual Basic |
| ระบบปฏิบัติการ | .NET Framework / Mono , Windows , Linux , MacOS |
| แพลตฟอร์ม | IA-32 , x86-64 , AnyCPU |
| พิมพ์ | การคำนวณทางเทคนิค , ซอฟต์แวร์ทางคณิตศาสตร์ |
| ใบอนุญาต | แพลตฟอร์ม: กรรมสิทธิ์เฉพาะ , ส่วนหลักทางคณิตศาสตร์: โอเพนซอร์ส ( MIT ) |
| เว็บไซต์ | ilnumerics.net |
ILNumericsเป็นภาษาเฉพาะโดเมน (DSL) แบบโอเพนซอร์ส สำหรับการใช้งานอัลกอริทึมเชิงตัวเลขบนแพลตฟอร์ม .NETและเป็นแกนหลักของแพลตฟอร์มการพัฒนา ทางคณิตศาสตร์ / ไลบรารีคลาส ILNumerics ทำหน้าที่เป็นระบบพีชคณิตสำหรับนักพัฒนา .NET โดยมุ่งเน้นที่การสร้างต้นแบบ ของอัลกอริทึมและการนำไปใช้งานอย่างมีประสิทธิภาพในแอปพลิ เคชันที่พร้อมใช้ งาน โดยใช้ภาษาโปรแกรมอเนกประสงค์ (GPL)เช่นCSharpและVisual Basic ILNumerics ผสานรวมเข้ากับVisual Studioและมีเป้าหมายเพื่อสนับสนุนการสร้างแอปพลิเคชันทางเทคนิคในสภาพแวดล้อมเชิงพาณิชย์และวิชาการ
ประวัติศาสตร์
ILNumerics เริ่มต้นในปี 2006 ในฐานะโครงการโอเพนซอร์ส โดยมีต้นกำเนิดมาจากมหาวิทยาลัยเทคนิคเบอร์ลิน [ 1 ] ในปี 2007 ILNumerics ได้รับรางวัล BASTA! Innovation Award 2007 [ 2 ]ในฐานะโครงการ .NET ที่มีนวัตกรรมมากที่สุดในเยอรมนีสวิตเซอร์แลนด์และออสเตรียหลังจากพัฒนาแบบโอเพนซอร์สมา 6 ปี โครงการได้เพิ่มใบอนุญาตแบบปิดที่เป็นกรรมสิทธิ์ในปี 2011 โดยมุ่งเป้าไปที่นักพัฒนาทางธุรกิจและนักวิชาการในเวลาเดียวกัน โครงการได้รับความนิยมอย่างรวดเร็ว (จำนวนการดาวน์โหลดและการมีส่วนร่วมที่ stackoverflow.com [ 3 ] [ 4 ] [ 5 ]จำนวนการดาวน์โหลดจากเว็บไซต์ไม่พร้อมใช้งาน) เฟรมเวิร์ก .NETถูกเลือกเป็น พื้นฐาน การจัดการเนื่องจากความพยายามก่อนหน้านี้บนแพลตฟอร์ม Javaถูกยกเลิกเนื่องจากข้อจำกัดทางเทคนิค ในทำนองเดียวกัน เฟรมเวิร์ก .NET ไม่ได้ถูกออกแบบโดยมุ่งเน้นที่ข้อกำหนดของการพัฒนาแอปพลิเคชันทางเทคนิค ILNumerics ได้เพิ่มอินเทอร์เฟซไปยังโค้ดที่เป็นที่นิยม ( LAPACK , FFTW ) จำนวนเชิงซ้อนและ คลาส อาร์เรย์หลายมิติแบบทั่วไป ในปี 2010 ได้เพิ่มความสามารถด้านกราฟิก และในปี 2011 ได้มีการริเริ่มความพยายามในการเพิ่มประสิทธิภาพของเทคโนโลยี พร้อมทั้งก่อตั้งบริษัทขึ้นเพื่อพัฒนาต่อยอดต่อไป
ในปี 2026 แกนหลักเชิงตัวเลขของแพลตฟอร์มการพัฒนาได้ถูกเปิดเผยเป็นโอเพนซอร์สใน โครงการ ILNumerics.ONAL (Open Numerical Algorithm Language) และเผยแพร่บนGitHubโดยทำหน้าที่เป็นมาตรฐานการใช้งานและยังคงได้รับการดูแลโดยILNumericsมาตรฐาน ONAL มีเป้าหมายเพื่อให้เป็นรากฐานที่เป็นกลางต่อผู้จำหน่าย มีความสมบูรณ์ และพร้อมสำหรับอนาคตสำหรับการพัฒนาอัลกอริทึมเชิงตัวเลขบน .NET ภาษาได้รับการออกแบบโดยเน้นที่ความหมายและฟังก์ชันการทำงานที่เป็นมิตรกับผู้ใช้ ในขณะที่ตัดแง่มุมที่เกี่ยวข้องกับประสิทธิภาพออกไปอย่างเคร่งครัด อัลกอริทึมที่เขียนใน ILNumerics.ONAL ยังคงเป็นอิสระและทำงานได้โดยไม่ต้องอาศัยการสนับสนุนจากผู้จำหน่ายที่เป็นกรรมสิทธิ์ ในขณะที่อนุญาตให้คอมไพเลอร์ที่เข้ากันได้กับ ONAL เร่งความเร็วอัตโนมัติได้อย่างง่ายดาย[ 6 ] [ 7 ]
คอมไพเลอร์เร่งความเร็ว ONAL
ในปี 2024 การเปิดตัว ILNumerics เวอร์ชัน 7.1 ได้นำเสนอ ONAL Accelerator Compiler ซึ่งเป็นระบบสำหรับการประมวลผลแบบขนานอัตโนมัติของโปรแกรมอาร์เรย์เชิงตัวเลขที่เขียนด้วย ILNumerics DSL [ 8 ]คอมไพเลอร์นี้แก้ปัญหาคอขวดทั่วไปในการพัฒนาซอฟต์แวร์เชิงตัวเลขโดยย้ายการประมวลผลแบบขนานจากส่วนของโค้ดที่ได้รับการปรับแต่งด้วยตนเองไปสู่การดำเนินการระดับโปรแกรมแบบอัตโนมัติ แทนที่จะกำหนดให้โปรแกรมเมอร์ต้องประสานงานงานแบบขนานอย่างชัดเจน โปรแกรมที่คอมไพล์แล้วจะจัดการการดำเนินการรันไทม์ในลักษณะที่ไม่รวมศูนย์ ขนานกันอย่างมหาศาล และปรับตัวได้เองตามทรัพยากรฮาร์ดแวร์ที่มีอยู่[ 8 ]
ในระหว่างการทำงาน ระบบจะระบุการดำเนินการอาร์เรย์อิสระข้ามขอบเขตฟังก์ชันและโมดูล และกำหนดเวลาสำหรับการดำเนินการพร้อมกันบนทรัพยากรการคำนวณที่มีอยู่ รวมถึงคอร์ CPU และ GPU เพื่อให้สามารถทำเช่นนี้ได้ โปรแกรมแบบลำดับเดิมจะถูกแยกออกเป็นส่วนย่อย แต่ละส่วน ซึ่งสอดคล้องกับการดำเนินการอาร์เรย์เดี่ยวหรือแบบรวม ซึ่งจะถูกประกอบใหม่ในภายหลังสำหรับการดำเนินการแบบขนานแบบอะซิงโครนัส การดำเนินการอาร์เรย์แต่ละรายการมีตรรกะการดำเนินการของตัวเอง: มันจะประเมินต้นทุนเวลาการทำงานที่คาดไว้ เลือกทรัพยากรการคำนวณที่เหมาะสม เตรียมโค้ดเคอร์เนล ที่ปรับให้เหมาะสม สำหรับการดำเนินการบนอุปกรณ์ที่เลือก และเริ่มการดำเนินการทันทีที่ตรงตามข้อกำหนด ในแบบจำลองนี้ การกำหนดเวลาเองก็กลายเป็นส่วนหนึ่งของภาระงานแบบขนาน[ 9 ]
ไวยากรณ์
ILNumerics ใช้ฟังก์ชันพื้นฐานที่จำเป็นสำหรับ การพัฒนาแอปพลิเคชันในด้านเทคนิค ได้แก่อาร์เรย์หลาย มิติ จำนวนเชิงซ้อนพีชคณิตเชิงเส้นFFTและการควบคุมการพล็อต (2 มิติและ3 มิติ ) คลาสอาร์เรย์เข้ากันได้อย่างสมบูรณ์กับคุณสมบัติอาร์เรย์ของMatlabและnumpyรวมถึงลำดับการจัดเก็บภายใน การสร้างซับอาร์เรย์ การขยาย และการจัดทำดัชนีขั้นสูง ฟังก์ชันระดับสูงกว่ามีให้โดยกล่องเครื่องมือสำหรับการประมาณค่าการเพิ่มประสิทธิภาพสถิติHDF5และการเรียนรู้ของเครื่อง ILNumerics DSL [ 10 ]ถูกฝังอยู่ใน .NET อัลกอริทึมการคำนวณถูกกำหนดโดยใช้ภาษา CLI ใดก็ได้ อย่างไรก็ตาม มีเพียงC# เท่านั้น ที่ได้รับการแนะนำอย่างเป็นทางการ เนื่องจากระบบประเภทที่เข้มงวด ของเฟรมเวิร์ก . NET อัลกอริทึมที่สร้างด้วย ILNumerics จึงมีประเภทที่เข้มงวด ซึ่งแตกต่างจากไวยากรณ์ของทางเลือกอื่น ๆซึ่งมักจะมีประเภทที่อ่อนแอและจึงง่ายต่อการนำไปใช้
กราฟิก

ILNumerics ใช้กราฟฉากเพื่อสร้างเอาต์พุตแบบกราฟิก มีการใช้พล็อตแบบอินเทอร์แอ็กทีฟทั้งแบบ 2 มิติและ 3 มิติในแอปพลิเคชัน WPF และ Windows Forms มีการวาดภาพแบบเร่งความเร็วด้วยฮาร์ดแวร์ผ่านOpenGL และมีซอฟต์แวร์ เรนเดอร์ที่มีคุณสมบัติครบถ้วนสำหรับฮาร์ดแวร์รุ่นเก่า โดยใช้ GDI+, SkiaSharp และSVG
การผสานรวม IDE

ILNumerics ผสานรวมเข้ากับVisual Studioโดยเพิ่มหน้าต่างเครื่องมือลงใน IDE สำหรับการตรวจสอบวัตถุทางคณิตศาสตร์แบบกราฟิกในขณะที่ก้าวผ่านโค้ดของผู้ใช้[ 5 ]
ผลงาน
เนื่องจาก ILNumerics มาในรูปแบบของแอสเซมบลี CLIจึงมุ่งเป้าไปที่ แอปพลิเคชัน Common Language Infrastructure (CLI) เช่นเดียวกับJavaเฟรมเวิร์กเหล่านี้มักถูกวิพากษ์วิจารณ์ว่าไม่เหมาะสมสำหรับการคำนวณเชิงตัวเลข เหตุผลก็คือ การจัดการ หน่วยความจำโดยตัวเก็บขยะ (garbage collector ) การประมวลผล ภาษาตัวกลางและการเพิ่มประสิทธิภาพที่ไม่เพียงพอโดยคอมไพเลอร์ที่เกี่ยวข้อง ILNumerics แก้ปัญหาข้อจำกัดเหล่านี้โดยการคลายลูป (loop unrolling ) การลบการตรวจสอบขอบเขตในการเข้าถึงอาร์เรย์ และการเพิ่มประสิทธิภาพแคช นอกจากนี้ยังเพิ่มความเร็วได้อีกด้วยการจัดการหน่วยความจำของอ อบ เจ็กต์อาร์เรย์ขนาดใหญ่โดยอัตโนมัติ รูทีนพีชคณิตเชิงเส้นอาศัยเวอร์ชันที่เพิ่มประสิทธิภาพเฉพาะโปรเซสเซอร์ของLAPACKและBLAS
อาร์เรย์ ILNumerics ใช้ฮีปที่ไม่ได้รับการจัดการในการจัดเก็บข้อมูล ด้วยวิธีนี้ขนาดของอาร์เรย์ ILNumerics จึงไม่ถูกจำกัดโดย CLRและความสามารถในการทำงานร่วมกับไลบรารีของบุคคลที่สามจึงดีขึ้น
แม้ว่าการเพิ่มประสิทธิภาพเหล่านี้จะเหมาะสมที่จะทำให้ประสิทธิภาพของอัลกอริธึมเทียบเท่ากับภาษาที่ไม่ได้รับการจัดการ แต่การขนานอัตโนมัติของ ILNumerics จะเพิ่มข้อได้เปรียบที่สำคัญในระดับความละเอียดของโปรแกรมที่สูงขึ้น ความสามารถในการกระจายนิพจน์อาร์เรย์ทั้งหมดไปยังทรัพยากรการคำนวณแบบขนานโดยอัตโนมัติในระหว่างการทำงาน และแนวทางเฉพาะของ ILNumerics ในการระบุศักยภาพแบบขนานที่นอกเหนือจากตัววนซ้ำแบบง่ายๆ จะได้รับประสิทธิภาพการทำงานที่ไม่เหมือนใคร ในขณะเดียวกันก็ขจัดภาระการเพิ่มประสิทธิภาพจากโปรแกรมเมอร์[ 11 ]
ดูเพิ่มเติม
ลิงก์ภายนอก
- เว็บไซต์อย่างเป็นทางการ
- บทความเกี่ยวกับไลบรารีคณิตศาสตร์สำหรับ .NET ใน MSDN
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ อิลนูเมอริกส์
ILNumerics เป็น ภาษาเฉพาะโดเมน (DSL) แบบ โอเพนซอร์ส สำหรับการ ใช้งาน อัลกอริทึม เชิงตัวเลข บน แพลตฟอร์ม .
ประวัติศาสตร์
ILNumerics เริ่มต้นในปี 2006 ในฐานะโครงการโอเพนซอร์ส โดยมีต้นกำเนิดมาจาก มหาวิทยาลัยเทคนิคเบอร์ลิน [ 1 ] ใน ปี 2007 ILNumerics ได้รับรางวัล BASTA! Innovation Award 2007 [ 2 ] ในฐานะโครงการ .
คอมไพเลอร์เร่งความเร็ว ONAL
ในปี 2024 การเปิดตัว ILNumerics เวอร์ชัน 7.1 ได้นำเสนอ ONAL Accelerator Compiler ซึ่งเป็นระบบสำหรับการประมวลผลแบบขนานอัตโนมัติของโปรแกรมอาร์เรย์เชิงตัวเลขที่เขียนด้วย ILNumerics DSL [ 8 ]...
ไวยากรณ์
ILNumerics ใช้ฟังก์ชันพื้นฐานที่จำเป็นสำหรับ การพัฒนาแอปพลิเคชันในด้านเทคนิค ได้แก่ อาร์เรย์ หลาย มิติ จำนวนเชิงซ้อน พีชคณิต เชิงเส้น FFT และ การควบคุม การพล็อต (2 มิติและ 3 มิติ ) คลาสอาร์เรย์เข้ากันได้อย่างสมบูรณ์กับคุณสมบัติอาร์เรย์ของ Matlab และ numpy...