<!DOCTYPE html>

<!---
  Licensed to the Apache Software Foundation (ASF) under one
  or more contributor license agreements.  See the NOTICE file
  distributed with this work for additional information
  regarding copyright ownership.  The ASF licenses this file
  to you under the Apache License, Version 2.0 (the
  "License"); you may not use this file except in compliance
  with the License.  You may obtain a copy of the License at
    http://www.apache.org/licenses/LICENSE-2.0
  Unless required by applicable law or agreed to in writing,
  software distributed under the License is distributed on an
  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
  KIND, either express or implied.  See the License for the
  specific language governing permissions and limitations
  under the License.
-->

<html lang=" en"><head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link href="/versions/master/assets/img/mxnet-icon.png" rel="icon" type="image/png"><!-- Begin Jekyll SEO tag v2.6.1 -->
<title>Get Started | Apache MXNet</title>
<meta name="generator" content="Jekyll v4.0.0" />
<meta property="og:title" content="Get Started" />
<meta property="og:locale" content="en_US" />
<meta name="description" content="A flexible and efficient library for deep learning." />
<meta property="og:description" content="A flexible and efficient library for deep learning." />
<link rel="canonical" href="https://mxnet.apache.org/versions/master/get_started/" />
<meta property="og:url" content="https://mxnet.apache.org/versions/master/get_started/" />
<meta property="og:site_name" content="Apache MXNet" />
<script type="application/ld+json">
{"url":"https://mxnet.apache.org/versions/master/get_started/","headline":"Get Started","description":"A flexible and efficient library for deep learning.","@type":"WebPage","@context":"https://schema.org"}</script>
<!-- End Jekyll SEO tag -->
<link rel="stylesheet" href="/versions/master/assets/docsearch.min.css" /><link rel="stylesheet" href="/versions/master/assets/main.css"><link type="application/atom+xml" rel="alternate" href="https://mxnet.apache.org/versions/master/feed.xml" title="Apache MXNet" /><!-- Matomo -->
<script>
  var _paq = window._paq = window._paq || [];
  /* tracker methods like "setCustomDimension" should be called before "trackPageView" */
  /* We explicitly disable cookie tracking to avoid privacy issues */
  _paq.push(['disableCookies']);
  _paq.push(['trackPageView']);
  _paq.push(['enableLinkTracking']);
  (function() {
    var u="https://analytics.apache.org/";
    _paq.push(['setTrackerUrl', u+'matomo.php']);
    _paq.push(['setSiteId', '23']);
    var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
    g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
  })();
</script>
<!-- End Matomo Code -->

<script src="/versions/master/assets/js/jquery-3.3.1.min.js"></script>
    <script src="/versions/master/assets/js/docsearch.min.js"></script><script src="/versions/master/assets/js/globalSearch.js" defer></script>
  <script src="/versions/master/assets/js/clipboard.js" defer></script>
  <script src="/versions/master/assets/js/copycode.js" defer></script></head>
<body><header class="site-header" role="banner">

  <script>
    $(document).ready(function () {

      // HEADER OPACITY LOGIC

      function opacity_header() {
        var value = "rgba(4,140,204," + ($(window).scrollTop() / 300 + 0.4) + ")"
        $('.site-header').css("background-color", value)
      }

      $(window).scroll(function () {
        opacity_header()
      })
      opacity_header();

      // MENU SELECTOR LOGIC
      $('.page-link').each( function () {
        if (window.location.href.includes(this.href)) {
          $(this).addClass("page-current");
        }
      });
    })
  </script>
  <div class="wrapper">
    <a class="site-title" rel="author" href="/versions/master/"><img
            src="/versions/master/assets/img/mxnet_logo.png" class="site-header-logo"></a>
    <nav class="site-nav">
      <input type="checkbox" id="nav-trigger" class="nav-trigger"/>
      <label for="nav-trigger">
          <span class="menu-icon">
            <svg viewBox="0 0 18 15" width="18px" height="15px">
              <path d="M18,1.484c0,0.82-0.665,1.484-1.484,1.484H1.484C0.665,2.969,0,2.304,0,1.484l0,0C0,0.665,0.665,0,1.484,0 h15.032C17.335,0,18,0.665,18,1.484L18,1.484z M18,7.516C18,8.335,17.335,9,16.516,9H1.484C0.665,9,0,8.335,0,7.516l0,0 c0-0.82,0.665-1.484,1.484-1.484h15.032C17.335,6.031,18,6.696,18,7.516L18,7.516z M18,13.516C18,14.335,17.335,15,16.516,15H1.484 C0.665,15,0,14.335,0,13.516l0,0c0-0.82,0.665-1.483,1.484-1.483h15.032C17.335,12.031,18,12.695,18,13.516L18,13.516z"/>
            </svg>
          </span>
      </label>
      <div class="gs-search-border">
        <div id="gs-search-icon"></div>
        <form id="global-search-form">
          <input id="global-search" type="text" title="Search" placeholder="Search" />
          <div id="global-search-dropdown-container">
            <button class="gs-current-version btn" type="button" data-toggle="dropdown">
                <span id="gs-current-version-label">master</span>
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.9.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
          <span id="global-search-close">x</span>
        </form>
      </div>
      <div class="trigger">
        <div id="global-search-mobile-border">
          <div id="gs-search-icon-mobile"></div>
          <input id="global-search-mobile" placeholder="Search..." type="text"/>
          <div id="global-search-dropdown-container-mobile">
            <button class="gs-current-version-mobile btn" type="button" data-toggle="dropdown">
                <svg class="gs-dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                    <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                </svg>
            </button>
            <ul class="gs-opt-group gs-version-dropdown-mobile">
              
                
                  <li class="gs-opt gs-versions active">master</li>
                
              
                
                  <li class="gs-opt gs-versions">1.9.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.8.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.7.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.6.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.5.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.4.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.3.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.2.1</li>
                
              
                
                  <li class="gs-opt gs-versions">1.1.0</li>
                
              
                
                  <li class="gs-opt gs-versions">1.0.0</li>
                
              
                
                  <li class="gs-opt gs-versions">0.12.1</li>
                
              
                
                  <li class="gs-opt gs-versions">0.11.0</li>
                
              
            </ul>
        </div>
        </div>
        <a class="page-link" href="/versions/master/get_started">Get Started</a>
        <a class="page-link" href="/versions/master/features">Features</a>
        <a class="page-link" href="/versions/master/ecosystem">Ecosystem</a>
        <a class="page-link" href="/versions/master/api">Docs & Tutorials</a>
        <a class="page-link" href="/versions/master/trusted_by">Trusted By</a>
        <a class="page-link" href="https://github.com/apache/incubator-mxnet">GitHub</a>
        <div class="dropdown" style="min-width:100px">
          <span class="dropdown-header">Apache
            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
          </span>
          <div class="dropdown-content" style="min-width:250px">
            <a href="https://www.apache.org/foundation/">Apache Software Foundation</a>
            <a href="https://incubator.apache.org/">Apache Incubator</a>
            <a href="https://www.apache.org/licenses/">License</a>
            <a href="/versions/master/api/faq/security.html">Security</a>
            <a href="https://privacy.apache.org/policies/privacy-policy-public.html">Privacy</a>
            <a href="https://www.apache.org/events/current-event">Events</a>
            <a href="https://www.apache.org/foundation/sponsorship.html">Sponsorship</a>
            <a href="https://www.apache.org/foundation/thanks.html">Thanks</a>
          </div>
        </div>
        <div class="dropdown">
          <span class="dropdown-header">master
            <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true"><path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path></svg>
          </span>
          <div class="dropdown-content">
            
              
                <a class="dropdown-option-active" href="/">master</a>
              
            
              
                <a href="/versions/1.9.1/">1.9.1</a>
              
            
              
                <a href="/versions/1.8.0/">1.8.0</a>
              
            
              
                <a href="/versions/1.7.0/">1.7.0</a>
              
            
              
                <a href="/versions/1.6.0/">1.6.0</a>
              
            
              
                <a href="/versions/1.5.0/">1.5.0</a>
              
            
              
                <a href="/versions/1.4.1/">1.4.1</a>
              
            
              
                <a href="/versions/1.3.1/">1.3.1</a>
              
            
              
                <a href="/versions/1.2.1/">1.2.1</a>
              
            
              
                <a href="/versions/1.1.0/">1.1.0</a>
              
            
              
                <a href="/versions/1.0.0/">1.0.0</a>
              
            
              
                <a href="/versions/0.12.1/">0.12.1</a>
              
            
              
                <a href="/versions/0.11.0/">0.11.0</a>
              
            
          </div>
        </div>
      </div>
    </nav>
  </div>
</header>
<main class="page-content" aria-label="Content">
    <script>

</script>
<article class="post">

    <header class="post-header wrapper">
        <h1 class="post-title">Get Started</h1>
        <h3></h3><a style="float:left; margin-top:20px" href="/versions/master/api/python/docs/tutorials" class="btn btn-action">Apache MXNet Tutorials
            <span class="span-accented">›</span></a></header>

    <div class="post-content">
        <div class="wrapper">
            <!--- Licensed to the Apache Software Foundation (ASF) under one -->
<!--- or more contributor license agreements.  See the NOTICE file -->
<!--- distributed with this work for additional information -->
<!--- regarding copyright ownership.  The ASF licenses this file -->
<!--- to you under the Apache License, Version 2.0 (the -->
<!--- "License"); you may not use this file except in compliance -->
<!--- with the License.  You may obtain a copy of the License at -->

<!---   http://www.apache.org/licenses/LICENSE-2.0 -->

<!--- Unless required by applicable law or agreed to in writing, -->
<!--- software distributed under the License is distributed on an -->
<!--- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -->
<!--- KIND, either express or implied.  See the License for the -->
<!--- specific language governing permissions and limitations -->
<!--- under the License. -->

</div>
<div class="get-started-from-source">
<div class="wrapper">
    <h2>Build and install Apache MXNet (incubating) from source</h2>
    <p>
        To build and install Apache MXNet from the official Apache Software Foundation
        signed source code please follow our <a href="/get_started/build_from_source">Building From Source</a> guide.
    </p>
    <p>
        The signed source releases are available <a href="/get_started/download">here</a>
    </p>
</div>
</div>

<script>
    /** Defaults **/
    /** See options.js for the full ugly script **/
    var versionSelect = defaultVersion = 'v1.9.1';
    var platformSelect = 'linux';
    var languageSelect = 'python';
    var processorSelect = 'cpu';
    var environSelect = 'pip';
</script>
<script src="/versions/master/assets/js/options.js"></script>

<div class="install-selector">
    <h2>Platform and use-case specific instructions for using Apache MXNet</h2>
    <p>
        Please indicate your preferred configuration below to see specific instructions.
    </p>
    <br>
    <br>
    <div class="install-widget">
        <div class="row">
            <div class="col-3 install-left">
                <span>MXNet Version</span>
            </div>
            <div class="col-9 install-right">
                <div class="dropdown" id="version-dropdown-container">
                    <button class="current-version dropbtn btn" type="button" data-toggle="dropdown">
                        v1.9.1
                        <svg class="dropdown-caret" viewBox="0 0 32 32" class="icon icon-caret-bottom" aria-hidden="true">
                            <path class="dropdown-caret-path" d="M24 11.305l-7.997 11.39L8 11.305z"></path>
                        </svg>
                    </button>
                    <ul class="opt-group version-dropdown">
                        <li class="opt active versions"><a href="#">v1.9.1</a></li>
                        <li class="opt versions"><a href="#">v1.8.0</a></li>
                        <li class="opt versions"><a href="#">v1.7.0</a></li>
                        <li class="opt versions"><a href="#">v1.6.0</a></li>
                        <li class="opt versions"><a href="#">v1.5.1</a></li>
                        <li class="opt versions"><a href="#">v1.4.1</a></li>
                        <li class="opt versions"><a href="#">v1.3.1</a></li>
                        <li class="opt versions"><a href="#">v1.2.1</a></li>
                        <li class="opt versions"><a href="#">v1.1.0</a></li>
                        <li class="opt versions"><a href="#">v1.0.0</a></li>
                        <li class="opt versions"><a href="#">v0.12.1</a></li>
                        <li class="opt versions"><a href="#">v0.11.0</a></li>
                    </ul>
                </div>
            </div>
        </div>

        <!-- START - OS Menu -->
        <div class="row">
            <div class="col-3 install-left">
                <span>OS / Platform</span>
            </div>
            <div class="col-9 install-right">
                <div class="btn-group opt-group" role="group">
                    <button type="button" class="btn btn-default opt active platforms">Linux</button>
                    <button type="button" class="btn btn-default opt platforms">MacOS</button>
                    <button type="button" class="btn btn-default opt platforms">Windows</button>
                    <button type="button" class="btn btn-default opt platforms">Cloud</button>
                    <button type="button" class="btn btn-default opt platforms">Devices</button>
                </div>
            </div>
        </div>

        <!-- START - Language Menu -->
        <div class="linux macos windows">
            <div class="row">
                <div class="col-3 install-left">
                    <span>Language</span>
                </div>
                <div class="col-9 install-right">
                    <div class="btn-group opt-group" role="group">
                        <button type="button" class="btn btn-default opt active languages">Python</button>
                        <button type="button" class="btn btn-default opt languages">Scala</button>
                        <button type="button" class="btn btn-default opt languages">Java</button>
                        <button type="button" class="btn btn-default opt languages">Clojure</button>
                        <button type="button" class="btn btn-default opt languages">R</button>
                        <button type="button" class="btn btn-default opt languages">Julia</button>
                        <button type="button" class="btn btn-default opt languages">Perl</button>
                        <button type="button" class="btn btn-default opt languages">Cpp</button>
                    </div>
                </div>
            </div>
        </div>



        <!-- No CPU GPU for other Devices -->
        <div class="linux macos windows cloud">
            <div class="python cloud devices">
                <div class="row">
                    <div class="col-3 install-left">
                        <span>GPU / CPU</span>
                    </div>
                    <div class="col-9 install-right">
                        <div class="btn-group opt-group" role="group">
                            <button type="button" class="btn btn-default processors opt active">GPU</button>
                            <button type="button" class="btn btn-default processors opt">CPU</button>
                        </div>
                    </div>
                </div>
            </div>
        </div>

        <!-- other devices -->
        <div class="devices">
            <div class="row">
                <div class="col-3 install-left">
                    <span>Device</span>
                </div>
                <div class="col-9 install-right">
                    <div class="btn-group opt-group" role="group">
                        <button type="button" class="btn btn-default iots opt active">Raspberry Pi</button>
                        <button type="button" class="btn btn-default iots opt">NVIDIA Jetson</button>
                    </div>
                </div>
            </div>
        </div>

        <!-- Python Distribution -->
        <div class="linux macos windows">
            <div class="python">
                <div class="cpu gpu">
                    <div class="row">
                        <div class="col-3 install-left">
                            <span>Distribution</span>
                        </div>
                        <div class="col-9 install-right">
                            <div class="btn-group opt-group" role="group">
                                <button type="button" class="btn btn-default environs opt active">Pip</button>
                                <button type="button" class="btn btn-default environs opt">Docker</button>
                                <button type="button" class="btn btn-default environs opt">Build from Source</button>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>

    </div>


<!-- END - Main Menu -->
    <br>
    <br>
    <br>
    <div class="install-content">
        <div class="linux">
            <div class="python">
                 <!-- START - Linux Python CPU Installation Instructions -->
                <div class="cpu">
                    <div class="pip">
                        <p><strong>WARNING</strong>: the following PyPI package names are provided for your convenience but
they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. The packages linked here contain GPL GCC
Runtime Library components. Like all Apache Releases, the official Apache MXNet
(incubating) releases consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p>Run the following command:</p>

<div class="v1-9-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</code></pre></figure>

</div>
<p><!-- End of v1-9-1 --></p>

<div class="v1-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.8.0.post0</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.8.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.8.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-8-0 --></p>

<div class="v1-7-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.7.0.post2</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.7.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.7.0</code></pre></figure>

</div>
<p><!-- End of v1-7-0 --></p>

<div class="v1-6-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.6.0</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.6.0</code></pre></figure>

</div>
<p><!-- End of v1-6-0 --></p>

<div class="v1-5-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.5.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.5.1</code></pre></figure>

</div>
<p><!-- End of v1-5-1 --></p>

<div class="v1-4-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.4.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.4.1</code></pre></figure>

</div>
<p><!-- End of v1-4-1 --></p>
<div class="v1-3-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.3.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.3.1</code></pre></figure>

</div>
<p><!-- End of v1-3-1 --></p>
<div class="v1-2-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.2.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.2.1</code></pre></figure>

</div>
<p><!-- End of v1-2-1 --></p>

<div class="v1-1-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.1.0</code></pre></figure>

</div>
<p><!-- End of v1-1-0--></p>

<div class="v1-0-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.0.0</code></pre></figure>

</div>
<p><!-- End of v1-0-0--></p>

<div class="v0-12-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.1</code></pre></figure>

For MXNet 0.12.0:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.0</code></pre></figure>

</div>
<p><!-- End of v0-12-1--></p>

<div class="v0-11-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.11.0</code></pre></figure>

</div>
<p><!-- End of v0-11-0--></p>

<p><br /></p>

<p>You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.</p>

<div style="text-align: center">
    <img src="/versions/master/assets/img/pip-packages-1.9.1.png" alt="pip packages" />
</div>

<p><strong>NOTES:</strong></p>

<p><em>mxnet-cu101</em> means the package is built with CUDA/cuDNN and the CUDA version is
10.1.</p>

<p>All MKL pip packages are experimental prior to version 1.3.0.</p>


                    </div> <!-- End of pip -->

                    <div class="docker">
                        <p><strong>WARNING</strong>: the following links and names of binary distributions are provided for
your convenience but they point to packages that are <em>not</em> provided nor endorsed
by the Apache Software Foundation. As such, they might contain software
components with more restrictive licenses than the Apache License and you’ll
need to decide whether they are appropriate for your usage. Like all Apache
Releases, the official Apache MXNet (incubating) releases consist of source code
only and are found at
the <a href="https://mxnet.apache.org/get_started/download">Download page</a>.</p>

<p>Docker images with <em>MXNet</em> are available at <a href="https://hub.docker.com/r/mxnet/">DockerHub</a>.
After you installed Docker on your machine, you can use them via:</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker pull mxnet/python</code></pre></figure>

<p>You can list docker images to see if mxnet/python docker image pull was successful.</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker images <span class="c"># Use sudo if you skip Step 2</span>

REPOSITORY TAG IMAGE ID CREATED SIZE
mxnet/python latest 00d026968b3c 3 weeks ago 1.41 GB</code></pre></figure>

<p>You can then <a href="/get_started/validate_mxnet.html">validate the installation</a>.</p>

                    </div> <!-- END of docker -->

                    <div class="build-from-source">
                        <p>Please follow the build from source instructions linked above.</p>

                    </div><!-- END of build from source -->

                </div><!-- END of CPU -->
                <!-- END - Linux Python CPU Installation Instructions -->

                <!-- START - Linux Python GPU Installation Instructions -->
                <div class="gpu">
                    <div class="pip">
                        <p><strong>WARNING</strong>: the following PyPI package names are provided for your convenience but
they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. The packages linked here contain
proprietary parts of the NVidia CUDA SDK and GPL GCC Runtime Library components.
Like all Apache Releases, the official Apache MXNet (incubating) releases
consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p><strong>PREREQUISITES</strong>: <a href="https://developer.nvidia.com/cuda-downloads">CUDA</a> should be installed first. Starting from version 1.8.0, <a href="https://developer.nvidia.com/cudnn">CUDNN</a> and <a href="https://developer.nvidia.com/nccl">NCCL</a> should be installed as well.</p>

<p>Run the following command:</p>

<div class="v1-9-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102</code></pre></figure>

</div>
<p><!-- End of v1-9-1 --></p>

<div class="v1-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.8.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-8-0 --></p>

<div class="v1-7-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.7.0</code></pre></figure>

</div>
<p><!-- End of v1-7-0 --></p>

<div class="v1-6-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.6.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-6-0 --></p>

<div class="v1-5-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu101<span class="o">==</span>1.5.1</code></pre></figure>

</div>
<p><!-- End of v1-5-1 --></p>
<div class="v1-4-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu101<span class="o">==</span>1.4.1</code></pre></figure>

</div>
<p><!-- End of v1-4-1 --></p>
<div class="v1-3-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu92<span class="o">==</span>1.3.1</code></pre></figure>

</div>
<p><!-- End of v1-3-1--></p>
<div class="v1-2-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu92<span class="o">==</span>1.2.1</code></pre></figure>

</div>
<p><!-- End of v1-2-1--></p>

<div class="v1-1-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu91<span class="o">==</span>1.1.0</code></pre></figure>

</div>
<p><!-- End of v1-1-0--></p>

<div class="v1-0-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu90<span class="o">==</span>1.0.0</code></pre></figure>

</div>
<p><!-- End of v1-0-0--></p>

<div class="v0-12-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu90<span class="o">==</span>0.12.1</code></pre></figure>

</div>
<p><!-- End of v0-12-1--></p>

<div class="v0-11-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu80<span class="o">==</span>0.11.0</code></pre></figure>

</div>
<p><!-- End of v0-11-0--></p>

<p><br /></p>

<p>You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.</p>

<div style="text-align: center">
    <img src="/versions/master/assets/img/pip-packages-1.9.1.png" alt="pip packages" />
</div>

<p><strong>NOTES:</strong></p>

<p><em>mxnet-cu101</em> means the package is built with CUDA/cuDNN and the CUDA version is
10.1.</p>

<p>All MKL pip packages are experimental prior to version 1.3.0.</p>

<p><strong>Important:</strong> Make sure your installed CUDA (CUDNN/NCCL if applicable) version matches the CUDA version in the pip package.</p>

<p>Check your CUDA version with the following command:</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">nvcc <span class="nt">--version</span></code></pre></figure>

<p>You can either upgrade your CUDA install or install the MXNet package that supports your CUDA version.</p>

                    </div> <!-- END of pip -->

                    <div class="docker">
                        <p><strong>WARNING</strong>: the following links and names of binary distributions are provided for
your convenience but they point to packages that are <em>not</em> provided nor endorsed
by the Apache Software Foundation. As such, they might contain software
components with more restrictive licenses than the Apache License and you’ll
need to decide whether they are appropriate for your usage. The packages linked
here contain proprietary parts of the NVidia CUDA SDK and GPL GCC Runtime
Library components. Like all Apache Releases, the official Apache MXNet
(incubating) releases consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p>Docker images with <em>MXNet</em> are available at <a href="https://hub.docker.com/r/mxnet/">DockerHub</a>.</p>

<p>Please follow the <a href="https://github.com/NVIDIA/nvidia-docker/wiki">NVidia Docker installation
instructions</a> to enable the usage
of GPUs from the docker containers.</p>

<p>After you installed Docker on your machine, you can use them via:</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker pull mxnet/python:gpu <span class="c"># Use sudo if you skip Step 2</span></code></pre></figure>

<p>You can list docker images to see if mxnet/python docker image pull was successful.</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker images <span class="c"># Use sudo if you skip Step 2</span>

REPOSITORY TAG IMAGE ID CREATED SIZE
mxnet/python gpu 493b2683c269 3 weeks ago 4.77 GB</code></pre></figure>

<p>You can then <a href="/get_started/validate_mxnet.html">validate the installation</a>.</p>

                    </div> <!-- END of docker -->

                    <div class="build-from-source">
                         <p>Please follow the build from source instructions linked above.</p>

                    </div> <!-- END of build from source -->
                </div> <!-- END of GPU -->
            </div> <!-- END of Python -->
            <!-- END - Linux Python Installation Instructions -->


            <div class="r">
                <p>You will need to R v3.4.4+ and build MXNet from source. Please follow the
instructions linked above.</p>

            </div> <!-- END of R -->


            <div class="scala">
                <p>Prebuilt binaries distributed via Maven have been removed as they redistributed
Category-X binaries in violation of Apache Software Foundation (ASF) policies.
If you would like to help re-do the binary releases in an ASF-compliant manner,
please reach out via one of the <a href="https://mxnet.apache.org/community/contribute#mxnet-dev-communications">developer communications
channels</a>.
Until then, please follow the build from source instructions linked below.</p>

            </div> <!-- End of scala -->


            <div class="clojure">
                <p>Please refer to the <a href="https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package">MXNet-Clojure setup guide</a> for a detailed set of instructions to help you with the setup process that is required to use the Clojure dependency.</p>

            </div> <!-- End of clojure -->


            <div class="java">
                <p>Previously available binaries distributed via Maven have been removed as they
redistributed Category-X binaries in violation of Apache Software Foundation
(ASF) policies.</p>

<p>At this point in time, no third-party binary Java packages are available. Please
follow the build from source instructions linked above.</p>

            </div> <!-- End of java -->

            <div class="julia">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of julia -->

            <div class="perl">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of perl -->

            <div class="cpp">
                <p>To use the C++ package, build from source the <code>USE_CPP_PACKAGE=1</code> option. Please
refer to the build from source instructions linked above.</p>

            </div> <!-- END - C++-->
        </div> <!-- END - Linux -->


        <!-- START - MacOS Python CPU Installation Instructions -->

        <div class="macos">
            <div class="python">
                 <!-- START - MacOS Python CPU Installation Instructions -->
                <div class="cpu">
                    <div class="pip">
                        <p><strong>WARNING</strong>: the following PyPI package names are provided for your convenience but
they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. The packages linked here contain GPL GCC
Runtime Library components. Like all Apache Releases, the official Apache MXNet
(incubating) releases consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p>Run the following command:</p>

<div class="v1-9-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</code></pre></figure>

</div>
<p><!-- End of v1-9-1 --></p>

<div class="v1-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.8.0.post0</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.8.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.8.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-8-0 --></p>

<div class="v1-7-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.7.0.post2</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.7.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.7.0</code></pre></figure>

</div>
<p><!-- End of v1-7-0 --></p>

<div class="v1-6-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.6.0</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.6.0</code></pre></figure>

</div>
<p><!-- End of v1-6-0 --></p>

<div class="v1-5-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.5.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.5.1</code></pre></figure>

</div>
<p><!-- End of v1-5-1 --></p>

<div class="v1-4-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.4.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.4.1</code></pre></figure>

</div>
<p><!-- End of v1-4-1 --></p>
<div class="v1-3-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.3.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.3.1</code></pre></figure>

</div>
<p><!-- End of v1-3-1 --></p>
<div class="v1-2-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.2.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.2.1</code></pre></figure>

</div>
<p><!-- End of v1-2-1 --></p>

<div class="v1-1-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.1.0</code></pre></figure>

</div>
<p><!-- End of v1-1-0--></p>

<div class="v1-0-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.0.0</code></pre></figure>

</div>
<p><!-- End of v1-0-0--></p>

<div class="v0-12-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.1</code></pre></figure>

For MXNet 0.12.0:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.0</code></pre></figure>

</div>
<p><!-- End of v0-12-1--></p>

<div class="v0-11-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.11.0</code></pre></figure>

</div>
<p><!-- End of v0-11-0--></p>

<p><br /></p>

<p>You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.</p>

<div style="text-align: center">
    <img src="/versions/master/assets/img/pip-packages-1.9.1.png" alt="pip packages" />
</div>

<p><strong>NOTES:</strong></p>

<p><em>mxnet-cu101</em> means the package is built with CUDA/cuDNN and the CUDA version is
10.1.</p>

<p>All MKL pip packages are experimental prior to version 1.3.0.</p>


                    </div> <!-- End of pip -->

                    <div class="docker">
                        <p><strong>WARNING</strong>: the following links and names of binary distributions are provided for
your convenience but they point to packages that are <em>not</em> provided nor endorsed
by the Apache Software Foundation. As such, they might contain software
components with more restrictive licenses than the Apache License and you’ll
need to decide whether they are appropriate for your usage. Like all Apache
Releases, the official Apache MXNet (incubating) releases consist of source code
only and are found at
the <a href="https://mxnet.apache.org/get_started/download">Download page</a>.</p>

<p>Docker images with <em>MXNet</em> are available at <a href="https://hub.docker.com/r/mxnet/">DockerHub</a>.
After you installed Docker on your machine, you can use them via:</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker pull mxnet/python</code></pre></figure>

<p>You can list docker images to see if mxnet/python docker image pull was successful.</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>docker images <span class="c"># Use sudo if you skip Step 2</span>

REPOSITORY TAG IMAGE ID CREATED SIZE
mxnet/python latest 00d026968b3c 3 weeks ago 1.41 GB</code></pre></figure>

<p>You can then <a href="/get_started/validate_mxnet.html">validate the installation</a>.</p>

                    </div> <!-- END of docker -->

                    <div class="build-from-source">
                        <p>Please follow the build from source instructions linked above.</p>

                    </div><!-- END of build from source -->

                </div><!-- END of CPU -->
                <!-- END - MacOS Python CPU Installation Instructions -->

                <!-- START - MacOS Python GPU Installation Instructions -->
                <div class="gpu">
                    <div class="build-from-source">
                         <p>Please follow the build from source instructions linked above.</p>

                    </div> <!-- END of build from source -->
                </div> <!-- END of GPU -->
            </div> <!-- END of Python -->
            <!-- END - MacOS Python Installation Instructions -->


            <div class="r">
                <p>You will need to R v3.4.4+ and build MXNet from source. Please follow the
instructions linked above.</p>

            </div> <!-- END of R -->


            <div class="scala">
                <p>Prebuilt binaries distributed via Maven have been removed as they redistributed
Category-X binaries in violation of Apache Software Foundation (ASF) policies.
If you would like to help re-do the binary releases in an ASF-compliant manner,
please reach out via one of the <a href="https://mxnet.apache.org/community/contribute#mxnet-dev-communications">developer communications
channels</a>.
Until then, please follow the build from source instructions linked below.</p>

            </div> <!-- End of scala -->


            <div class="clojure">
                <p>Please refer to the <a href="https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package">MXNet-Clojure setup guide</a> for a detailed set of instructions to help you with the setup process that is required to use the Clojure dependency.</p>

            </div> <!-- End of clojure -->


            <div class="java">
                <p>Previously available binaries distributed via Maven have been removed as they
redistributed Category-X binaries in violation of Apache Software Foundation
(ASF) policies.</p>

<p>At this point in time, no third-party binary Java packages are available. Please
follow the build from source instructions linked above.</p>

            </div> <!-- End of java -->

            <div class="julia">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of julia -->

            <div class="perl">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of perl -->

            <div class="cpp">
                <p>To use the C++ package, build from source the <code>USE_CPP_PACKAGE=1</code> option. Please
refer to the build from source instructions linked above.</p>

            </div> <!-- END - C++-->
        </div> <!-- END - MacOS -->



        <div class="windows">
            <div class="python">
                 <!-- START - Windows Python CPU Installation Instructions -->
                <div class="cpu">
                    <div class="pip">
                        <p><strong>WARNING</strong>: the following PyPI package names are provided for your convenience but
they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. The packages linked here contain GPL GCC
Runtime Library components. Like all Apache Releases, the official Apache MXNet
(incubating) releases consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p>Run the following command:</p>

<div class="v1-9-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</code></pre></figure>

</div>
<p><!-- End of v1-9-1 --></p>

<div class="v1-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.8.0.post0</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.8.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.8.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-8-0 --></p>

<div class="v1-7-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.7.0.post2</code></pre></figure>

Start from 1.7.0 release, oneDNN(previously known as: MKL-DNN/DNNL) is enabled
in pip packages by default.

oneAPI Deep Neural Network Library (oneDNN) is an open-source cross-platform
performance library of basic building blocks for deep learning applications.
The library is optimized for Intel Architecture Processors, Intel Processor
Graphics and Xe architecture-based Graphics. Support for other architectures
such as Arm* 64-bit Architecture (AArch64) and OpenPOWER* Power ISA (PPC64) is
experimental.

oneDNN is intended for deep learning applications and framework developers
interested in improving application performance on Intel CPUs and GPUs, more
details can be found <a href="https://github.com/oneapi-src/oneDNN">here</a>.

You can find performance numbers in the
<a href="https://mxnet.apache.org/versions/1.7.0/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

To install native MXNet without oneDNN, run the following command:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-native<span class="o">==</span>1.7.0</code></pre></figure>

</div>
<p><!-- End of v1-7-0 --></p>

<div class="v1-6-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.6.0</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.6.0</code></pre></figure>

</div>
<p><!-- End of v1-6-0 --></p>

<div class="v1-5-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.5.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.5.1</code></pre></figure>

</div>
<p><!-- End of v1-5-1 --></p>

<div class="v1-4-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.4.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.4.1</code></pre></figure>

</div>
<p><!-- End of v1-4-1 --></p>
<div class="v1-3-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.3.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.3.1</code></pre></figure>

</div>
<p><!-- End of v1-3-1 --></p>
<div class="v1-2-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.2.1</code></pre></figure>

MKL-DNN enabled pip packages are optimized for Intel hardware. You can find
performance numbers in the
<a href="https://mxnet.apache.org/versions/1.6/api/faq/perf.html#intel-cpu">
MXNet tuning guide</a>.

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet-mkl<span class="o">==</span>1.2.1</code></pre></figure>

</div>
<p><!-- End of v1-2-1 --></p>

<div class="v1-1-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.1.0</code></pre></figure>

</div>
<p><!-- End of v1-1-0--></p>

<div class="v1-0-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>1.0.0</code></pre></figure>

</div>
<p><!-- End of v1-0-0--></p>

<div class="v0-12-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.1</code></pre></figure>

For MXNet 0.12.0:

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.12.0</code></pre></figure>

</div>
<p><!-- End of v0-12-1--></p>

<div class="v0-11-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span><span class="nv">mxnet</span><span class="o">==</span>0.11.0</code></pre></figure>

</div>
<p><!-- End of v0-11-0--></p>

<p><br /></p>

<p>You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.</p>

<div style="text-align: center">
    <img src="/versions/master/assets/img/pip-packages-1.9.1.png" alt="pip packages" />
</div>

<p><strong>NOTES:</strong></p>

<p><em>mxnet-cu101</em> means the package is built with CUDA/cuDNN and the CUDA version is
10.1.</p>

<p>All MKL pip packages are experimental prior to version 1.3.0.</p>


                    </div> <!-- End of pip -->

                    <div class="build-from-source">
                        <p>Please follow the build from source instructions linked above.</p>

                    </div><!-- END of build from source -->

                </div><!-- END of CPU -->
                <!-- END - Windows Python CPU Installation Instructions -->

                <!-- START - Windows Python GPU Installation Instructions -->
                <div class="gpu">
                    <div class="pip">
                        <p><strong>WARNING</strong>: the following PyPI package names are provided for your convenience but
they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. The packages linked here contain
proprietary parts of the NVidia CUDA SDK and GPL GCC Runtime Library components.
Like all Apache Releases, the official Apache MXNet (incubating) releases
consist of source code only and are found at the <a href="https://mxnet.apache.org/get_started/download">Download
page</a>.</p>

<p><strong>PREREQUISITES</strong>: <a href="https://developer.nvidia.com/cuda-downloads">CUDA</a> should be installed first. Starting from version 1.8.0, <a href="https://developer.nvidia.com/cudnn">CUDNN</a> and <a href="https://developer.nvidia.com/nccl">NCCL</a> should be installed as well.</p>

<p>Run the following command:</p>

<div class="v1-9-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102</code></pre></figure>

</div>
<p><!-- End of v1-9-1 --></p>

<div class="v1-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.8.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-8-0 --></p>

<div class="v1-7-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.7.0</code></pre></figure>

</div>
<p><!-- End of v1-7-0 --></p>

<div class="v1-6-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu102<span class="o">==</span>1.6.0.post0</code></pre></figure>

</div>
<p><!-- End of v1-6-0 --></p>

<div class="v1-5-1">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu101<span class="o">==</span>1.5.1</code></pre></figure>

</div>
<p><!-- End of v1-5-1 --></p>
<div class="v1-4-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu101<span class="o">==</span>1.4.1</code></pre></figure>

</div>
<p><!-- End of v1-4-1 --></p>
<div class="v1-3-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu92<span class="o">==</span>1.3.1</code></pre></figure>

</div>
<p><!-- End of v1-3-1--></p>
<div class="v1-2-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu92<span class="o">==</span>1.2.1</code></pre></figure>

</div>
<p><!-- End of v1-2-1--></p>

<div class="v1-1-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu91<span class="o">==</span>1.1.0</code></pre></figure>

</div>
<p><!-- End of v1-1-0--></p>

<div class="v1-0-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu90<span class="o">==</span>1.0.0</code></pre></figure>

</div>
<p><!-- End of v1-0-0--></p>

<div class="v0-12-1">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu90<span class="o">==</span>0.12.1</code></pre></figure>

</div>
<p><!-- End of v0-12-1--></p>

<div class="v0-11-0">

<figure class="highlight"><pre><code class="language-bash" data-lang="bash"><span class="nv">$ </span>pip <span class="nb">install </span>mxnet-cu80<span class="o">==</span>0.11.0</code></pre></figure>

</div>
<p><!-- End of v0-11-0--></p>

<p><br /></p>

<p>You can then <a href="/get_started/validate_mxnet.html">validate your MXNet installation</a>.</p>

<div style="text-align: center">
    <img src="/versions/master/assets/img/pip-packages-1.9.1.png" alt="pip packages" />
</div>

<p><strong>NOTES:</strong></p>

<p><em>mxnet-cu101</em> means the package is built with CUDA/cuDNN and the CUDA version is
10.1.</p>

<p>All MKL pip packages are experimental prior to version 1.3.0.</p>

<p><strong>Important:</strong> Make sure your installed CUDA (CUDNN/NCCL if applicable) version matches the CUDA version in the pip package.</p>

<p>Check your CUDA version with the following command:</p>

<figure class="highlight"><pre><code class="language-bash" data-lang="bash">nvcc <span class="nt">--version</span></code></pre></figure>

<p>You can either upgrade your CUDA install or install the MXNet package that supports your CUDA version.</p>

                    </div> <!-- END of pip -->

                    <div class="build-from-source">
                         <p>Please follow the build from source instructions linked above.</p>

                    </div> <!-- END of build from source -->
                </div> <!-- END of GPU -->
            </div> <!-- END of Python -->
            <!-- END - Windows Python Installation Instructions -->


            <div class="r">
                <p>You will need to R v3.4.4+ and build MXNet from source. Please follow the
instructions linked above.</p>

            </div> <!-- END of R -->


            <div class="scala">
                <p>Prebuilt binaries distributed via Maven have been removed as they redistributed
Category-X binaries in violation of Apache Software Foundation (ASF) policies.
If you would like to help re-do the binary releases in an ASF-compliant manner,
please reach out via one of the <a href="https://mxnet.apache.org/community/contribute#mxnet-dev-communications">developer communications
channels</a>.
Until then, please follow the build from source instructions linked below.</p>

            </div> <!-- End of scala -->


            <div class="clojure">
                <p>Please refer to the <a href="https://github.com/apache/incubator-mxnet/tree/master/contrib/clojure-package">MXNet-Clojure setup guide</a> for a detailed set of instructions to help you with the setup process that is required to use the Clojure dependency.</p>

            </div> <!-- End of clojure -->


            <div class="java">
                <p>Previously available binaries distributed via Maven have been removed as they
redistributed Category-X binaries in violation of Apache Software Foundation
(ASF) policies.</p>

<p>At this point in time, no third-party binary Java packages are available. Please
follow the build from source instructions linked above.</p>

            </div> <!-- End of java -->

            <div class="julia">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of julia -->

            <div class="perl">
                <p>Please follow the build from source instructions linked above.</p>

            </div> <!-- End of perl -->

            <div class="cpp">
                <p>To use the C++ package, build from source the <code>USE_CPP_PACKAGE=1</code> option. Please
refer to the build from source instructions linked above.</p>

            </div> <!-- END - C++-->
        </div> <!-- END - Windows -->


        <!-- START - Cloud Python Installation Instructions -->

        <div class="cloud">
            <div class="gpu">
                <p>MXNet is available on several cloud providers with GPU support. You can also
find GPU/CPU-hybrid support for use cases like scalable inference, or even
fractional GPU support with AWS Elastic Inference.</p>

<p><strong>WARNING</strong>: the following cloud provider packages are provided for your convenience
but they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. Like all Apache Releases, the official
Apache MXNet (incubating) releases consist of source code only and are found at
the <a href="https://mxnet.apache.org/get_started/download">Download page</a>.</p>

<ul>
  <li><strong>Alibaba</strong></li>
  <li><a href="https://docs.nvidia.com/ngc/ngc-alibaba-setup-guide/launching-nv-cloud-vm-console.html#launching-nv-cloud-vm-console">NVIDIA
VM</a></li>
  <li><strong>Amazon Web Services</strong></li>
  <li><a href="https://aws.amazon.com/sagemaker/">Amazon SageMaker</a> - Managed training and deployment of
MXNet models</li>
  <li><a href="https://aws.amazon.com/machine-learning/amis/">AWS Deep Learning AMI</a> - Preinstalled
Conda environments
for Python 2 or 3 with MXNet, CUDA, cuDNN, oneDNN, and AWS Elastic Inference</li>
  <li><a href="https://github.com/awslabs/dynamic-training-with-apache-mxnet-on-aws">Dynamic Training on
AWS</a> -
experimental manual EC2 setup or semi-automated CloudFormation setup</li>
  <li><a href="https://aws.amazon.com/marketplace/pp/B076K31M1S">NVIDIA VM</a></li>
  <li><strong>Google Cloud Platform</strong></li>
  <li><a href="https://console.cloud.google.com/marketplace/details/nvidia-ngc-public/nvidia_gpu_cloud_image">NVIDIA
VM</a></li>
  <li><strong>Microsoft Azure</strong></li>
  <li><a href="https://azuremarketplace.microsoft.com/en-us/marketplace/apps/nvidia.ngc_azure_17_11?tab=Overview">NVIDIA
VM</a></li>
  <li><strong>Oracle Cloud</strong></li>
  <li><a href="https://docs.cloud.oracle.com/iaas/Content/Compute/References/ngcimage.htm">NVIDIA VM</a></li>
</ul>

<p>All NVIDIA VMs use the <a href="https://ngc.nvidia.com/catalog/containers/nvidia:mxnet">NVIDIA MXNet Docker
container</a>.
Follow the <a href="https://ngc.nvidia.com/catalog/containers/nvidia:mxnet">container usage
instructions</a> found in
<a href="https://ngc.nvidia.com/">NVIDIA’s container repository</a>.</p>

            </div> <!-- END gpu -->

            <div class="cpu">
                <p>MXNet should work on any cloud provider’s CPU-only instances. Follow the Python
pip install instructions, Docker instructions, or try the following preinstalled
option.</p>

<p><strong>WARNING</strong>: the following cloud provider packages are provided for your convenience
but they point to packages that are <em>not</em> provided nor endorsed by the Apache
Software Foundation. As such, they might contain software components with more
restrictive licenses than the Apache License and you’ll need to decide whether
they are appropriate for your usage. Like all Apache Releases, the official
Apache MXNet (incubating) releases consist of source code only and are found at
the <a href="https://mxnet.apache.org/get_started/download">Download page</a>.</p>

<ul>
  <li><strong>Amazon Web Services</strong></li>
  <li><a href="https://aws.amazon.com/machine-learning/amis/">AWS Deep Learning AMI</a> - Preinstalled
Conda environments
for Python 2 or 3 with MXNet and oneDNN.</li>
</ul>


            </div> <!-- end cpu -->
        </div> <!-- END - Cloud Python Installation Instructions -->


        <!-- DEVICES -->
        <div class="devices">
            <div class="raspberry-pi">
                <p>MXNet supports running on ARM devices, such as the Raspberry PI.</p>

<p>These instructions will walk through how to build MXNet for the Raspberry Pi and
install the Python bindings for the library.</p>

<p>You can do a cross compilation build on your local machine (faster) or a native
build on-device (slower, but more foolproof).</p>

<p>The complete MXNet library and its requirements can take almost 200MB of RAM,
and loading large models with the library can take over 1GB of RAM. Because of
this, we recommend running MXNet on the Raspberry Pi 3 or an equivalent device
that has more than 1 GB of RAM and a Secure Digital (SD) card that has at least
4 GB of free memory.</p>

<h2 id="native-build-on-the-raspberry-pi">Native build on the Raspberry Pi</h2>

<p>To build MXNet directly on the Raspberry Pi device, you can mainly follow the
standard <a href="">Ubuntu setup</a>
instructions. However, skip the step of copying the <code>config/linux.cmake</code> to
<code>config.cmake</code> and instead run the <code>cmake</code> in the “Build MXNet core shared
library” step as follows:</p>

<p><code>
rm -rf build
mkdir -p build &amp;&amp; cd build
cmake \
  -DUSE_SSE=OFF \
  -DUSE_CUDA=OFF \
  -DUSE_BLAS=Open \
  -DUSE_OPENCV=ON \
  -DUSE_OPENMP=ON \
  -DUSE_SIGNAL_HANDLER=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -GNinja ..
ninja -j$(nproc)
</code></p>

<p>Some compilation units require memory close to 1GB, so it’s recommended that you
enable swap as explained below and be cautious about increasing the number of
jobs when building (-j). Executing these commands start the build process, which
can take up to a couple hours, and creates a file called <code>libmxnet.so</code> in the
build directory.</p>

<p>If you are getting build errors in which the compiler is being killed, it is
likely that the compiler is running out of memory (especially if you are on
Raspberry Pi 1, 2 or Zero, which have less than 1GB of RAM), this can often be
rectified by increasing the swapfile size on the Pi by editing the file
/etc/dphys-swapfile and changing the line CONF_SWAPSIZE=100 to
CONF_SWAPSIZE=1024, then running:</p>

<p><code>
sudo /etc/init.d/dphys-swapfile stop
sudo /etc/init.d/dphys-swapfile start
free -m # to verify the swapfile size has been increased
</code></p>

<h2 id="cross-compiling-on-your-local-machine">Cross-compiling on your local machine</h2>

<h3 id="obtaining-the-toolchain">Obtaining the toolchain</h3>

<p>You first need to setup the cross-compilation toolchain on your local machine.
On Debian based systems, you can install <code>crossbuild-essential-armel</code> to obtain
a cross-toolchain for the ARMv4T, 5T, and 6, <code>crossbuild-essential-armhf</code> ARMv7
architecture and <code>crossbuild-essential-arm64</code> for ARMv8 (also called aarch64).
See for example
<a href="https://en.wikipedia.org/wiki/Raspberry_Pi#Specifications">Wikipedia</a> to
determine the architecture of your Raspberry PI devices. If none of the Debian
toolchains works for you, you may like to refer to
<a href="https://toolchains.bootlin.com/">toolchains.bootlin.com</a> for a large number of
ready-to-use cross-compilation toolchains.</p>

<h3 id="cross-compiling-mxnet-dependencies">Cross-compiling MXNet dependencies</h3>
<p>Before compiling MXNet, you need to cross-compile MXNet’s dependencies. At the
very minimum, you’ll need OpenBLAS. You can cross-compile it as follows,
replacing the <code>CC=aarch64-linux-gnu-gcc</code> and <code>PREFIX=/usr/aarch64-linux-gnu</code>
based on your architecture:</p>

<p><code>
git clone --recursive https://github.com/xianyi/OpenBLAS.git
cd OpenBLAS
make NOFORTRAN=1 NO_SHARED=1 CC=aarch64-linux-gnu-gcc
make PREFIX=/usr/local/aarch64-linux-gnu NO_SHARED=1 install
</code></p>

<p>If you would like to compile MXNet with OpenCV support, enabling various image
transformation related features, you also need to cross-compile OpenCV.</p>

<h3 id="cross-compiling-mxnet">Cross-compiling MXNet</h3>

<p>Before you cross-compile MXNet, create a CMake toolchain file specifying all settings for your compilation. For example, <code>aarch64-linux-gnu-toolchain.cmake</code>:</p>

<p>```
set(CMAKE_SYSTEM_NAME Linux)
set(CMAKE_SYSTEM_PROCESSOR “aarch64”)
set(CMAKE_C_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_CXX_COMPILER aarch64-linux-gnu-g++)
set(CMAKE_CUDA_HOST_COMPILER aarch64-linux-gnu-gcc)
set(CMAKE_FIND_ROOT_PATH “/usr/aarch64-linux-gnu;/usr/local/aarch64-linux-gnu”)</p>

<p>set(CMAKE_FIND_ROOT_PATH_MODE_PROGRAM NEVER)
set(CMAKE_FIND_ROOT_PATH_MODE_LIBRARY ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_INCLUDE ONLY)
set(CMAKE_FIND_ROOT_PATH_MODE_PACKAGE ONLY)
```</p>

<p><code>CMAKE_FIND_ROOT_PATH</code> should be a list of directories containing the
cross-compilation toolchain and MXNet’s cross-compiled dependencies. If you use
a toolchain from the bootlin site linked above, you can find the respective
CMake toolchain file at <code>share/buildroot/toolchainfile.cmake</code>.</p>

<p>You can then cross-compile MXNet via</p>

<p><code>
mkdir build; cd build
cmake -DCMAKE_TOOLCHAIN_FILE=${CMAKE_TOOLCHAIN_FILE} \
  -DUSE_CUDA=OFF \
  -DSUPPORT_F16C=OFF \
  -DUSE_BLAS=Open \
  -DUSE_OPENCV=OFF \
  -DUSE_OPENMP=ON \
  -DUSE_LAPACK=OFF \
  -DUSE_SIGNAL_HANDLER=ON \
  -DCMAKE_BUILD_TYPE=Release \
  -G Ninja ..
ninja
cd ..
</code></p>

<p>We would like to simplify this setup by integrating the Conan C++ dependency
manager. Please send an email to the MXNet development mailinglist or open an
issue on Github if you would like to help.</p>

<h3 id="building-the-python-wheel">Building the Python wheel</h3>

<p>To build the wheel, you can follow the following process</p>

<p>```
export MXNET_LIBRARY_PATH=$(pwd)/build/libmxnet.so</p>

<p>cd python
python3 setup.py bdist_wheel</p>

<h1 id="fix-pathing-issues-in-the-wheel--we-need-to-move-libmxnetso-from-the-data-folder-to-the">Fix pathing issues in the wheel.  We need to move libmxnet.so from the data folder to the</h1>
<p># mxnet folder, then repackage the wheel.
WHEEL=<code>readlink -f dist/*.whl</code>
TMPDIR=<code>mktemp -d</code>
unzip -d ${TMPDIR} ${WHEEL}
rm ${WHEEL}
cd ${TMPDIR}
mv *.data/data/mxnet/libmxnet.so mxnet
zip -r ${WHEEL} .
cp ${WHEEL} ..
rm -rf ${TMPDIR}
```</p>

<p>We intend to fix the <code>setup.py</code> to avoid the repackaging step. If you would like
to help, please send an email to the MXNet development mailinglist or open an
issue on Github.</p>

<h3 id="final-remarks">Final remarks</h3>

<p>You are now ready to run MXNet on your Raspberry Pi device. You can get started
by following the tutorial on <a href="https://mxnet.io/api/python/docs/tutorials/deploy/inference/wine_detector.html">Real-time Object Detection with MXNet On The
Raspberry
Pi</a>.</p>

<p><em>Note - Because the complete MXNet library takes up a significant amount of the
Raspberry Pi’s limited RAM, when loading training data or large models into
memory, you might have to turn off the GUI and terminate running processes to
free RAM.</em></p>

            </div> <!-- End of raspberry pi -->


            <div class="nvidia-jetson">
                <h1 id="nvidia-jetson-devices">NVIDIA Jetson Devices</h1>

<p>To install MXNet on a Jetson TX or Nano, please refer to the <a href="/get_started/jetson_setup">Jetson installation
guide</a>.</p>

            </div> <!-- End of jetson -->
        </div> <!-- End of devices -->
    </div>
</div>



        </div>
    </div>

</article>

</main><footer class="site-footer h-card">
    <div class="wrapper">
        <div class="row">
            <div class="col-4">
                <h4 class="footer-category-title">Resources</h4>
                <ul class="contact-list">
                    <li><a href="/versions/master/community#stay-connected">Mailing lists</a></li>
                    <li><a href="/versions/master/community#github-issues">Github Issues</a></li>
                    <li><a href="https://github.com/apache/incubator-mxnet/projects">Projects</a></li>
                    <li><a href="https://cwiki.apache.org/confluence/display/MXNET/Apache+MXNet+Home">Developer Wiki</a></li>
                    <li><a href="https://discuss.mxnet.io">Forum</a></li>
                    <li><a href="/versions/master/community">Contribute To MXNet</a></li>
                </ul>
            </div>

            <div class="col-4"><ul class="social-media-list"><li><a href="https://github.com/apache/incubator-mxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#github"></use></svg> <span class="username">apache/incubator-mxnet</span></a></li><li><a href="https://www.twitter.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#twitter"></use></svg> <span class="username">apachemxnet</span></a></li><li><a href="https://youtube.com/apachemxnet"><svg class="svg-icon"><use xlink:href="/versions/master/assets/minima-social-icons.svg#youtube"></use></svg> <span class="username">apachemxnet</span></a></li></ul>
</div>

            <div class="col-4 footer-text">
                <p>A flexible and efficient library for deep learning.</p>
            </div>
        </div>
    </div>
</footer>
<footer class="site-footer2">
    <div class="wrapper">
        <div class="row">
            <div class="col-3">
                <img src="/versions/master/assets/img/apache_incubator_logo.png" class="footer-logo col-2">
            </div>
            <div class="footer-bottom-warning col-9">
                <p>Apache MXNet is an effort undergoing incubation at <a href="http://www.apache.org/">The Apache Software Foundation</a> (ASF), <span
                        style="font-weight:bold">sponsored by the <i>Apache Incubator</i></span>. Incubation is required
                    of all newly accepted projects until a further review indicates that the infrastructure,
                    communications, and decision making process have stabilized in a manner consistent with other
                    successful ASF projects. While incubation status is not necessarily a reflection of the completeness
                    or stability of the code, it does indicate that the project has yet to be fully endorsed by the ASF.
                </p><p>"Copyright © 2017-2022, The Apache Software Foundation Apache MXNet, MXNet, Apache, the Apache
                    feather, and the Apache MXNet project logo are either registered trademarks or trademarks of the
                    Apache Software Foundation."</p>
            </div>
        </div>
    </div>
</footer>




</body>

</html>
