blob: 6f7156fda0429f670192a3186eb8bb5e79fa177d [file] [log] [blame]
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.13"/>
<meta name="viewport" content="width=device-width, initial-scale=1"/>
<title>mxnet: mxnet::KVStore Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="search/search.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="search/searchdata.js"></script>
<script type="text/javascript" src="search/search.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
<tbody>
<tr style="height: 56px;">
<td id="projectalign" style="padding-left: 0.5em;">
<div id="projectname">mxnet
</div>
</td>
</tr>
</tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.13 -->
<script type="text/javascript">
var searchBox = new SearchBox("searchBox", "search",false,'Search');
</script>
<script type="text/javascript" src="menudata.js"></script>
<script type="text/javascript" src="menu.js"></script>
<script type="text/javascript">
$(function() {
initMenu('',true,false,'search.php','Search');
$(document).ready(function() { init_search(); });
});
</script>
<div id="main-nav"></div>
<!-- window showing the filter options -->
<div id="MSearchSelectWindow"
onmouseover="return searchBox.OnSearchSelectShow()"
onmouseout="return searchBox.OnSearchSelectHide()"
onkeydown="return searchBox.OnSearchSelectKey(event)">
</div>
<!-- iframe showing the search results (closed by default) -->
<div id="MSearchResultsWindow">
<iframe src="javascript:void(0)" frameborder="0"
name="MSearchResults" id="MSearchResults">
</iframe>
</div>
<div id="nav-path" class="navpath">
<ul>
<li class="navelem"><a class="el" href="namespacemxnet.html">mxnet</a></li><li class="navelem"><a class="el" href="classmxnet_1_1KVStore.html">KVStore</a></li> </ul>
</div>
</div><!-- top -->
<div class="header">
<div class="summary">
<a href="#pub-types">Public Types</a> &#124;
<a href="#pub-methods">Public Member Functions</a> &#124;
<a href="#pub-static-methods">Static Public Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a> &#124;
<a href="classmxnet_1_1KVStore-members.html">List of all members</a> </div>
<div class="headertitle">
<div class="title">mxnet::KVStore Class Reference<span class="mlabels"><span class="mlabel">abstract</span></span></div> </div>
</div><!--header-->
<div class="contents">
<p>distributed key-value store
<a href="classmxnet_1_1KVStore.html#details">More...</a></p>
<p><code>#include &lt;<a class="el" href="include_2mxnet_2kvstore_8h_source.html">kvstore.h</a>&gt;</code></p>
<div class="dynheader">
Collaboration diagram for mxnet::KVStore:</div>
<div class="dyncontent">
<div class="center"><img src="classmxnet_1_1KVStore__coll__graph.png" border="0" usemap="#mxnet_1_1KVStore_coll__map" alt="Collaboration graph"/></div>
<map name="mxnet_1_1KVStore_coll__map" id="mxnet_1_1KVStore_coll__map">
</map>
</div>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr class="memitem:a6e4a76bd57f185349c58a5a658c32a64"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(int, const <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">Updater</a></td></tr>
<tr class="memdesc:a6e4a76bd57f185349c58a5a658c32a64"><td class="mdescLeft">&#160;</td><td class="mdescRight">the prototype of user-defined updater <a href="#a6e4a76bd57f185349c58a5a658c32a64">More...</a><br /></td></tr>
<tr class="separator:a6e4a76bd57f185349c58a5a658c32a64"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abe6963a386cc6dc579029349a447d1cb"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(const std::string &amp;, const <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &amp;, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">StrUpdater</a></td></tr>
<tr class="memdesc:abe6963a386cc6dc579029349a447d1cb"><td class="mdescLeft">&#160;</td><td class="mdescRight">the prototype of user-defined updater with string keys <a href="#abe6963a386cc6dc579029349a447d1cb">More...</a><br /></td></tr>
<tr class="separator:abe6963a386cc6dc579029349a447d1cb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a50db5cb1a140fb84c8e31def54270ae3"><td class="memItemLeft" align="right" valign="top">typedef std::function&lt; void(int, const std::string &amp;)&gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a50db5cb1a140fb84c8e31def54270ae3">Controller</a></td></tr>
<tr class="memdesc:a50db5cb1a140fb84c8e31def54270ae3"><td class="mdescLeft">&#160;</td><td class="mdescRight">the prototype of a server controller <a href="#a50db5cb1a140fb84c8e31def54270ae3">More...</a><br /></td></tr>
<tr class="separator:a50db5cb1a140fb84c8e31def54270ae3"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr class="memitem:a02e23071eb46464b58f2e2bf5654d6d6"><td class="memItemLeft" align="right" valign="top">virtual&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a02e23071eb46464b58f2e2bf5654d6d6">~KVStore</a> ()</td></tr>
<tr class="memdesc:a02e23071eb46464b58f2e2bf5654d6d6"><td class="mdescLeft">&#160;</td><td class="mdescRight">virtual destructor <a href="#a02e23071eb46464b58f2e2bf5654d6d6">More...</a><br /></td></tr>
<tr class="separator:a02e23071eb46464b58f2e2bf5654d6d6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a722b2150dbf50d528fce62307809f949"><td class="memItemLeft" align="right" valign="top">const std::string &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a722b2150dbf50d528fce62307809f949">type</a> ()</td></tr>
<tr class="memdesc:a722b2150dbf50d528fce62307809f949"><td class="mdescLeft">&#160;</td><td class="mdescRight">return the type <a href="#a722b2150dbf50d528fce62307809f949">More...</a><br /></td></tr>
<tr class="separator:a722b2150dbf50d528fce62307809f949"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac646c6d489a1c47b84556e90b2176f49"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ac646c6d489a1c47b84556e90b2176f49">SetGradientCompression</a> (const std::vector&lt; std::pair&lt; std::string, std::string &gt; &gt; &amp;kwargs)=0</td></tr>
<tr class="memdesc:ac646c6d489a1c47b84556e90b2176f49"><td class="mdescLeft">&#160;</td><td class="mdescRight">Set parameters to use low-bit compressed gradients. <a href="#ac646c6d489a1c47b84556e90b2176f49">More...</a><br /></td></tr>
<tr class="separator:ac646c6d489a1c47b84556e90b2176f49"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af4e56c1f2b90bdd02e2c4e7d2abf6265"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#af4e56c1f2b90bdd02e2c4e7d2abf6265">Init</a> (const std::vector&lt; int &gt; &amp;keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values)=0</td></tr>
<tr class="memdesc:af4e56c1f2b90bdd02e2c4e7d2abf6265"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a list of key-value pair to the store. <a href="#af4e56c1f2b90bdd02e2c4e7d2abf6265">More...</a><br /></td></tr>
<tr class="separator:af4e56c1f2b90bdd02e2c4e7d2abf6265"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a164c3314ba04dadab4fa2a7a74c440d4"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a164c3314ba04dadab4fa2a7a74c440d4">Init</a> (const std::vector&lt; std::string &gt; &amp;str_keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values)=0</td></tr>
<tr class="memdesc:a164c3314ba04dadab4fa2a7a74c440d4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialize a list of key-value pair to the store. <a href="#a164c3314ba04dadab4fa2a7a74c440d4">More...</a><br /></td></tr>
<tr class="separator:a164c3314ba04dadab4fa2a7a74c440d4"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a56a3b6d687700f7c71310cd47ab5a54c"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a56a3b6d687700f7c71310cd47ab5a54c">Push</a> (const std::vector&lt; int &gt; &amp;keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, int priority=0)=0</td></tr>
<tr class="memdesc:a56a3b6d687700f7c71310cd47ab5a54c"><td class="mdescLeft">&#160;</td><td class="mdescRight">push a list of key-value pairs into the store <a href="#a56a3b6d687700f7c71310cd47ab5a54c">More...</a><br /></td></tr>
<tr class="separator:a56a3b6d687700f7c71310cd47ab5a54c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa2a9cf32a8da809bb4ae4abf40159c96"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#aa2a9cf32a8da809bb4ae4abf40159c96">Push</a> (const std::vector&lt; std::string &gt; &amp;str_keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, int priority=0)=0</td></tr>
<tr class="memdesc:aa2a9cf32a8da809bb4ae4abf40159c96"><td class="mdescLeft">&#160;</td><td class="mdescRight">push a list of key-value pairs into the store <a href="#aa2a9cf32a8da809bb4ae4abf40159c96">More...</a><br /></td></tr>
<tr class="separator:aa2a9cf32a8da809bb4ae4abf40159c96"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6211f8c4acb7b2e4538cbebe3ad1a73b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a6211f8c4acb7b2e4538cbebe3ad1a73b">Pull</a> (const std::vector&lt; int &gt; &amp;keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;values, int priority=0, bool ignore_sparse=true)=0</td></tr>
<tr class="memdesc:a6211f8c4acb7b2e4538cbebe3ad1a73b"><td class="mdescLeft">&#160;</td><td class="mdescRight">pull a list of key-value pairs from the store <a href="#a6211f8c4acb7b2e4538cbebe3ad1a73b">More...</a><br /></td></tr>
<tr class="separator:a6211f8c4acb7b2e4538cbebe3ad1a73b"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad7aa090bfacb45a4f6458663d0eacbe2"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ad7aa090bfacb45a4f6458663d0eacbe2">Pull</a> (const std::vector&lt; std::string &gt; &amp;str_keys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;values, int priority=0, bool ignore_sparse=true)=0</td></tr>
<tr class="memdesc:ad7aa090bfacb45a4f6458663d0eacbe2"><td class="mdescLeft">&#160;</td><td class="mdescRight">pull a list of key-value pairs from the store <a href="#ad7aa090bfacb45a4f6458663d0eacbe2">More...</a><br /></td></tr>
<tr class="separator:ad7aa090bfacb45a4f6458663d0eacbe2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4adbde57923c57ec191093f04810ad78"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a4adbde57923c57ec191093f04810ad78">Broadcast</a> (const std::vector&lt; int &gt; &amp;vkeys, const std::vector&lt; int &gt; &amp;okeys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;outs, int priority=0)=0</td></tr>
<tr class="memdesc:a4adbde57923c57ec191093f04810ad78"><td class="mdescLeft">&#160;</td><td class="mdescRight">broadcast a list of key-value pairs from the store <a href="#a4adbde57923c57ec191093f04810ad78">More...</a><br /></td></tr>
<tr class="separator:a4adbde57923c57ec191093f04810ad78"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6a83c6545366a327884303700d77d4f3"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a6a83c6545366a327884303700d77d4f3">Broadcast</a> (const std::vector&lt; std::string &gt; &amp;str_vkeys, const std::vector&lt; std::string &gt; &amp;str_okeys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;outs, int priority=0)=0</td></tr>
<tr class="memdesc:a6a83c6545366a327884303700d77d4f3"><td class="mdescLeft">&#160;</td><td class="mdescRight">broadcast a list of key-value pairs from the store <a href="#a6a83c6545366a327884303700d77d4f3">More...</a><br /></td></tr>
<tr class="separator:a6a83c6545366a327884303700d77d4f3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4432158199afea0c7dde248edc76955f"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a4432158199afea0c7dde248edc76955f">PushPull</a> (const std::vector&lt; int &gt; &amp;vkeys, const std::vector&lt; int &gt; &amp;okeys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;outs, int priority=0)=0</td></tr>
<tr class="memdesc:a4432158199afea0c7dde248edc76955f"><td class="mdescLeft">&#160;</td><td class="mdescRight">push and pull a list of key-value pairs from the store <a href="#a4432158199afea0c7dde248edc76955f">More...</a><br /></td></tr>
<tr class="separator:a4432158199afea0c7dde248edc76955f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af620ba0b9f02aa0fa3d4444e90d8f970"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#af620ba0b9f02aa0fa3d4444e90d8f970">PushPull</a> (const std::vector&lt; std::string &gt; &amp;str_vkeys, const std::vector&lt; std::string &gt; &amp;str_okeys, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;values, const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;outs, int priority=0)=0</td></tr>
<tr class="memdesc:af620ba0b9f02aa0fa3d4444e90d8f970"><td class="mdescLeft">&#160;</td><td class="mdescRight">push and pull a list of key-value pairs from the store <a href="#af620ba0b9f02aa0fa3d4444e90d8f970">More...</a><br /></td></tr>
<tr class="separator:af620ba0b9f02aa0fa3d4444e90d8f970"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ade6175a35ee3c660b7d254953d1a0070"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ade6175a35ee3c660b7d254953d1a0070">PullRowSparse</a> (const std::vector&lt; int &gt; &amp;str_keys, const std::vector&lt; std::pair&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt;&gt; &amp;val_rowids, int priority=0)=0</td></tr>
<tr class="memdesc:ade6175a35ee3c660b7d254953d1a0070"><td class="mdescLeft">&#160;</td><td class="mdescRight">pull a list of key-value pairs from the store. The <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface ">NDArray</a> pulled back will be in row_sparse storage with only the specified row_ids present (others rows are zeros). <a href="#ade6175a35ee3c660b7d254953d1a0070">More...</a><br /></td></tr>
<tr class="separator:ade6175a35ee3c660b7d254953d1a0070"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb884ba37491cc7b20152771e93d6c71"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#acb884ba37491cc7b20152771e93d6c71">PullRowSparse</a> (const std::vector&lt; std::string &gt; &amp;str_keys, const std::vector&lt; std::pair&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt;&gt; &amp;val_rowids, int priority=0)=0</td></tr>
<tr class="memdesc:acb884ba37491cc7b20152771e93d6c71"><td class="mdescLeft">&#160;</td><td class="mdescRight">pull a list of key-value pairs from the store, where each key is a string. The <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface ">NDArray</a> pulled back will be in row_sparse storage with only the specified row_ids present (others rows are zeros). <a href="#acb884ba37491cc7b20152771e93d6c71">More...</a><br /></td></tr>
<tr class="separator:acb884ba37491cc7b20152771e93d6c71"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a352ef7eae04211eca1ed47401a6d15d5"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a352ef7eae04211eca1ed47401a6d15d5">set_updater</a> (const <a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">Updater</a> &amp;updater)</td></tr>
<tr class="memdesc:a352ef7eae04211eca1ed47401a6d15d5"><td class="mdescLeft">&#160;</td><td class="mdescRight">set an updater <a href="#a352ef7eae04211eca1ed47401a6d15d5">More...</a><br /></td></tr>
<tr class="separator:a352ef7eae04211eca1ed47401a6d15d5"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a777f1de6348bba9ef62b56064a6e0c46"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a777f1de6348bba9ef62b56064a6e0c46">set_updater</a> (const <a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">StrUpdater</a> &amp;updater)</td></tr>
<tr class="memdesc:a777f1de6348bba9ef62b56064a6e0c46"><td class="mdescLeft">&#160;</td><td class="mdescRight">set an updater with string keys <a href="#a777f1de6348bba9ef62b56064a6e0c46">More...</a><br /></td></tr>
<tr class="separator:a777f1de6348bba9ef62b56064a6e0c46"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa87753d90fc7e75234229834ea23abb"><td class="memItemLeft" align="right" valign="top">void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#afa87753d90fc7e75234229834ea23abb">set_barrier_before_exit</a> (const bool barrier_before_exit)</td></tr>
<tr class="separator:afa87753d90fc7e75234229834ea23abb"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afa281ae77e3ca58beaee6f3a5feafbc1"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#afa281ae77e3ca58beaee6f3a5feafbc1">get_rank</a> () const</td></tr>
<tr class="separator:afa281ae77e3ca58beaee6f3a5feafbc1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2314122405a7f3ed5f9df55cb6a66f2a"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a2314122405a7f3ed5f9df55cb6a66f2a">get_group_size</a> () const</td></tr>
<tr class="separator:a2314122405a7f3ed5f9df55cb6a66f2a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9bbe72794d75a2d8d804124ee686c01c"><td class="memItemLeft" align="right" valign="top">virtual int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a9bbe72794d75a2d8d804124ee686c01c">get_num_dead_node</a> (int node_id, int timeout=60) const</td></tr>
<tr class="separator:a9bbe72794d75a2d8d804124ee686c01c"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4f9275fb7a11589fae1dcc5a8a3354ac"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a4f9275fb7a11589fae1dcc5a8a3354ac">Barrier</a> ()</td></tr>
<tr class="memdesc:a4f9275fb7a11589fae1dcc5a8a3354ac"><td class="mdescLeft">&#160;</td><td class="mdescRight">global barrier among all worker machines <a href="#a4f9275fb7a11589fae1dcc5a8a3354ac">More...</a><br /></td></tr>
<tr class="separator:a4f9275fb7a11589fae1dcc5a8a3354ac"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4ff4ca05f3c519ebbc2e46264e8b63dd"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a4ff4ca05f3c519ebbc2e46264e8b63dd">SendCommandToServers</a> (int cmd_id, const std::string &amp;cmd_body)</td></tr>
<tr class="memdesc:a4ff4ca05f3c519ebbc2e46264e8b63dd"><td class="mdescLeft">&#160;</td><td class="mdescRight">Send a command to all server nodes. <a href="#a4ff4ca05f3c519ebbc2e46264e8b63dd">More...</a><br /></td></tr>
<tr class="separator:a4ff4ca05f3c519ebbc2e46264e8b63dd"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a9e11acc2968464f907633a1c72e4d545"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a9e11acc2968464f907633a1c72e4d545">SetServerProfilerCommand</a> (const <a class="el" href="namespacemxnet.html#a691b662ef3ae22904fc7d7d63db4c14e">KVStoreServerProfilerCommand</a> <a class="el" href="classmxnet_1_1KVStore.html#a722b2150dbf50d528fce62307809f949">type</a>, const std::string &amp;params)</td></tr>
<tr class="memdesc:a9e11acc2968464f907633a1c72e4d545"><td class="mdescLeft">&#160;</td><td class="mdescRight">Sends server profiler commands to all server nodes Only the worker with rank=0 sends the command which will be received by all servers. <a href="#a9e11acc2968464f907633a1c72e4d545">More...</a><br /></td></tr>
<tr class="separator:a9e11acc2968464f907633a1c72e4d545"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae137ab8b5407060529c18a8084946d0b"><td class="memItemLeft" align="right" valign="top">virtual void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ae137ab8b5407060529c18a8084946d0b">RunServer</a> (const <a class="el" href="classmxnet_1_1KVStore.html#a50db5cb1a140fb84c8e31def54270ae3">Controller</a> &amp;controller)</td></tr>
<tr class="memdesc:ae137ab8b5407060529c18a8084946d0b"><td class="mdescLeft">&#160;</td><td class="mdescRight">Run as server (or scheduler) <a href="#ae137ab8b5407060529c18a8084946d0b">More...</a><br /></td></tr>
<tr class="separator:ae137ab8b5407060529c18a8084946d0b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a>
Static Public Member Functions</h2></td></tr>
<tr class="memitem:a6d54b075d3b43577f8339b25000a0c82"><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmxnet_1_1KVStore.html">KVStore</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a6d54b075d3b43577f8339b25000a0c82">Create</a> (const char *<a class="el" href="classmxnet_1_1KVStore.html#a722b2150dbf50d528fce62307809f949">type</a>=&quot;local&quot;)</td></tr>
<tr class="memdesc:a6d54b075d3b43577f8339b25000a0c82"><td class="mdescLeft">&#160;</td><td class="mdescRight">Factory function to create a new <a class="el" href="classmxnet_1_1KVStore.html" title="distributed key-value store ">KVStore</a>. <a href="#a6d54b075d3b43577f8339b25000a0c82">More...</a><br /></td></tr>
<tr class="separator:a6d54b075d3b43577f8339b25000a0c82"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5d919a7a4c9495e9a569c8d733d6325f"><td class="memItemLeft" align="right" valign="top">static void&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a5d919a7a4c9495e9a569c8d733d6325f">InitPSEnv</a> (const std::unordered_map&lt; std::string, std::string &gt; &amp;envs)</td></tr>
<tr class="memdesc:a5d919a7a4c9495e9a569c8d733d6325f"><td class="mdescLeft">&#160;</td><td class="mdescRight">initalize ps-lite environment variables <a href="#a5d919a7a4c9495e9a569c8d733d6325f">More...</a><br /></td></tr>
<tr class="separator:a5d919a7a4c9495e9a569c8d733d6325f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab216fb292fa77e843e95f474fa671a20"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ab216fb292fa77e843e95f474fa671a20">IsWorkerNode</a> ()</td></tr>
<tr class="separator:ab216fb292fa77e843e95f474fa671a20"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a101178924ce1d635b0c8c2a5bce0ceaf"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a101178924ce1d635b0c8c2a5bce0ceaf">IsServerNode</a> ()</td></tr>
<tr class="separator:a101178924ce1d635b0c8c2a5bce0ceaf"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a41113b9dfeab6c705ba064cc3f010fb4"><td class="memItemLeft" align="right" valign="top">static bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a41113b9dfeab6c705ba064cc3f010fb4">IsSchedulerNode</a> ()</td></tr>
<tr class="separator:a41113b9dfeab6c705ba064cc3f010fb4"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr class="memitem:a01befb768a81a8e7a366708240ee6d06"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">Updater</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a01befb768a81a8e7a366708240ee6d06">updater_</a></td></tr>
<tr class="memdesc:a01befb768a81a8e7a366708240ee6d06"><td class="mdescLeft">&#160;</td><td class="mdescRight">the user-defined updater <a href="#a01befb768a81a8e7a366708240ee6d06">More...</a><br /></td></tr>
<tr class="separator:a01befb768a81a8e7a366708240ee6d06"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:abf0f494ba57dd7b035ece0d96eb5575f"><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">StrUpdater</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#abf0f494ba57dd7b035ece0d96eb5575f">str_updater_</a></td></tr>
<tr class="memdesc:abf0f494ba57dd7b035ece0d96eb5575f"><td class="mdescLeft">&#160;</td><td class="mdescRight">the user-defined updater with string keys <a href="#abf0f494ba57dd7b035ece0d96eb5575f">More...</a><br /></td></tr>
<tr class="separator:abf0f494ba57dd7b035ece0d96eb5575f"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ad1023ca677c6e87ccc7d92c4df48bd40"><td class="memItemLeft" align="right" valign="top">std::string&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#ad1023ca677c6e87ccc7d92c4df48bd40">type_</a></td></tr>
<tr class="memdesc:ad1023ca677c6e87ccc7d92c4df48bd40"><td class="mdescLeft">&#160;</td><td class="mdescRight">the kvstore type <a href="#ad1023ca677c6e87ccc7d92c4df48bd40">More...</a><br /></td></tr>
<tr class="separator:ad1023ca677c6e87ccc7d92c4df48bd40"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4131e7db30b5e7be34997abcf75741a6"><td class="memItemLeft" align="right" valign="top">std::shared_ptr&lt; kvstore::GradientCompression &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#a4131e7db30b5e7be34997abcf75741a6">gradient_compression_</a></td></tr>
<tr class="memdesc:a4131e7db30b5e7be34997abcf75741a6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Gradient compression object starts with GC_NONE mode Used if SetGradientCompression sets the type. Currently there is no support for un-setting gradient compression. <a href="#a4131e7db30b5e7be34997abcf75741a6">More...</a><br /></td></tr>
<tr class="separator:a4131e7db30b5e7be34997abcf75741a6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa8ba7abf8334326cab19eb568cb31cfa"><td class="memItemLeft" align="right" valign="top">std::atomic&lt; bool &gt;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="classmxnet_1_1KVStore.html#aa8ba7abf8334326cab19eb568cb31cfa">barrier_before_exit_</a> {true}</td></tr>
<tr class="memdesc:aa8ba7abf8334326cab19eb568cb31cfa"><td class="mdescLeft">&#160;</td><td class="mdescRight">whether to do barrier when finalize <a href="#aa8ba7abf8334326cab19eb568cb31cfa">More...</a><br /></td></tr>
<tr class="separator:aa8ba7abf8334326cab19eb568cb31cfa"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>distributed key-value store </p>
<p>A distributed key-value store for data synchronization over multiple devices/machines. It support user-defined updater. </p>
</div><h2 class="groupheader">Member Typedef Documentation</h2>
<a id="a50db5cb1a140fb84c8e31def54270ae3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a50db5cb1a140fb84c8e31def54270ae3">&#9670;&nbsp;</a></span>Controller</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::function&lt;void(int, const std::string&amp;)&gt; <a class="el" href="classmxnet_1_1KVStore.html#a50db5cb1a140fb84c8e31def54270ae3">mxnet::KVStore::Controller</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>the prototype of a server controller </p>
</div>
</div>
<a id="abe6963a386cc6dc579029349a447d1cb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abe6963a386cc6dc579029349a447d1cb">&#9670;&nbsp;</a></span>StrUpdater</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::function&lt;void(const std::string&amp;, const <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a>&amp;, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a>*)&gt; <a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">mxnet::KVStore::StrUpdater</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>the prototype of user-defined updater with string keys </p>
</div>
</div>
<a id="a6e4a76bd57f185349c58a5a658c32a64"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6e4a76bd57f185349c58a5a658c32a64">&#9670;&nbsp;</a></span>Updater</h2>
<div class="memitem">
<div class="memproto">
<table class="memname">
<tr>
<td class="memname">typedef std::function&lt;void(int, const <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a>&amp;, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a>*)&gt; <a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">mxnet::KVStore::Updater</a></td>
</tr>
</table>
</div><div class="memdoc">
<p>the prototype of user-defined updater </p>
</div>
</div>
<h2 class="groupheader">Constructor &amp; Destructor Documentation</h2>
<a id="a02e23071eb46464b58f2e2bf5654d6d6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a02e23071eb46464b58f2e2bf5654d6d6">&#9670;&nbsp;</a></span>~KVStore()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual mxnet::KVStore::~KVStore </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>virtual destructor </p>
</div>
</div>
<h2 class="groupheader">Member Function Documentation</h2>
<a id="a4f9275fb7a11589fae1dcc5a8a3354ac"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4f9275fb7a11589fae1dcc5a8a3354ac">&#9670;&nbsp;</a></span>Barrier()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Barrier </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>global barrier among all worker machines </p>
<p>But note that, this functions only blocks the main thread of workers until all of them are reached this point. It doesn't guarantee that all operations issued before are actually finished, such as <a class="el" href="classmxnet_1_1KVStore.html#a56a3b6d687700f7c71310cd47ab5a54c">Push</a> and <a class="el" href="classmxnet_1_1KVStore.html#a6211f8c4acb7b2e4538cbebe3ad1a73b">Pull</a>. </p>
</div>
</div>
<a id="a4adbde57923c57ec191093f04810ad78"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4adbde57923c57ec191093f04810ad78">&#9670;&nbsp;</a></span>Broadcast() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Broadcast </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>vkeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>okeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>outs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>broadcast a list of key-value pairs from the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vkeys</td><td>the list of keys to be pushed </td></tr>
<tr><td class="paramname">okeys</td><td>the list of keys to be pulled. Should be the same set of keys in vkeys. </td></tr>
<tr><td class="paramname">values</td><td>the list of values to be pushed </td></tr>
<tr><td class="paramname">outs</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6a83c6545366a327884303700d77d4f3"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6a83c6545366a327884303700d77d4f3">&#9670;&nbsp;</a></span>Broadcast() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Broadcast </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_vkeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_okeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>outs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>broadcast a list of key-value pairs from the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vkeys</td><td>the list of keys to be pushed in string format </td></tr>
<tr><td class="paramname">okeys</td><td>the list of keys to be pulled in string format. Should be the same set of keys in vkeys. </td></tr>
<tr><td class="paramname">values</td><td>the list of values to be pushed </td></tr>
<tr><td class="paramname">outs</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a6d54b075d3b43577f8339b25000a0c82"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6d54b075d3b43577f8339b25000a0c82">&#9670;&nbsp;</a></span>Create()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static <a class="el" href="classmxnet_1_1KVStore.html">KVStore</a>* mxnet::KVStore::Create </td>
<td>(</td>
<td class="paramtype">const char *&#160;</td>
<td class="paramname"><em>type</em> = <code>&quot;local&quot;</code></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Factory function to create a new <a class="el" href="classmxnet_1_1KVStore.html" title="distributed key-value store ">KVStore</a>. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>The type of the kvstore,<ul>
<li>'local' or 'local_update_cpu' or 'local_allreduce_cpu' multi-devices on a single machine. can be also</li>
<li>'device' or 'local_allreduce_device' : same to local but use gpus for kv allreduce</li>
<li>'dist_*' : multi-machines </li>
</ul>
</td></tr>
</table>
</dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>a new created <a class="el" href="classmxnet_1_1KVStore.html" title="distributed key-value store ">KVStore</a>. </dd></dl>
</div>
</div>
<a id="a2314122405a7f3ed5f9df55cb6a66f2a"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a2314122405a7f3ed5f9df55cb6a66f2a">&#9670;&nbsp;</a></span>get_group_size()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int mxnet::KVStore::get_group_size </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The number of worker nodes </dd></dl>
</div>
</div>
<a id="a9bbe72794d75a2d8d804124ee686c01c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9bbe72794d75a2d8d804124ee686c01c">&#9670;&nbsp;</a></span>get_num_dead_node()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int mxnet::KVStore::get_num_dead_node </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>node_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>timeout</em> = <code>60</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>the number of dead node(s) specified by {node_id} </dd></dl>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">node_id</td><td>can be a node group or a single node </td></tr>
<tr><td class="paramname">timeout</td><td>a node fails to send heartbeart in {timeout} seconds will be presumed as 'dead'</td></tr>
</table>
</dd>
</dl>
<p>Always return 0 when type == "local" </p>
</div>
</div>
<a id="afa281ae77e3ca58beaee6f3a5feafbc1"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa281ae77e3ca58beaee6f3a5feafbc1">&#9670;&nbsp;</a></span>get_rank()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual int mxnet::KVStore::get_rank </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td> const</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>The rank of this node in its group, which is in [0, GroupSize).</dd></dl>
<p>Always return 0 when type == "local" </p>
</div>
</div>
<a id="af4e56c1f2b90bdd02e2c4e7d2abf6265"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af4e56c1f2b90bdd02e2c4e7d2abf6265">&#9670;&nbsp;</a></span>Init() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Init </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize a list of key-value pair to the store. </p>
<p>One must initialize the key before <a class="el" href="classmxnet_1_1KVStore.html#a56a3b6d687700f7c71310cd47ab5a54c">Push</a> and <a class="el" href="classmxnet_1_1KVStore.html#a6211f8c4acb7b2e4538cbebe3ad1a73b">Pull</a>, and a key should be only initialized once</p>
<p>It returns after data have been initialized successfully.</p>
<p>For multiple workers, all workers must call <a class="el" href="classmxnet_1_1KVStore.html#af4e56c1f2b90bdd02e2c4e7d2abf6265">Init</a>. But only worker 0 (<a class="el" href="classmxnet_1_1KVStore.html#afa281ae77e3ca58beaee6f3a5feafbc1">get_rank()</a> == 0)'s values are used for initialization. So others' values can be empty (but not keys). This function blocks until all workers are finished. That means, any worker can push and pull on the keys now.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>a list of unique keys </td></tr>
<tr><td class="paramname">values</td><td>a list of values </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a164c3314ba04dadab4fa2a7a74c440d4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a164c3314ba04dadab4fa2a7a74c440d4">&#9670;&nbsp;</a></span>Init() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Init </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Initialize a list of key-value pair to the store. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>a list of unique keys in string format </td></tr>
<tr><td class="paramname">values</td><td>a list of values </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a5d919a7a4c9495e9a569c8d733d6325f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a5d919a7a4c9495e9a569c8d733d6325f">&#9670;&nbsp;</a></span>InitPSEnv()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static void mxnet::KVStore::InitPSEnv </td>
<td>(</td>
<td class="paramtype">const std::unordered_map&lt; std::string, std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>envs</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>initalize ps-lite environment variables </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">envs</td><td>key-value environment variables </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a41113b9dfeab6c705ba064cc3f010fb4"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a41113b9dfeab6c705ba064cc3f010fb4">&#9670;&nbsp;</a></span>IsSchedulerNode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool mxnet::KVStore::IsSchedulerNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether or not this process is a scheduler node.</dd></dl>
<p>Always returns false when type == "local" </p>
</div>
</div>
<a id="a101178924ce1d635b0c8c2a5bce0ceaf"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a101178924ce1d635b0c8c2a5bce0ceaf">&#9670;&nbsp;</a></span>IsServerNode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool mxnet::KVStore::IsServerNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether or not this process is a server node.</dd></dl>
<p>Always returns false when type == "local" </p>
</div>
</div>
<a id="ab216fb292fa77e843e95f474fa671a20"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ab216fb292fa77e843e95f474fa671a20">&#9670;&nbsp;</a></span>IsWorkerNode()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">static bool mxnet::KVStore::IsWorkerNode </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">static</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<dl class="section return"><dt>Returns</dt><dd>whether or not this process is a worker node.</dd></dl>
<p>Always returns true when type == "local" </p>
</div>
</div>
<a id="a6211f8c4acb7b2e4538cbebe3ad1a73b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a6211f8c4acb7b2e4538cbebe3ad1a73b">&#9670;&nbsp;</a></span>Pull() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Pull </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ignore_sparse</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>pull a list of key-value pairs from the store </p>
<p>One must call <a class="el" href="classmxnet_1_1KVStore.html#af4e56c1f2b90bdd02e2c4e7d2abf6265" title="Initialize a list of key-value pair to the store. ">Init()</a> on <em>key</em> before. And <em>value</em> should be pre-allocated</p>
<p>This function returns after adding a pull operator to the engine. Any following operator requiring reading value will be blocked until the actual pull is finished. One can wait the pull is finished by</p>
<ul>
<li>when type == "local" <div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; v : values) v.WaitToRead()</div></div><!-- fragment --></li>
<li>when type == "dist" <div class="fragment"><div class="line">Wait(keys);</div></div><!-- fragment --></li>
</ul>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys </td></tr>
<tr><td class="paramname">values</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
<tr><td class="paramname">ignore_sparse</td><td>whether to ignore sparse arrays in the request </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ad7aa090bfacb45a4f6458663d0eacbe2"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad7aa090bfacb45a4f6458663d0eacbe2">&#9670;&nbsp;</a></span>Pull() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Pull </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">bool&#160;</td>
<td class="paramname"><em>ignore_sparse</em> = <code>true</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>pull a list of key-value pairs from the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys in string format </td></tr>
<tr><td class="paramname">values</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
<tr><td class="paramname">ignore_sparse</td><td>whether to ignore sparse arrays in the request </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ade6175a35ee3c660b7d254953d1a0070"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ade6175a35ee3c660b7d254953d1a0070">&#9670;&nbsp;</a></span>PullRowSparse() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::PullRowSparse </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>str_keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::pair&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>val_rowids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>pull a list of key-value pairs from the store. The <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface ">NDArray</a> pulled back will be in row_sparse storage with only the specified row_ids present (others rows are zeros). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys </td></tr>
<tr><td class="paramname">values</td><td>the list of buffers - row_id pairs </td></tr>
<tr><td class="paramname">priority</td><td>the priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="acb884ba37491cc7b20152771e93d6c71"></a>
<h2 class="memtitle"><span class="permalink"><a href="#acb884ba37491cc7b20152771e93d6c71">&#9670;&nbsp;</a></span>PullRowSparse() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::PullRowSparse </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::pair&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *, <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt;&gt; &amp;&#160;</td>
<td class="paramname"><em>val_rowids</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>pull a list of key-value pairs from the store, where each key is a string. The <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface ">NDArray</a> pulled back will be in row_sparse storage with only the specified row_ids present (others rows are zeros). </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys in string format </td></tr>
<tr><td class="paramname">values</td><td>the list of buffers - row_id pairs </td></tr>
<tr><td class="paramname">priority</td><td>the priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a56a3b6d687700f7c71310cd47ab5a54c"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a56a3b6d687700f7c71310cd47ab5a54c">&#9670;&nbsp;</a></span>Push() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Push </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>push a list of key-value pairs into the store </p>
<p>If a key appears mulitple times in <em>keys</em>, then the according values will be aggregated (summed) before pushing.</p>
<p>The (aggregated) values are merged into the store one by one</p>
<div class="fragment"><div class="line">updater(key, value, &amp;value_in_store);</div></div><!-- fragment --><p>One can set a user-defined updater by <a class="el" href="classmxnet_1_1KVStore.html#a352ef7eae04211eca1ed47401a6d15d5">set_updater</a>. The default updater is Assign.</p>
<p>This function returns after adding a push operator to the engine. Any following operator requiring writing value will be blocked until the actual push is finished. One can wait the push is finished by</p>
<ul>
<li>when type == "local" <div class="fragment"><div class="line"><span class="keywordflow">for</span> (<span class="keyword">auto</span>&amp; v : values) v.WaitToWrite()</div></div><!-- fragment --></li>
<li>when type == "dist" <div class="fragment"><div class="line">Wait(keys);</div></div><!-- fragment --></li>
</ul>
<p>One must call <a class="el" href="classmxnet_1_1KVStore.html#af4e56c1f2b90bdd02e2c4e7d2abf6265" title="Initialize a list of key-value pair to the store. ">Init()</a> on every key before. And the value <a class="el" href="classmxnet_1_1NDArray.html" title="ndarray interface ">NDArray</a> should be always has the same shape as being inited.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys </td></tr>
<tr><td class="paramname">values</td><td>the list of values </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="aa2a9cf32a8da809bb4ae4abf40159c96"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa2a9cf32a8da809bb4ae4abf40159c96">&#9670;&nbsp;</a></span>Push() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::Push </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_keys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>push a list of key-value pairs into the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">keys</td><td>the list of keys in string format </td></tr>
<tr><td class="paramname">values</td><td>the list of values </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4432158199afea0c7dde248edc76955f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4432158199afea0c7dde248edc76955f">&#9670;&nbsp;</a></span>PushPull() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::PushPull </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>vkeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; int &gt; &amp;&#160;</td>
<td class="paramname"><em>okeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>outs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>push and pull a list of key-value pairs from the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vkeys</td><td>the list of keys to be pushed </td></tr>
<tr><td class="paramname">okeys</td><td>the list of keys to be pulled. Should be the same set of keys in vkeys. </td></tr>
<tr><td class="paramname">values</td><td>the list of values to be pushed </td></tr>
<tr><td class="paramname">outs</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="af620ba0b9f02aa0fa3d4444e90d8f970"></a>
<h2 class="memtitle"><span class="permalink"><a href="#af620ba0b9f02aa0fa3d4444e90d8f970">&#9670;&nbsp;</a></span>PushPull() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::PushPull </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_vkeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; std::string &gt; &amp;&#160;</td>
<td class="paramname"><em>str_okeys</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> &gt; &amp;&#160;</td>
<td class="paramname"><em>values</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::vector&lt; <a class="el" href="classmxnet_1_1NDArray.html">NDArray</a> *&gt; &amp;&#160;</td>
<td class="paramname"><em>outs</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>priority</em> = <code>0</code>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>push and pull a list of key-value pairs from the store </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">vkeys</td><td>the list of keys to be pushed in string format </td></tr>
<tr><td class="paramname">okeys</td><td>the list of keys to be pulled in string format. Should be the same set of keys in vkeys. </td></tr>
<tr><td class="paramname">values</td><td>the list of values to be pushed </td></tr>
<tr><td class="paramname">outs</td><td>the list of buffers for the pulled data, they should be preallocated </td></tr>
<tr><td class="paramname">priority</td><td>Priority of the action. </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ae137ab8b5407060529c18a8084946d0b"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ae137ab8b5407060529c18a8084946d0b">&#9670;&nbsp;</a></span>RunServer()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::RunServer </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classmxnet_1_1KVStore.html#a50db5cb1a140fb84c8e31def54270ae3">Controller</a> &amp;&#160;</td>
<td class="paramname"><em>controller</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Run as server (or scheduler) </p>
<p>The behavior of a server: </p><div class="fragment"><div class="line"><span class="keywordflow">while</span>(receive(x)) {</div><div class="line"> <span class="keywordflow">if</span> (IsCommand(x)) controller(x)</div><div class="line"> <span class="keywordflow">else</span> <span class="keywordflow">if</span> (IsKeyValue(x)) updater(x)</div><div class="line">}</div></div><!-- fragment --><dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">controller</td><td>the user-defined server controller </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a4ff4ca05f3c519ebbc2e46264e8b63dd"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4ff4ca05f3c519ebbc2e46264e8b63dd">&#9670;&nbsp;</a></span>SendCommandToServers()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::SendCommandToServers </td>
<td>(</td>
<td class="paramtype">int&#160;</td>
<td class="paramname"><em>cmd_id</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>cmd_body</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Send a command to all server nodes. </p>
<p>Send a command to all server nodes, which will make each server node run <em>controller</em> </p>
<p>This function returns after the command has been executed in all server nodes</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">cmd_id</td><td>the head of the command </td></tr>
<tr><td class="paramname">cmd_body</td><td>the body of the command </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="afa87753d90fc7e75234229834ea23abb"></a>
<h2 class="memtitle"><span class="permalink"><a href="#afa87753d90fc7e75234229834ea23abb">&#9670;&nbsp;</a></span>set_barrier_before_exit()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">void mxnet::KVStore::set_barrier_before_exit </td>
<td>(</td>
<td class="paramtype">const bool&#160;</td>
<td class="paramname"><em>barrier_before_exit</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
</div>
</div>
<a id="a352ef7eae04211eca1ed47401a6d15d5"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a352ef7eae04211eca1ed47401a6d15d5">&#9670;&nbsp;</a></span>set_updater() <span class="overload">[1/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::set_updater </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">Updater</a> &amp;&#160;</td>
<td class="paramname"><em>updater</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>set an updater </p>
<p>Given a key, assume <em>x</em> is the received (pushed) value and <em>y</em> is the value stored on the store node. The store updates <em>y</em> by <code>h(x, &amp;y)</code>. The default <em>h</em> is ASSIGN, namely <code>*y = x</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">updater</td><td>user-defined updater, default is assign </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a777f1de6348bba9ef62b56064a6e0c46"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a777f1de6348bba9ef62b56064a6e0c46">&#9670;&nbsp;</a></span>set_updater() <span class="overload">[2/2]</span></h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::set_updater </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">StrUpdater</a> &amp;&#160;</td>
<td class="paramname"><em>updater</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>set an updater with string keys </p>
<p>Given a string key, assume <em>x</em> is the received (pushed) value and <em>y</em> is the value stored on the store node. The store updates <em>y</em> by <code>h(x, &amp;y)</code>. The default <em>h</em> is ASSIGN, namely <code>*y = x</code>.</p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">updater</td><td>user-defined string updater, default is assign </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="ac646c6d489a1c47b84556e90b2176f49"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ac646c6d489a1c47b84556e90b2176f49">&#9670;&nbsp;</a></span>SetGradientCompression()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::SetGradientCompression </td>
<td>(</td>
<td class="paramtype">const std::vector&lt; std::pair&lt; std::string, std::string &gt; &gt; &amp;&#160;</td>
<td class="paramname"><em>kwargs</em></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">pure virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Set parameters to use low-bit compressed gradients. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">compression_type</td><td>type of compression </td></tr>
<tr><td class="paramname">threshold</td><td>threshold for 2bit compression </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a9e11acc2968464f907633a1c72e4d545"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a9e11acc2968464f907633a1c72e4d545">&#9670;&nbsp;</a></span>SetServerProfilerCommand()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">virtual void mxnet::KVStore::SetServerProfilerCommand </td>
<td>(</td>
<td class="paramtype">const <a class="el" href="namespacemxnet.html#a691b662ef3ae22904fc7d7d63db4c14e">KVStoreServerProfilerCommand</a>&#160;</td>
<td class="paramname"><em>type</em>, </td>
</tr>
<tr>
<td class="paramkey"></td>
<td></td>
<td class="paramtype">const std::string &amp;&#160;</td>
<td class="paramname"><em>params</em>&#160;</td>
</tr>
<tr>
<td></td>
<td>)</td>
<td></td><td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span><span class="mlabel">virtual</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Sends server profiler commands to all server nodes Only the worker with rank=0 sends the command which will be received by all servers. </p>
<dl class="params"><dt>Parameters</dt><dd>
<table class="params">
<tr><td class="paramname">type</td><td>ProfilerCommand type </td></tr>
<tr><td class="paramname">params</td><td>parameters for that command in the form of a string </td></tr>
</table>
</dd>
</dl>
</div>
</div>
<a id="a722b2150dbf50d528fce62307809f949"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a722b2150dbf50d528fce62307809f949">&#9670;&nbsp;</a></span>type()</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">const std::string&amp; mxnet::KVStore::type </td>
<td>(</td>
<td class="paramname"></td><td>)</td>
<td></td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">inline</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>return the type </p>
</div>
</div>
<h2 class="groupheader">Member Data Documentation</h2>
<a id="aa8ba7abf8334326cab19eb568cb31cfa"></a>
<h2 class="memtitle"><span class="permalink"><a href="#aa8ba7abf8334326cab19eb568cb31cfa">&#9670;&nbsp;</a></span>barrier_before_exit_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::atomic&lt;bool&gt; mxnet::KVStore::barrier_before_exit_ {true}</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>whether to do barrier when finalize </p>
</div>
</div>
<a id="a4131e7db30b5e7be34997abcf75741a6"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a4131e7db30b5e7be34997abcf75741a6">&#9670;&nbsp;</a></span>gradient_compression_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::shared_ptr&lt;kvstore::GradientCompression&gt; mxnet::KVStore::gradient_compression_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>Gradient compression object starts with GC_NONE mode Used if SetGradientCompression sets the type. Currently there is no support for un-setting gradient compression. </p>
</div>
</div>
<a id="abf0f494ba57dd7b035ece0d96eb5575f"></a>
<h2 class="memtitle"><span class="permalink"><a href="#abf0f494ba57dd7b035ece0d96eb5575f">&#9670;&nbsp;</a></span>str_updater_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmxnet_1_1KVStore.html#abe6963a386cc6dc579029349a447d1cb">StrUpdater</a> mxnet::KVStore::str_updater_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the user-defined updater with string keys </p>
</div>
</div>
<a id="ad1023ca677c6e87ccc7d92c4df48bd40"></a>
<h2 class="memtitle"><span class="permalink"><a href="#ad1023ca677c6e87ccc7d92c4df48bd40">&#9670;&nbsp;</a></span>type_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname">std::string mxnet::KVStore::type_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the kvstore type </p>
</div>
</div>
<a id="a01befb768a81a8e7a366708240ee6d06"></a>
<h2 class="memtitle"><span class="permalink"><a href="#a01befb768a81a8e7a366708240ee6d06">&#9670;&nbsp;</a></span>updater_</h2>
<div class="memitem">
<div class="memproto">
<table class="mlabels">
<tr>
<td class="mlabels-left">
<table class="memname">
<tr>
<td class="memname"><a class="el" href="classmxnet_1_1KVStore.html#a6e4a76bd57f185349c58a5a658c32a64">Updater</a> mxnet::KVStore::updater_</td>
</tr>
</table>
</td>
<td class="mlabels-right">
<span class="mlabels"><span class="mlabel">protected</span></span> </td>
</tr>
</table>
</div><div class="memdoc">
<p>the user-defined updater </p>
</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li>/work/mxnet/include/mxnet/<a class="el" href="include_2mxnet_2kvstore_8h_source.html">kvstore.h</a></li>
</ul>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Thu Jan 5 2023 00:58:44 for mxnet by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.13
</small></address>
</body>
</html>