gemm Wiki Rss Feedhttp://gemm.codeplex.com/gemm Wiki Rss DescriptionUpdated Wiki: Homehttp://gemm.codeplex.com/wikipage?version=6<div class="wikidoc">The <a href="http://mathnetnumerics.codeplex.com/" class="externalLink">Math.NET Numerics<span class="externalLinkIcon"></span></a> team is running a coding contest to see who can write the the fastest* (yet accurate) managed matrix multiplication code. Contestants will submit an implementation of a simplified version of the BLAS routine <a href="http://en.wikipedia.org/wiki/GEMM" class="externalLink">GEMM<span class="externalLinkIcon"></span></a>:<br /><br /><pre>/// <summary>
/// Computes C := alpha * op(A) * op(B) + beta * C
/// where op(X) is one of
/// op(X) = X or op(X) = X'
/// </summary>
/// <param name="transposeA">To transpose matrix A or not.</param>
/// <param name="transposeB">To transpose matrix B or not.</param>
/// <param name="m">The number of rows of matrix op(A) and of the matrix C.</param>
/// <param name="n">The number of columns of matrix op(B) and of the matrix C.</param>
/// <param name="k">The number of columns of matrix op(A) and the of the matrix op(B).</param>
/// <param name="alpha">The value to scale the matrix A with.</param>
/// <param name="a">The matrix A.</param>
/// <param name="b">The matrix B.</param>
/// <param name="beta">The value to scale the matrix B with.</param>
/// <param name="c">The matrix C.</param>
public static void Gemm(Transpose transposeA, Transpose transposeB, int m, int n, int k, double alpha,
double[] a, double[] b, double beta, double[] c) {}
</pre><br />The matrices are stored in <a href="http://en.wikipedia.org/wiki/Row-major_order#Column-major_order" class="externalLink">column-major arrays<span class="externalLinkIcon"></span></a>.<br /><br /><b>Prizes:</b><br />1st place - $1,500<br />2nd place - $500<br /><br /><b>Rules:</b>
<ul><li>Entries will be judged based on speed*, accuracy, and elegance. The Math.NET team will select the winner based on these three criteria.</li>
<li>To be eligible for the 1st price, your code must be on average, across different platforms and number of CPU cores, be 25% faster the current Math.NET Numerics implementation. That is, entries that are not at least 25% faster will only be eligible for the 2nd place prize.</li>
<li>Submissions should be emailed to <a href="mailto:marcus@cuda.net" class="externalLink">marcus@cuda.net<span class="externalLinkIcon"></span></a> and the submission should be announced in the discussion forum (<b>DO NOT</b> post your code to the forum). Contestants should use the benchmark harness (see downloads) to test their code. Only the GEMM implementation needs to be submitted.</li>
<li>Submissions must be received by June 30, 2011. The winner will announced by July 31, 2011.</li>
<li>Submissions must be written in C# or F#.</li>
<li>Any use of threads must use the MathNet.Numerics.Threading.CommonParallel class in <a href="http://mathnetnumerics.codeplex.com/" class="externalLink">Math.NET Numerics<span class="externalLinkIcon"></span></a>. Contestants may modify the CommonParallel class but must also submit those changes.</li>
<li>Submissions should be original work and the submitter should own the complete copyright to the code (<b>DO NOT</b> submit someone else's code or a port someone else’s code). However, submissions can be based on the current Math.NET Numerics version.</li>
<li>The winner will be required to grant the Math.NET Project and to recipients of software distributed by the Math.NET Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute submission and such derivative works.</li>
<li>Payment will be made via PayPal (other arrangements might be possible). The winner is responsible for any transfer fees and taxes.</li>
<li>Math.NET reserves the right to modify the rules of the contest at anytime and reject any submission for any reason.</li></ul>
<br />*We are looking for code that performs well across different CPU architectures and scales with number of CPU cores. We'll be using both 32-bit and 64-bit versions of the Microsoft .NET 4.0 runtime for benchmarking.<br /></div><div class="ClearBoth"></div>jvangaelMon, 09 May 2011 19:41:41 GMTUpdated Wiki: Home 20110509074141PUpdated Wiki: Homehttp://gemm.codeplex.com/wikipage?version=5<div class="wikidoc">The <a href="http://mathnetnumerics.codeplex.com/" class="externalLink">Math.NET Numerics<span class="externalLinkIcon"></span></a> team is running a coding contest to see who can write the the fastest* (yet accurate) managed matrix multiplication code. Contestants will submit an implementation of a simplified version of the BLAS routine <a href="http://en.wikipedia.org/wiki/GEMM" class="externalLink">GEMM<span class="externalLinkIcon"></span></a>:<br /><br /><pre>/// <summary>
/// Computes C := alpha * op(A) * op(B) + beta * C
/// where op(X) is one of
/// op(X) = X or op(X) = X'
/// </summary>
/// <param name="transposeA">To transpose matrix A or not.</param>
/// <param name="transposeB">To transpose matrix B or not.</param>
/// <param name="m">The number of rows of matrix op(A) and of the matrix C.</param>
/// <param name="n">The number of columns of matrix op(B) and of the matrix C.</param>
/// <param name="k">The number of columns of matrix op(A) and the of the matrix op(B).</param>
/// <param name="alpha">The value to scale the matrix A with.</param>
/// <param name="a">The matrix A.</param>
/// <param name="b">The matrix B.</param>
/// <param name="beta">The value to scale the matrix B with.</param>
/// <param name="c">The matrix C.</param>
public static void Gemm(Transpose transposeA, Transpose transposeB, int m, int n, int k, double alpha,
double[] a, double[] b, double beta, double[] c) {}
</pre><br />The matrices are stored in <a href="http://en.wikipedia.org/wiki/Row-major_order#Column-major_order" class="externalLink">column-major arrays<span class="externalLinkIcon"></span></a>.<br /><br /><b>Prizes:</b><br />1st place - $1,500<br />2nd place - $500<br /><br /><b>Rules:</b>
<ul><li>Entries will be judged based on speed*, accuracy, and elegance. The Math.NET team will select the winner based on these three criteria.</li>
<li>To be eligible for the 1st price, your code must be on average, across different platforms and number of CPU cores, be 25% faster the current Math.NET Numerics implementation. That is, entries that are not at least 25% faster will only be eligible for the 2nd place prize.</li>
<li>Submissions should be emailed to <a href="mailto:marcus@cuda.net" class="externalLink">marcus@cuda.net<span class="externalLinkIcon"></span></a> and the submission should be announced in the discussion forum (<b>DO NOT</b> post your code to the forum). Contestants should use the benchmark harness (see downloads) to test their code. Only the GEMM implementation needs to be submitted.</li>
<li>Submissions must be received by June 30, 2011. The winner will announced by July 31, 2011.</li>
<li>Submissions must be written in C#.</li>
<li>Any use of threads must use the MathNet.Numerics.Threading.CommonParallel class in <a href="http://mathnetnumerics.codeplex.com/" class="externalLink">Math.NET Numerics<span class="externalLinkIcon"></span></a>. Contestants may modify the CommonParallel class but must also submit those changes.</li>
<li>Submissions should be original work and the submitter should own the complete copyright to the code (<b>DO NOT</b> submit someone else's code or a port someone else’s code). However, submissions can be based on the current Math.NET Numerics version.</li>
<li>The winner will be required to grant the Math.NET Project and to recipients of software distributed by the Math.NET Project a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare derivative works of, publicly display, publicly perform, sublicense, and distribute submission and such derivative works.</li>
<li>Payment will be made via PayPal (other arrangements might be possible). The winner is responsible for any transfer fees and taxes.</li>
<li>Math.NET reserves the right to modify the rules of the contest at anytime and reject any submission for any reason.</li></ul>
<br />*We are looking for code that performs well across different CPU architectures and scales with number of CPU cores. We'll be using both 32-bit and 64-bit versions of the Microsoft .NET 4.0 runtime for benchmarking.<br /></div><div class="ClearBoth"></div>cudaMon, 02 May 2011 10:54:51 GMTUpdated Wiki: Home 20110502105451A