<!--

-->
<!--

-->
<!DOCTYPE html>
<html lang="en">
  <!--

-->

<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">

  <title>SystemML 1.1.0 Release Notes</title>
  
  <meta name="description" content="Project Release Notes"> 
  <meta name="author" content="Apache SystemDS">

  <!-- Enable responsive viewport -->
  <meta name="HandheldFriendly" content="True">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">

  <!-- You can use Open Graph tags to customize link previews.
  Learn more: https://developers.facebook.com/docs/sharing/webmasters -->
  <meta property="og:url" content="https://systemds.apache.org/" />
  <meta property="og:type" content="website" />
  <meta property="og:title" content="SystemML 1.1.0 Release Notes" />
  <meta property="og:description" content="Apache SystemDS is an open source ML system for the end-to-end data science lifecycle" />
  <meta property="og:image" content="" />

  <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
  <!--[if lt IE 9]>
  <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
  <![endif]-->

  <!-- Le styles -->
  <link rel="stylesheet" href="/assets/css/main.css">

  <!-- favicons -->
  <link rel="shortcut icon" href="/assets/img/favicon.png">
</head> <!-- META -->
  <body class="vcard">
    <!--

-->
<header class="site-header site-header--not-home">
  <h1 class="logo"><a class="url" href="/"><i class="logo-mark"></i><span class="fn org">Apache SystemDS<sup
          id="trademark">&trade;</sup></span></a></h1>
  <nav class="main-nav">
    <ul>
      
      <li role="presentation">
        
        
        <a href="/download" target="_self">Download</a>
        
      </li>
      
      <li role="presentation">
        
        
        <a href="/get-started" target="_self">Get Started</a>
        
      </li>
      
      <li role="presentation">
        
        <a class="nav-link--hover">Docs <i class="icon icon-chevron-down"></i></a>
        <ul>
          
          
          <li><a href="https://apache.github.io/systemds/" target="_blank">latest</a></li>
          
          
          <li><a href="https://systemds.apache.org/docs/3.2.0/" target="_blank">3.2.0 (stable)</a></li>
          
          
          <li><a href="https://systemds.apache.org/release-notes/systemds-release-notes-3.2.0" target="_blank">Release Notes 3.2.0</a></li>
          
        </ul>
        
      </li>
      
      <li role="presentation">
        
        <a class="nav-link--hover">Community <i class="icon icon-chevron-down"></i></a>
        <ul>
          
          
          <li><a href="/community" target="_self">Get Involved</a></li>
          
          
          <li><a href="https://issues.apache.org/jira/browse/SYSTEMDS" target="_blank">Issue Tracker</a></li>
          
          
          <li><a href="https://github.com/apache/systemds" target="_blank">Source Code</a></li>
          
          
          <li><a href="https://github.com/apache/systemds-website" target="_blank">Website Source Code</a></li>
          
        </ul>
        
      </li>
      
      <li role="presentation">
        
        <a class="nav-link--hover">Apache <i class="icon icon-chevron-down"></i></a>
        <ul>
          
          
          <li><a href="https://www.apache.org/foundation/how-it-works" target="_blank">Apache Software Foundation</a></li>
          
          
          <li><a href="https://www.apache.org/licenses/" target="_blank">Apache License</a></li>
          
          
          <li><a href="https://www.apache.org/foundation/sponsorship" target="_blank">Sponsorship</a></li>
          
          
          <li><a href="https://www.apache.org/foundation/thanks" target="_blank">Thanks</a></li>
          
          
          <li><a href="/privacy-policy" target="_self">Privacy Policy</a></li>
          
          
          <li><a href="/security" target="_self">Security</a></li>
          
        </ul>
        
      </li>
      
    </ul>
  </nav>
</header> <!-- GLOBAL HEADER -->
    <!--

-->
<!--

-->
<div>
  <!--

-->

<section class="full-stripe full-stripe--subpage-header clear-header">
  <div class="ml-container ml-container--horizontally-center">
    <div class="col col-12 content-group content-group--center-content content-group--center-align">
      <h1>Apache SystemDS<sup id="trademark">&trade;</sup> 1.1.0 Release Notes</h1>
    </div>
  </div>
</section>

<section class="full-stripe full-stripe--alternate">
  <div class="ml-container">
    <div class="col col-12 content-group content-group--medium-bottom-margin">

      <p>The Apache SystemML 1.1.0 release was approved on March 28, 2018. The release includes enhancements, features, and additions as listed below.</p>

      <h3 id="new-builtin-functionsoperations">New Builtin Functions/Operations</h3>
      <ul>
        <li><code class="language-plaintext highlighter-rouge">ifelse</code></li>
        <li><code class="language-plaintext highlighter-rouge">assert</code></li>
        <li>Deep learning builtin functions: <code class="language-plaintext highlighter-rouge">avg_pool</code>, <code class="language-plaintext highlighter-rouge">avg_pool_backward</code></li>
        <li>Second-order <code class="language-plaintext highlighter-rouge">eval</code></li>
        <li>Accumulator operator +=</li>
        <li>Bitwise operators not, and, or, xor, &amp; LShift, Rshift</li>
        <li>Logical operator support over matrices AND/OR/NOT/XOR</li>
      </ul>

      <h3 id="additional-layers-in-the-nn-library">Additional Layers in the NN library</h3>
      <ul>
        <li>Average pooling</li>
        <li>Upsampling</li>
        <li>Low-rank fully connected</li>
      </ul>

      <h3 id="new-capabilitiesfeatures">New Capabilities/Features</h3>
      <ul>
        <li>Dense matrix blocks &gt;16GB, and operations</li>
        <li>Enable additional ParFor result aggregation operations</li>
        <li>UDFs callable in expressions</li>
        <li>Zero rows/columns matrices and updated operations such as removeEmpty</li>
        <li>Matrix-matrix multiplication over compressed matrices</li>
        <li>Extended Caffe2DML and Keras2DML APIs</li>
      </ul>

      <h3 id="compiler--runtime">Compiler &amp; Runtime</h3>
      <ul>
        <li>Use common thread pool</li>
        <li>Single-precision support for native conv2d and mm operations</li>
        <li>Improved nnz maintenance, runtime propogation and memory management</li>
        <li>Robustness for matrices with larger than int dimensions</li>
        <li>[Experimental] Codegen extensions: operation support, extended optimizer, see SYSTEMML-2065</li>
      </ul>

      <h3 id="performance-improvements">Performance Improvements</h3>
      <ul>
        <li>sparse left indexing, sparse reshape, ultra-sparse transpose, ultra-sparse rand, binary in-place operations, sparse relu backward, maxpooling, sparse im2col, ultra-sparse conv2d, read of short-wide sparse matrices, avoid unnecessary evictions, lock-free statistics maintenance, spark cpmm, spark aggregates, spark reshape, spark binary ops, etc.</li>
      </ul>

      <h3 id="bug-fixes">Bug Fixes</h3>
      <ul>
        <li>in APIs, performance, optimizer, runtime, GPU backend, Spark backend</li>
      </ul>

      <h3 id="deprecate">Deprecate</h3>
      <ul>
        <li>Support for Spark 2.1 / 2.2 (make switch to newer ANTLR version)</li>
      </ul>

      <h3 id="jira-release-notes"><a href="https://issues.apache.org/jira/secure/ReleaseNote.jspa?projectId=12319522&amp;version=12342282">JIRA release notes</a></h3>
    </div></div></section>

</div>

 
    <!--

-->
<footer class="site-footer">
  <div class="ml-container ml-container--horizontally-center">
    <div class="footer-col-wrapper">
      <div style="margin-top: 20px; margin-bottom: 20px;">
        <a href="https://www.apache.org"><img src="/assets/img/apache-foundation-logo.png" alt="Apache Incubator" /></a>
      </div>
      <!--Footer copyright year update credit: http://updateyourfooter.com/-->
      <div>
        Copyright &copy; 2015
        <script>new Date().getFullYear() > 2015 && document.write("-" + new Date().getFullYear());</script>
        <a href="https://www.apache.org">The Apache Software Foundation</a>.
        Licensed under the <a href="https://www.apache.org/licenses/LICENSE-2.0">Apache License, Version 2.0</a>.
        <br>
        Apache and the Apache Feather logo are trademarks of The Apache Software Foundation.
      </div>
    </div>
  </div>
</footer> <!-- GLOBAL FOOTER-->
    <script src="assets/js/bundle.min.js"></script>
  </body>
</html>

