Updates to Maple 18 have greatly improved performance and efficiency in several key categories. Improvements in performance and efficiency include:
Faster computation speeds for many basic operations on large integers due to an update to a new version of GMP
The integration of the LLVM compiler framework resulting in faster compile times and more efficient generated code
Significant speed improvements and expanded degree ranges for multivariate polynomial operations
Efficiency improvements in numerical linear algebra
Linear combinations of matrices and vectors are much faster
Significant speedups working with the Bessel and Hankel special functions
command takes advantage of multiple cores making sorting much faster
Performance improvements for drawing graphs in Graph Theory
Faster High Precision Computations
Integration of LLVM
Improvements for Polynomials
Linear Algebra - Singular Values
Linear Combination Efficiency
Hardware and Special Functions
Improvements to the sort Command
In Maple 18, we upgraded the version of GMP, the GNU Multiple Precision Arithmetic Library, used for the Maple engine to 5.1.1. This greatly improves performance for new CPUs, as well as improves optimizations for existing platforms, especially 64-bit platforms.
kernelopts gmpversion ;
The following figure shows the difference in performance between Maple 17 and Maple 18 for basic operations that utilize the GMP. This operated on a Intel 64-bit i7 processor.
Maple 18 has incorporated the LLVM compiler infrastructure to provide an out-of-the-box solution for the native code compilation feature of the Compiler:-Compile command. The addition of LLVM offers many advantages over previous releases.
LLVM is built directly into the Maple kernel rather than existing as a separate process that is called from Maple to perform the compilation task. This tight integration of the compiler provides the primary advantage over previous releases. Specifically, this streamlines calls to Compile since the overhead of creating a secondary process is eliminated. When compiling a procedure the resulting machine code is generated directly into main memory where it can be executed. In prior releases, Maple created a dynamically linked library which was then loaded prior to execution. The integration of LLVM reduces the number of costly disk accesses.
Furthermore, LLVM was designed to be used in this situation and is therefore capable of producing efficient machine code in a quicker, more lightweight manner.
The following figure displays the improvements in both compile and run time of Maple 18 in comparison to Maple 17 (64-bit Windows).
Efficiency improvements in Maple 18 have resulted in significantly faster performance for large polynomial operations. For more details, see Improvements in Polynomials.
Floating-point computation of the singular value decomposition of a matrix has been upgraded to use a divide and conquer implementation based upon the DGESDD routine of CLAPACK. This brings a performance gain for both the SingularValues and the LeastSquares commands.
The following graph was produced by using the LeastSquares command with option method=SVD on double-precision datatype=float matrices and single right-hand-side vectors, running in 64-bit Linux on an Intel i5 760 2.80Ghz machine.
Maple 18 features performance updates that make arithmetic operations such as taking linear combinations of matrices or vectors much faster. The table below shows performance changes for 12 sample calculations.
Speed Up Factors
Maple17Values≔ 41.858, 4.748, 2.704, 0.204, 9.112, 7.120, 1.112, 0.016, 78.548, 29.741, 32.430, 29.753 :
Maple18Values ≔ 0.280, 0.272, 0.004, 0.008, 0.001, 0.284, 0.832, 0.004, 0.236, 0.256, 0.256, 0.252:
SpeedUpFactors ≔ Maple17Values /~ Maple18Values
Statistics:-ColumnGraphMaple17Values,Maple18Values,legend=Maple 17,Maple 18;
The Bessel functions BesselJ, BesselY, BesselI and BesselK, and the Hankel functions HankelH1 and HankelH2, have been added to Maple's core library of compiled special functions, for use in the evalhf environment. This results in significant efficiency improvements for operations such as plotting expressions involving Bessel functions. As a sample:
V ≔ Array0..200,i→−100.+i⋅3.141593,datatype=float8:
X ≔ Array0..200,i→−100. + i⋅2.71722.8, datatype=float8:
st ≔ time: Array0..200,0..200,i,j→BesselJVi,Xj, datatype=complex8: time−st;
In Maple 18, sorting is much faster due to parallelization of the sorting algorithms and the option of key sorting. The following graph shows the timing difference between sorts of random permutations run in Maple 17 and Maple 18.
For more details on the improvements to sort, see the Language and Programming updates page.
Updates to the GraphTheory package have resulted in improved performance in the DrawGraph command for large graphs. This is the result of subroutines GetEdgesColor and GetEdgesThickness using sparse Matrices when the graph is sparse. The following table shows timing for some examples. For more details, see the Updates in Graph Theory page.
What's New in Maple18
Download Help Document