highly optimized using BLAS, so that our algorithms show a good computa- tional performance. Although our algorithms require a significant amount of working memory, they are significantly faster than ‘gemmx’ in XBLAS when all sizes of matrices are large enough to realize nearly peak performance of ‘gemm’. Numerical examples illustrate the efficiency of the proposed method.
Keywords Matrixmultiplication·Accuratecomputations· Floating-point arithmetic · Error-free transformation
1 Introduction
This paper is concerned with accurate matrix multiplication in floating-point arithmetic. To obtain an accurate result, there are several possibilities:
– an accurate algorithm for sum and dot product (for example, [4, 9, 11, 12])
– a multiple-precision library (for example, [2, 7, 14, 15])
We suggest other algorithms which mainly exploit standard matrix multiplica- tions in pure floating-point arithmetic rather than individual dot products.
Recently, an accurate summation algorithm was developed by Rump et al. [11], which outputs a faithfully rounded result of the summation of floating- point numbers. Their method avoids sorting of input data, branches in a main loop and direct access to the significand or exponent. Each of those would slow down the performance of computation on present-day architecture sig- nificantly. By avoiding all of those, their method is not only fast in terms of the number of floating-point operations but also in terms of measured computing time. Moreover, only basic floating-point operations [1] are required for this method, so that it can be implemented on all computational environments following the IEEE 754 standard.
We suggest an error-free transformation of the product of two floating-point matrices into an unevaluated sum of floating-point matrices by applying the strategy of the accurate summation algorithm in [11]. Applying our error-free transformation partially, we can suggest algorithms which deliver an accurate matrix product by mainly using floating-point matrix multiplications, which in turn are performed very fast by BLAS (Basic Linear Algebra Subpro- grams) routines. As to optimized BLAS, there are Intel Math Kernel Library, Goto BLAS [6], ATLAS [13] and others available. These codes are highly optimized for particular architectures. Some BLAS routines in such libraries automatically use multi-threads. Moreover, there are subprograms for sparse matrix computations, for example, Sparse BLAS [17] and UMFPACK [18]. Our algorithms mainly use such routines for matrix multiplication so that they are not only very effective in terms of computational performance but also easy and often automatically parallelizable.
This paper is organized as follows. In the following section, we introduce our notation and present the key technique of splitting a floating-point num- ber. Next, we establish an error-free transformation of the product of two
สูงสุดใช้บลาส เพื่อให้ประสิทธิภาพที่ดี computa-หากคุณแสดงขั้นตอนวิธีการทำงานของเรา ถึงแม้ว่าอัลกอริทึมของเราจำเป็นต้องมีหน่วยความจำ พวกเขาเป็นอย่างมากเร็วกว่า gemmx ใน XBLAS เมื่อขนาดทั้งหมดของเมทริกซ์มีขนาดใหญ่พอที่จะตระหนักถึงประสิทธิภาพเกือบสูงสุดของ 'gemm' อย่างตัวเลขแสดงประสิทธิภาพของวิธีการนำเสนอคำสำคัญ Matrixmultiplication· Accuratecomputations· ·คณิตศาสตร์ทศนิยม การแปลงข้อผิดพลาดบทนำ 1กระดาษเกี่ยวข้องกับการคูณเมทริกซ์ถูกต้องในทางคณิตศาสตร์ทศนิยม การขอรับผลลัพธ์ถูกต้อง มีหลายประการ:– อัลกอริทึมที่ถูกต้องสำหรับผลบวกและผลคูณจุด (เช่น, [4, 9, 11, 12])-ความแม่นยำหลายไลบรารี (เช่น, [2, 7, 14, 15])เราขอแนะนำขั้นตอนวิธีอื่น ๆ ซึ่งส่วนใหญ่ใช้ประโยชน์จากมาตรฐานเมตริกซ์ multiplica ทุกระดับในบริสุทธิ์ทศนิยมคณิตศาสตร์ มากกว่าแต่ละจุดผลิตภัณฑ์เมื่อเร็ว ๆ นี้ อัลกอริทึมการรวมถูกต้องได้รับการพัฒนาโดยรัมป์ et al. [11], ซึ่งให้ผลผลิตเป็นผลมนสมจริงของผลรวมของจำนวนจุดลอยตัว วิธีการหลีกเลี่ยงการเรียงลำดับของข้อมูลการป้อนเข้า สาขาหลักและเข้าถึงโดยตรงไปยังซิกนิฟิแคนด์เลขชี้กำลัง ของแต่ละจะชะลอตัวลงประสิทธิภาพของการคำนวณในปัจจุบันสถาปัตยกรรม sig-nificantly โดยหลีกเลี่ยงทุกคน วิธีการพวกเขาจะไม่เพียงในแง่ ของจำนวนทศนิยมการดำเนินงานอย่างรวดเร็ว แต่ยังในแง่ ของเวลาใช้งานวัด นอกจากนี้ การดำเนินการข้อมูลเลขทศนิยมพื้นฐานเท่านั้น [1] จำเป็นสำหรับวิธีการนี้ เพื่อให้มันสามารถใช้ได้กับทุกสภาพแวดล้อมเชิงคำนวณที่มาตรฐาน IEEE 754เราขอแนะนำที่ปราศจากข้อผิดพลาดการเปลี่ยนแปลงของผลิตภัณฑ์ของทศนิยมสองเมทริกซ์เป็นจำนวนทศนิยมเมทริกซ์การ unevaluated โดยใช้กลยุทธ์ของอัลกอริทึมการรวมถูกต้องใน [11] ใช้การแปลงข้อผิดพลาดของเราบางส่วน เราสามารถแนะนำอัลกอริทึมที่ผลิตภัณฑ์แม่นยำเมทริกซ์ โดยใช้เมทริกซ์ทศนิยม multiplications ซึ่งในการเปิดดำเนินการอย่างรวดเร็ว โดยบลาส (พีชคณิตเชิงเส้นเบื้องต้น Subpro - กรัม) ตามปกติ ส่วนใหญ่ เป็นเหมาะบลาส มี Intel คณิตศาสตร์เคอร์เนลไลบรารี บลา สไป [6], ATLAS [13] และอื่น ๆ พร้อมใช้งาน รหัสเหล่านี้จะสูงสุดสำหรับลูกค้าเฉพาะ ตามปกติบางบลาสในไลบรารีดังกล่าวโดยอัตโนมัติใช้มัลติเธรด นอกจากนี้ มี subprograms สำหรับประมวลผลเมทริกซ์เบาบาง เช่น BLAS ห่าง [17] และ UMFPACK [18] อัลกอริทึมของเราใช้งานประจำเช่นการคูณเมทริกซ์ส่วนใหญ่เพื่อที่จะไม่เพียงแต่มีประสิทธิภาพในแง่ของประสิทธิภาพการทำงานเชิงคำนวณ แต่ง่าย และ parallelizable มักจะโดยอัตโนมัติเอกสารนี้มีการจัดระเบียบดังนี้ ในส่วนต่อไปนี้ เราแนะนำสัญกรณ์ของเรา และนำเสนอเทคนิคสำคัญแบ่งเป็นทศนิยม num ber ถัดไป เราสร้างการแปลงข้อผิดพลาดของผลิตภัณฑ์ของทั้งสอง
การแปล กรุณารอสักครู่..

เพิ่มประสิทธิภาพสูงใช้หน่ายเพื่อให้ขั้นตอนวิธีการของเราแสดงให้เห็นถึงประสิทธิภาพการทำงานที่ดี tional computa- แม้ว่าขั้นตอนวิธีการของเราต้องเป็นจำนวนมากของการทำงานของหน่วยความจำที่พวกเขาเป็นอย่างเร็วกว่า 'gemmx ใน XBLAS เมื่อทุกขนาดของเมทริกซ์มีขนาดใหญ่พอที่จะตระหนักถึงผลการดำเนินงานเกือบสูงสุดของ' GEMM ' ตัวอย่างตัวเลขแสดงให้เห็นถึงประสิทธิภาพของวิธีการที่นำเสนอ.
คำ Matrixmultiplication · Accuratecomputations ·จุดลอยตัวเลขคณิต·ปราศจากข้อผิดพลาดการเปลี่ยนแปลง
1 บทนำ
บทความนี้เป็นกังวลกับการคูณเมทริกซ์ที่ถูกต้องในจุดลอยตัวเลขคณิต ที่จะได้รับผลที่ถูกต้องมีหลายเป็นไปได้:
- ขั้นตอนวิธีการที่ถูกต้องสำหรับการรวมกับสินค้า dot (ตัวอย่างเช่น [4, 9, 11, 12])
- ห้องสมุดหลายความแม่นยำ (เช่น [2, 7, 14 15])
เราขอแนะนำขั้นตอนวิธีการอื่น ๆ ซึ่งส่วนใหญ่ใช้ประโยชน์จากเมทริกซ์มาตรฐาน tions multiplica- บริสุทธิ์เลขคณิตจุดลอยตัวมากกว่าผลิตภัณฑ์แต่ละจุด.
เมื่อเร็ว ๆ นี้ขั้นตอนวิธีการบวกที่ถูกต้องได้รับการพัฒนาโดยตูด, et al [11] ซึ่ง outputs ผลกลมนับถือของผลรวมของตัวเลขจุด floating- วิธีการของพวกเขาหลีกเลี่ยงการเรียงลำดับของข้อมูลเข้าสาขาในวงหลักและเข้าถึงโดยตรงไปยังซิกหรือตัวแทน แต่ละคนจะชะลอการทำงานของการคำนวณในปัจจุบันสถาปัตยกรรมลายเซ็น nificantly โดยหลีกเลี่ยงทุกคนวิธีการของพวกเขาไม่ได้เป็นเพียงที่รวดเร็วในแง่ของจำนวนของการดำเนินงานจุดลอย แต่ยังอยู่ในแง่ของเวลาการประมวลวัด นอกจากนี้ขั้นพื้นฐานเพียงการดำเนินงานจุดลอย [1] ที่จำเป็นสำหรับวิธีการนี้เพื่อที่จะสามารถดำเนินการได้ในทุกสภาพแวดล้อมการคำนวณดังต่อไปนี้ IEEE 754 มาตรฐาน.
เราขอแนะนำการเปลี่ยนแปลงที่ปราศจากข้อผิดพลาดของผลิตภัณฑ์ของทั้งสองเมทริกซ์จุดลอยตัวลง ผลรวมของการฝึกอบรม unevaluated จุดลอยตัวโดยใช้กลยุทธ์ของขั้นตอนวิธีการบวกที่ถูกต้องใน [11] การประยุกต์ใช้การเปลี่ยนแปลงปราศจากข้อผิดพลาดของเราบางส่วนเราสามารถแนะนำขั้นตอนวิธีการที่ส่งผลิตภัณฑ์แมทริกซ์ที่ถูกต้องโดยส่วนใหญ่ใช้คูณเมทริกซ์จุดลอยตัวซึ่งจะมีการดำเนินการอย่างรวดเร็วโดยหน่าย (Basic พีชคณิตเชิงเส้น Subpro- กรัม) กิจวัตร เป็นไปหน่ายที่ดีที่สุดที่มี Intel Math Kernel ห้องสมุดไปหน่าย [6], ATLAS [13] และคนอื่น ๆ ที่มีอยู่ รหัสเหล่านี้จะเพิ่มประสิทธิภาพสูงสำหรับสถาปัตยกรรมโดยเฉพาะอย่างยิ่ง บางกิจวัตรหน่ายในห้องสมุดดังกล่าวโดยอัตโนมัติใช้หลายหัวข้อ นอกจากนี้ยังมีโปรแกรมย่อยสำหรับการคำนวณเมทริกซ์เบาบางเช่นเบาบางหน่าย [17] และ UMFPACK [18] อัลกอริทึมของเราส่วนใหญ่ใช้การปฏิบัติดังกล่าวสำหรับการคูณเมทริกซ์เพื่อให้พวกเขาไม่เพียงมีประสิทธิภาพมากในแง่ของประสิทธิภาพการคำนวณ แต่ยังง่ายและมักจะ parallelizable โดยอัตโนมัติ.
กระดาษนี้จะมีการจัดระเบียบดังต่อไปนี้ ในส่วนต่อไปเราแนะนำสัญกรณ์ของเราและนำเสนอเทคนิคที่สำคัญของการแยกจุดลอยตัวจานวน ต่อไปเราจะสร้างการเปลี่ยนแปลงที่ปราศจากข้อผิดพลาดของผลิตภัณฑ์ของทั้งสอง
การแปล กรุณารอสักครู่..

เหมาะอย่างมากโดยใช้ Blas ดังนั้นขั้นตอนวิธีของเราแสดงดี computa - การแสดงนานาชาติ . แม้ว่าขั้นตอนวิธีของเราต้องใช้จำนวนมากทำงาน พวกเขาจะเร็วมากกว่า gemmx " " ใน xblas เมื่อขนาดของเมทริกซ์มีขนาดใหญ่พอที่จะตระหนักถึงเกือบประสิทธิภาพสูงสุดของ " gemm " ตัวอย่างเชิงตัวเลขแสดงให้เห็นถึงประสิทธิภาพของวิธีการที่ได้นำเสนอคำสำคัญ matrixmultiplication ด้วย accuratecomputations ด้วยจุดลอย ) ด้วยการแปลงข้อผิดพลาดฟรี1 แนะนำบทความนี้เกี่ยวข้องกับการคูณเมทริกซ์ที่ถูกต้องในเลขคณิตจุดลอยตัว . เพื่อให้ได้ผลที่ถูกต้อง มีความเป็นไปได้หลายและขั้นตอนวิธีที่ถูกต้องสำหรับผลรวมและจุดผลิตภัณฑ์ ( ตัวอย่างเช่น [ 4 , 9 , 11 , 12 )ซึ่งหลายความแม่นยำห้องสมุด ( ตัวอย่างเช่น [ 2 , 7 , 14 , 15 )เราแนะนำให้อัลกอริทึมอื่น ๆ ซึ่งส่วนใหญ่ใช้ประโยชน์จากมาตรฐานเมตริกซ์ multiplica - ใช้งานในจุด - คณิตศาสตร์บริสุทธิ์มากกว่าผลิตภัณฑ์จุดของแต่ละบุคคลเมื่อเร็ว ๆนี้ , ขั้นตอนวิธีการถูกต้องได้รับการพัฒนาโดยรัมพ์ et al . [ 11 ] ซึ่งผล กลม และผลของการลอย - ตัวเลขจุด วิธีการของพวกเขาเพื่อหลีกเลี่ยงการเรียงลำดับของข้อมูลทุกสาขาในวงหลักและการเข้าถึงโดยตรงในซิกนิฟิแคนด์หรืออะไร . แต่ละคนจะชะลอตัวลงประสิทธิภาพของการคำนวณใน Sig - สถาปัตยกรรม - nificantly . โดยหลีกเลี่ยงการทั้งหมดที่ วิธีการของพวกเขาไม่ได้เป็นเพียงอย่างรวดเร็วในแง่ของจำนวนของการดำเนินงานจุดลอยตัว แต่ยังอยู่ในแง่ของวัดเวลาในการคำนวณ นอกจากนี้ การดำเนินงานพื้นฐานจุด - [ 1 ] เป็นวิธีนี้ เพื่อให้สามารถใช้ในการคำนวณสภาพแวดล้อมตาม IEEE 754 มาตรฐานเราขอแนะนำข้อผิดพลาดฟรีแปลงของผลิตภัณฑ์สองจุด - เมทริกซ์เป็นเมทริกซ์ของจุด - รวม unevaluated โดยการใช้กลยุทธ์ของขั้นตอนวิธีการถูกต้อง [ 11 ] การประยุกต์ใช้การแปลงข้อผิดพลาดฟรีของเราบางส่วน เราสามารถแนะนำขั้นตอนวิธีที่ส่งมอบผลิตภัณฑ์ที่ถูกต้อง โดยส่วนใหญ่การใช้เมทริกซ์เมทริกซ์การคูณจุดลอยตัว ซึ่งในทางกลับจะดำเนินการอย่างรวดเร็ว โดย เบลส ( subpro - พีชคณิตเชิงเส้นเบื้องต้นกรัม ) เป็นประจำ เป็นบลาสเหมาะ มีข้อมูลทางคณิตศาสตร์ของห้องสมุด , ไปยัง Blas [ 6 ] , Atlas [ 13 ] และคนอื่น ๆที่พร้อมใช้งาน รหัสเหล่านี้จะเหมาะอย่างมากโดยเฉพาะอย่างยิ่งสำหรับสถาปัตยกรรม . บางห้องสมุดดังกล่าวโดยอัตโนมัติใช้บลาสกิจวัตรในหลายกระทู้ นอกจากนี้ยังมีโปรแกรมย่อยสำหรับเมทริกซ์มากเลขศูนย์การคำนวณตัวอย่างเช่นเบาบาง Blas [ 17 ] และ umfpack [ 18 ] ขั้นตอนวิธีของเราส่วนใหญ่ใช้ตามปกติสำหรับการคูณเมทริกซ์เพื่อให้พวกเขาไม่เพียง แต่มีประสิทธิภาพมากในแง่ของประสิทธิภาพการคำนวณ แต่ยังง่ายและมักจะโดยอัตโนมัติ parallelizable .กระดาษนี้จะจัดดังนี้ ในส่วนต่อไปนี้ เราแนะนำสัญกรณ์ของเราและนำเสนอเทคนิคที่สำคัญของการแบ่งจุด - num - ผ ต่อไปเราสร้างข้อผิดพลาดฟรีแปลงของผลิตภัณฑ์ของทั้งสอง
การแปล กรุณารอสักครู่..
