<!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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/image/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 -->
<script src="https://medium-widget.pixelpoint.io/widget.js"></script>
  <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/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" /><script>
if(!(window.doNotTrack === "1" || navigator.doNotTrack === "1" || navigator.doNotTrack === "yes" || navigator.msDoNotTrack === "1")) {
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','https://www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-96378503-1', 'auto');
  ga('send', 'pageview');
}
</script>
  
<script src="/versions/master/assets/js/jquery-3.3.1.min.js"></script><script src="https://cdn.jsdelivr.net/npm/docsearch.js@2/dist/cdn/docsearch.min.js" defer></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.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.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/blog">Blog</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="https://github.com/apache/incubator-mxnet">GitHub</a>
        <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.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">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 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.8.0';
    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 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.8.0
                        <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.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-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</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</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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.8.0.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-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</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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.8.0.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-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</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</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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.8.0.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-8-0">
<figure class="highlight"><pre><code class="language-bash" data-lang="bash">pip <span class="nb">install </span>mxnet</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</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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.8.0.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-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</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="https://raw.githubusercontent.com/dmlc/web-data/master/mxnet/install/pip-packages-1.8.0.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="https://discuss.mxnet.io">MXNet Discuss forum</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="/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 The Apache Software Foundation (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-2018, 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>
