กลับไปหน้าบทความ

อ่าน 3 นาที

อิลนูเมอริกส์

ILNumerics เป็น ภาษาเฉพาะโดเมน (DSL) แบบ โอเพนซอร์ส สำหรับการ ใช้งาน อัลกอริทึม เชิงตัวเลข บน แพลตฟอร์ม .

อิลนูเมอริกส์

อิลนูเมอริกส์
นักพัฒนาบริษัท อิลนูเมอริกส์ จำกัด
เวอร์ชันเสถียร
v7.4.56 / 10 มิถุนายน 2026 ( 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 แสดงข้อมูลการดีบักอาร์เรย์โดยใช้ตัวเลือกกราฟิกที่ยืดหยุ่นขณะไล่ดูโค้ดทีละขั้นตอน

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
ดึงข้อมูลมาจาก " https://en.wikipedia.org/w/index.php?title=ILNumerics&oldid=1358754855 "

สรุปเนื้อหา

ข้อมูลสำคัญจากบทความ

ข้อมูลสำคัญเกี่ยวกับ อิลนูเมอริกส์

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...