<rss xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" version="2.0">
  <channel>
    <title>MaplePrimes - comments on Post, Parallel Sparse Polynomial Multiplication in Maple 14</title>
    <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication</link>
    <language>en-us</language>
    <copyright>2026 Maplesoft, A Division of Waterloo Maple Inc.</copyright>
    <generator>Maplesoft Document System</generator>
    <lastBuildDate>Tue, 09 Jun 2026 20:59:59 GMT</lastBuildDate>
    <pubDate>Tue, 09 Jun 2026 20:59:59 GMT</pubDate>
    <itunes:subtitle />
    <itunes:summary />
    <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
    <image>
      <url>http://www.mapleprimes.com/images/mapleprimeswhite.jpg</url>
      <title>MaplePrimes - comments on Post, Parallel Sparse Polynomial Multiplication in Maple 14</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication</link>
    </image>
    <item>
      <title>Very impressive</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88302</link>
      <itunes:summary>&lt;p&gt;The benchmarks look very impressive. I don't have Maple 14 though. Is the source available (and under what license?)&lt;/p&gt;
&lt;p&gt;Alec&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88302</guid>
      <pubDate>Wed, 05 May 2010 07:56:46 Z</pubDate>
      <itunes:author>alec</itunes:author>
      <author>alec</author>
    </item>
    <item>
      <title>sdmp source</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88303</link>
      <itunes:summary>Thanks for your kind comment.  The source is not available, and probably won't be anytime soon.  It's still under heavy development, and every year I take an axe to it to simplify the code and do something new.  There is no programmer interface exposed in Maple.  Instead, we have tried to describe all the details in the papers.  I'm happy to answer further questions or provide tips to anyone working on this.

In Maple 14 we hooked the routines into expand and divide, but we did a bit more than that.  We lowered the thresholds for the kernel to call out to `expand/bigprod` and `expand/bigdiv` where our code is used.  And we wrote code for `expand/bigprod` so that polynomials with rational coefficients, functions such as sin(x), and even rational function coefficients would run our code.  These extra steps were critical to maximize the performance, and you won't get nearly the same improvement (e.g. in factor) from simply hooking our code into Maple 13.  It's a finished product.

Here's another example from the &lt;a href="http://www.springerlink.com/content/g7713u5k4204263j/"&gt;Trip paper&lt;/a&gt; to illustrate.  I can't supply times since the beta license expired and we're waiting for the official release to be installed in our lab, but the improvement from Maple 13 to 14 is massive, and Maple 14 is the fastest system out there that I know of.
&lt;pre&gt;
f := expand((1/3*x + 3/5*y + 5/7*z + 7/11*t)^20): g := f+1:
gc(): TIMER := time[real](): p := expand(f*g): time[real]()-TIMER;
gc(): TIMER := time[real](): divide(p,f,'q'):  time[real]()-TIMER;
&lt;/pre&gt;</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88303</guid>
      <pubDate>Wed, 05 May 2010 09:34:43 Z</pubDate>
      <itunes:author>roman_pearce</itunes:author>
      <author>roman_pearce</author>
    </item>
    <item>
      <title>Cilk++ or CUDA</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88304</link>
      <itunes:summary>&lt;p&gt;I wonder how the parallelization was done. Did you use Cilk++ (as in &lt;a href="http://software.intel.com/en-us/articles/Multicore-enabling-Dense-Polynomial-Multiplication/"&gt;that example&lt;/a&gt;), or GPU?&lt;/p&gt;
&lt;p&gt;Alec&lt;/p&gt;
&lt;p&gt;&amp;nbsp;&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88304</guid>
      <pubDate>Wed, 05 May 2010 10:45:06 Z</pubDate>
      <itunes:author>alec</itunes:author>
      <author>alec</author>
    </item>
    <item>
      <title>Times</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88305</link>
      <itunes:summary>&lt;p&gt;Indeed.&amp;nbsp; On my system (Core 2 Duo P8400 at 2.26 GHz with Classic GUI under Windows Vista, 32-bit), I got times 15.397 and 6.145 in Maple 13.02, &lt;br /&gt;
0.592 and 0.968 in Maple 14 for these examples.&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88305</guid>
      <pubDate>Wed, 05 May 2010 11:30:38 Z</pubDate>
      <itunes:author>Robert Israel</itunes:author>
      <author>Robert Israel</author>
    </item>
    <item>
      <title>sdmp on GPU</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88306</link>
      <itunes:summary>I use threads directly, with primitives for memory barriers, compare and swap, and short sleeps.  We went for maximum parallel performance and left nothing to chance.  We split up the polynomials manually and multiply with all cores running at full tilt.  The threads cooperate to combine the results, and use a load-balancing scheme with no communication overhead.  The whole thing runs in the CPU cache.  It's a true parallel algorithm designed for many-core processors.  It is currently compiled for multicore cpus, which use fewer threads due to higher scheduling latency and faster processing versus communication.

You probably couldn't port these algorithms to a GPU.  They're sparse algorithms which inherently involve a lot of branching, like heapsort.  GPUs expect fairly uniform computations over independent sets of data, so it just isn't a match.  GPUs would be great for dense polynomial arithmetic though.</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88306</guid>
      <pubDate>Wed, 05 May 2010 11:42:50 Z</pubDate>
      <itunes:author>roman_pearce</itunes:author>
      <author>roman_pearce</author>
    </item>
    <item>
      <title>Larrabee</title>
      <link>http://www.mapleprimes.com/posts/80878-Parallel-Sparse-Polynomial-Multiplication?ref=Feed:MaplePrimes:Parallel Sparse Polynomial Multiplication in Maple 14:Comments#comment88307</link>
      <itunes:summary>&lt;p&gt;Roman,&lt;/p&gt;
&lt;p&gt;Excellent job! &lt;/p&gt;
&lt;p&gt;What do you think about Larrabee? Would it work better than GPU?&lt;/p&gt;
&lt;p&gt;Are the univariate polynomials also optimized? It would be interesting to look at their benchmarks, too, if you have them (including NTL with GMP).&lt;/p&gt;
&lt;p&gt;Alec&lt;/p&gt;</itunes:summary>
      <description>The latest comments added to the Post, Parallel Sparse Polynomial Multiplication in Maple 14</description>
      <guid>88307</guid>
      <pubDate>Wed, 05 May 2010 16:48:24 Z</pubDate>
      <itunes:author>alec</itunes:author>
      <author>alec</author>
    </item>
  </channel>
</rss>