<!--

-->
<!--

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

-->

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

  <title>Documentation</title>
  
  <meta name="description" content="Project Documentation Page"> 
  <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="Documentation" />
  <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>
  <!--

-->

<!-- Hero  -->
<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> Documentation</h1>
    </div>
  </div>
</section>
<!-- Publish website test -->
<section class="full-stripe full-stripe--alternate hero">
  <div class="ml-container ml-container--three-column">
    <div class="col col-4">
      <p>Documentation such as programming guides, reference guides, and API docs is available for SystemDS below:</p>
      <a class="button button-primary" href="https://apache.github.io/systemds/">Latest</a>
      <p></p>
      <a class="button button-primary" href="docs/3.2.0/index">3.2.0</a>
      <a class="button button-primary" href="release-notes/systemds-release-notes-3.2.0">ReleaseNotes</a>
    </div>
    <div class="col col-4">
      <p>each released version of SystemML/DS:</p>
      <ul>
        <li><a href="docs/3.1.0/index">3.1.0</a>, <a href="release-notes/systemds-release-notes-3.1.0">ReleaseNotes</a></li>
        <li><a href="docs/3.0.0/index">3.0.0</a>, <a href="release-notes/systemds-release-notes-3.0.0">ReleaseNotes</a></li>
        <li><a href="docs/2.2.2/index">2.2.2</a>, <a href="release-notes/systemds-release-notes-2.2.2">ReleaseNotes</a></li>
        <li><a href="docs/2.1.0/index">2.1.0</a>, <a href="release-notes/systemds-release-notes-2.1.0">ReleaseNotes</a></li>
        <li><a href="docs/2.0.0/index">2.0.0</a>, <a href="release-notes/systemds-release-notes-2.0.0">ReleaseNotes</a></li>
        <li><a href="docs/1.2.0/index">1.2.0</a>, <a href="release-notes/systemml-release-notes-1.2.0">ReleaseNotes</a></li>
        <li><a href="docs/1.1.0/index">1.1.0</a>, <a href="release-notes/systemml-release-notes-1.1.0">ReleaseNotes</a></li>
        <li><a href="docs/1.0.0/index">1.0.0</a>, <a href="release-notes/systemml-release-notes-1.0.0">ReleaseNotes</a></li>
        <li><a href="docs/0.15.0/index">0.15.0</a>, <a href="release-notes/systemml-release-notes-0.15.0">ReleaseNotes</a></li>
        <li><a href="docs/0.14.0/index">0.14.0</a>, <a href="release-notes/systemml-release-notes-0.14.0-incubating">ReleaseNotes</a></li>
        <li><a href="docs/0.13.0/index">0.13.0</a>, <a href="release-notes/systemml-release-notes-0.13.0-incubating">ReleaseNotes</a></li>
        <li><a href="docs/0.12.0/index">0.12.0</a>, <a href="release-notes/systemml-release-notes-0.12.0-incubating">ReleaseNotes</a></li>
      </ul>
    </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>

