


<!DOCTYPE html>
<!--[if IE 8]><html class="no-js lt-ie9" lang="en" > <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js" lang="en" > <!--<![endif]-->
<head>
  <meta charset="utf-8">
  
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  
  <title>Software Stack &mdash; incubator-singa 1.1.0 documentation</title>
  

  
  

  

  
  
    

  

  
  
    <link rel="stylesheet" href="../_static/css/theme.css" type="text/css" />
  

  

  
    <link rel="top" title="incubator-singa 1.1.0 documentation" href="../index.html"/>
        <link rel="up" title="Documentation" href="index.html"/>
        <link rel="next" title="Device" href="device.html"/>
        <link rel="prev" title="Installation" href="installation.html"/>
    <link href="../_static/style.css" rel="stylesheet" type="text/css">


  
  <script src="../_static/js/modernizr.min.js"></script>

</head>

<body class="wy-body-for-nav" role="document">

  <div class="wy-grid-for-nav">

    
    <nav data-toggle="wy-nav-shift" class="wy-nav-side">
      <div class="wy-side-scroll">
        <div class="wy-side-nav-search">
          

          
            <a href="../index.html" class="icon icon-home"> incubator-singa
          

          
            
            <img src="../_static/singa.png" class="logo" />
          
          </a>

          
            
            
              <div class="version">
                latest
              </div>
            
          

          
<div role="search">
  <form id="rtd-search-form" class="wy-form" action="../search.html" method="get">
    <input type="text" name="q" placeholder="Search docs" />
    <input type="hidden" name="check_keywords" value="yes" />
    <input type="hidden" name="area" value="default" />
  </form>
</div>

          
        </div>

        <div class="wy-menu wy-menu-vertical" data-spy="affix" role="navigation" aria-label="main navigation">
          
            
            
                <ul class="current">
<li class="toctree-l1"><a class="reference internal" href="../downloads.html">Download SINGA</a></li>
<li class="toctree-l1 current"><a class="reference internal" href="index.html">Documentation</a><ul class="current">
<li class="toctree-l2"><a class="reference internal" href="installation.html">Installation</a></li>
<li class="toctree-l2 current"><a class="current reference internal" href="">Software Stack</a><ul>
<li class="toctree-l3"><a class="reference internal" href="#core">Core</a></li>
<li class="toctree-l3"><a class="reference internal" href="#model">Model</a></li>
<li class="toctree-l3"><a class="reference internal" href="#io">IO</a></li>
</ul>
</li>
<li class="toctree-l2"><a class="reference internal" href="device.html">Device</a></li>
<li class="toctree-l2"><a class="reference internal" href="tensor.html">Tensor</a></li>
<li class="toctree-l2"><a class="reference internal" href="layer.html">Layer</a></li>
<li class="toctree-l2"><a class="reference internal" href="net.html">FeedForward Net</a></li>
<li class="toctree-l2"><a class="reference internal" href="initializer.html">Initializer</a></li>
<li class="toctree-l2"><a class="reference internal" href="loss.html">Loss</a></li>
<li class="toctree-l2"><a class="reference internal" href="metric.html">Metric</a></li>
<li class="toctree-l2"><a class="reference internal" href="optimizer.html">Optimizer</a></li>
<li class="toctree-l2"><a class="reference internal" href="data.html">Data</a></li>
<li class="toctree-l2"><a class="reference internal" href="image_tool.html">Image Tool</a></li>
<li class="toctree-l2"><a class="reference internal" href="snapshot.html">Snapshot</a></li>
<li class="toctree-l2"><a class="reference internal" href="converter.html">Caffe Converter</a></li>
<li class="toctree-l2"><a class="reference internal" href="utils.html">Utils</a></li>
<li class="toctree-l2"><a class="reference internal" href="model_zoo/index.html">Model Zoo</a></li>
</ul>
</li>
</ul>
<p class="caption"><span class="caption-text">Development</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../develop/schedule.html">Development Schedule</a></li>
<li class="toctree-l1"><a class="reference internal" href="../develop/how-contribute.html">How to Contribute to SINGA</a></li>
<li class="toctree-l1"><a class="reference internal" href="../develop/contribute-code.html">How to Contribute Code</a></li>
<li class="toctree-l1"><a class="reference internal" href="../develop/contribute-docs.html">How to Contribute to Documentation</a></li>
</ul>
<p class="caption"><span class="caption-text">Community</span></p>
<ul>
<li class="toctree-l1"><a class="reference internal" href="../community/source-repository.html">Source Repository</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/mail-lists.html">Project Mailing Lists</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/issue-tracking.html">Issue Tracking</a></li>
<li class="toctree-l1"><a class="reference internal" href="../community/team-list.html">The SINGA Team</a></li>
</ul>

            
          
        </div>
      </div>
    </nav>

    <section data-toggle="wy-nav-shift" class="wy-nav-content-wrap">

      
      <nav class="wy-nav-top" role="navigation" aria-label="top navigation">
        <i data-toggle="wy-nav-top" class="fa fa-bars"></i>
        <a href="../index.html">incubator-singa</a>
      </nav>


      
      <div class="wy-nav-content">
        <div class="rst-content">
          

 



<div role="navigation" aria-label="breadcrumbs navigation">
  <ul class="wy-breadcrumbs">
    <li><a href="../index.html">Docs</a> &raquo;</li>
      
          <li><a href="index.html">Documentation</a> &raquo;</li>
      
    <li>Software Stack</li>
      <li class="wy-breadcrumbs-aside">
        
          
        
      </li>
  </ul>
  <hr/>
</div>
          <div role="main" class="document" itemscope="itemscope" itemtype="http://schema.org/Article">
           <div itemprop="articleBody">
            
  <div class="section" id="software-stack">
<span id="software-stack"></span><h1>Software Stack<a class="headerlink" href="#software-stack" title="Permalink to this headline">¶</a></h1>
<p>SINGA&#8217;s software stack includes three major components, namely, core, IO and
model. Figure 1 illustrates these components together with the hardware.
The core component provides memory management and tensor operations;
IO has classes for reading (and writing) data from (to) disk and network; The
model component provides data structures and algorithms for machine learning models,
e.g., layers for neural network models, optimizers/initializer/metric/loss for
general machine learning models.</p>
<p><img src="../_static/images/singav1-sw.png" align="center" width="500px"/>
<br/>
<span><strong>Figure 1 - SINGA V1 software stack.</strong></span></p>
<div class="section" id="core">
<span id="core"></span><h2>Core<a class="headerlink" href="#core" title="Permalink to this headline">¶</a></h2>
<p><a class="reference external" href="tensor.html">Tensor</a> and <a class="reference external" href="device.html">Device</a> are two core abstractions in SINGA. Tensor class represents a
multi-dimensional array, which stores model variables and provides linear algebra
operations for machine learning
algorithms, including matrix multiplication and random functions. Each tensor
instance (i.e. a tensor) is allocated on a Device instance.
Each Device instance (i.e. a device) is created against one hardware device,
e.g. a GPU card or a CPU core. Devices manage the memory of tensors and execute
tensor operations on its execution units, e.g. CPU threads or CUDA streams.</p>
<p>Depending on the hardware and the programming language, SINGA have implemented
the following specific device classes:</p>
<ul class="simple">
<li><strong>CudaGPU</strong> represents an Nvidia GPU card. The execution units are the CUDA streams.</li>
<li><strong>CppCPU</strong> represents a normal CPU. The execution units are the CPU threads.</li>
<li><strong>OpenclGPU</strong> represents normal GPU card from both Nvidia and AMD.
The execution units are the CommandQueues. Given that OpenCL is compatible with
many hardware devices, e.g. FPGA and ARM, the OpenclGPU has the potential to be
extended for other devices.</li>
</ul>
<p>Different types of devices use different programming languages to write the kernel
functions for tensor operations,</p>
<ul class="simple">
<li>CppMath (tensor_math_cpp.h) implements the tensor operations using Cpp for CppCPU</li>
<li>CudaMath (tensor_math_cuda.h) implements the tensor operations using CUDA for CudaGPU</li>
<li>OpenclMath (tensor_math_opencl.h) implements the tensor operations using OpenCL for OpenclGPU</li>
</ul>
<p>In addition, different types of data, such as float32 and float16, could be supported by adding
the corresponding tensor functions.</p>
<p>Typically, users would create a device instance and pass it to create multiple
tensor instances. When users call the Tensor functions, these function would invoke
the corresponding implementation (CppMath/CudaMath/OpenclMath) automatically. In
other words, the implementation of Tensor operations is transparent to users.</p>
<p>Most machine learning algorithms could be expressed using (dense or sparse) tensors.
Therefore, with the Tensor abstraction, SINGA would be able to run a wide range of models,
including deep learning models and other traditional machine learning models.</p>
<p>The Tensor and Device abstractions are extensible to support a wide range of hardware device
using different programming languages. A new hardware device would be supported by
adding a new Device subclass and the corresponding implementation of the Tensor
operations (xxxMath).</p>
<p>Optimizations in terms of speed and memory could be implemented by Device, which
manages both operation execution and memory malloc/free. More optimization details
would be described in the <a class="reference external" href="device.html">Device page</a>.</p>
</div>
<div class="section" id="model">
<span id="model"></span><h2>Model<a class="headerlink" href="#model" title="Permalink to this headline">¶</a></h2>
<p>On top of the Tensor and Device abstractions, SINGA provides some higher level
classes for machine learning modules.</p>
<ul class="simple">
<li><a class="reference external" href="layer.html">Layer</a> and its subclasses are specific for neural networks. Every layer provides
functions for forward propagating features and backward propagating gradients w.r.t the training loss functions.
They wraps the complex layer operations so that users can easily create neural nets
by connecting a set of layers.</li>
<li><a class="reference external" href="initializer.html">Initializer</a> and its subclasses provide variant methods of initializing
model parameters (stored in Tensor instances), following Uniform, Gaussian, etc.</li>
<li><a class="reference external" href="loss.html">Loss</a> and its subclasses defines the training objective loss functions.
Both functions of computing the loss values and computing the gradient of the prediction w.r.t the
objective loss are implemented. Example loss functions include squared error and cross entropy.</li>
<li><a class="reference external" href="metric.html">Metric</a> and its subclasses provide the function to measure the
performance of the model, e.g., the accuracy.</li>
<li><a class="reference external" href="optimizer.html">Optimizer</a> and its subclasses implement the methods for updating
model parameter values using parameter gradients, including SGD, AdaGrad, RMSProp etc.</li>
</ul>
</div>
<div class="section" id="io">
<span id="io"></span><h2>IO<a class="headerlink" href="#io" title="Permalink to this headline">¶</a></h2>
<p>The IO module consists of classes for data loading, data preprocessing and message passing.</p>
<ul class="simple">
<li>Reader and its subclasses load string records from disk files</li>
<li>Writer and its subclasses write string records to disk files</li>
<li>Encoder and its subclasses encode Tensor instances into string records</li>
<li>Decoder and its subclasses decodes string records into Tensor instances</li>
<li>Endpoint represents a communication endpoint which provides functions for passing messages to each other.</li>
<li>Message represents communication messages between Endpoint instances. It carries both meta data and payload.</li>
</ul>
</div>
</div>


           </div>
          </div>
          <footer>
  
    <div class="rst-footer-buttons" role="navigation" aria-label="footer navigation">
      
        <a href="device.html" class="btn btn-neutral float-right" title="Device" accesskey="n">Next <span class="fa fa-arrow-circle-right"></span></a>
      
      
        <a href="installation.html" class="btn btn-neutral" title="Installation" accesskey="p"><span class="fa fa-arrow-circle-left"></span> Previous</a>
      
    </div>
  

  <hr/>

  <div role="contentinfo">
    <p>
        &copy; Copyright 2017 The Apache Software Foundation. All rights reserved. Apache Singa, Apache, the Apache feather logo, and the Apache Singa project logos are trademarks of The Apache Software Foundation. All other marks mentioned may be trademarks or registered trademarks of their respective owners..

    </p>
  </div>
  Built with <a href="http://sphinx-doc.org/">Sphinx</a> using a <a href="https://github.com/snide/sphinx_rtd_theme">theme</a> provided by <a href="https://readthedocs.org">Read the Docs</a>. 

</footer>

        </div>
      </div>

    </section>

  </div>
  


  

    <script type="text/javascript">
        var DOCUMENTATION_OPTIONS = {
            URL_ROOT:'../',
            VERSION:'1.1.0',
            COLLAPSE_INDEX:false,
            FILE_SUFFIX:'.html',
            HAS_SOURCE:  true
        };
    </script>
      <script type="text/javascript" src="../_static/jquery.js"></script>
      <script type="text/javascript" src="../_static/underscore.js"></script>
      <script type="text/javascript" src="../_static/doctools.js"></script>

  

  
  
    <script type="text/javascript" src="../_static/js/theme.js"></script>
  

  
  
  <script type="text/javascript">
      jQuery(function () {
          SphinxRtdTheme.StickyNav.enable();
      });
  </script>
  

<div class="rst-versions shift-up" data-toggle="rst-versions" role="note" aria-label="versions">
  <span class="rst-current-version" data-toggle="rst-current-version">
    <span class="fa fa-book"> incubator-singa </span>
    v: latest
    <span class="fa fa-caret-down"></span>
  </span>
  <div class="rst-other-versions">
      <dl>
          <dt>Languages</dt>
          <dd><a href="../../en/index.html">English</a></dd>
          <dd><a href="../../zh/index.html">中文</a></dd>
      </dl>
      <dl>
          <dt>Versions</dt>
          <dd><a href="http://singa.apache.org/v0.3.0/">0.3</a></dd>
          <dd><a href="http://singa.apache.org/v1.1.0/">1.1</a></dd>
      </dl>

  </div>
  <a href="http://incubator.apache.org/"> <img src= "../_static/apache.jpg"> </a>
</div>

 <a href="https://github.com/apache/incubator-singa">
    <img style="position: absolute; top: 0; right: 0; border: 0; z-index: 10000;"
        src="https://s3.amazonaws.com/github/ribbons/forkme_right_orange_ff7600.png"
        alt="Fork me on GitHub">
</a>

 


</body>
</html>