<div dir="ltr"><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px">I have written parallel implementation of sums in groups using RcppParallel.</span><br><div><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px"><br></span></div><div><pre class="" style="margin-top:0px;padding:5px;border:0px;font-size:13px;overflow:auto;width:auto;max-height:600px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;color:rgb(57,51,24);word-wrap:normal;background-color:rgb(238,238,238)"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:inherit"><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">//</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">Rcpp</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">depends</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">RcppParallel</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)]]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,128,128)">#include <Rcpp.h></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,128,128)">#include <RcppParallel.h></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
using namespace Rcpp</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
using namespace RcppParallel</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

struct SumsG</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> public Worker
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  const RVector</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">double</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  const RVector</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">int</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

  RVector</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">double</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

  SumsG</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">const NumericVector v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> const IntegerVector gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> NumericVector sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">):</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  SumsG</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">const SumsG</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">&</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> p</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> Split</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">):</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">p.v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><a href="http://p.gi">p.gi</a></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><a href="http://p.sg">p.sg</a></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

  void operator</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">()(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">std</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">size_t begin</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> std</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">size_t end</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">for</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">std</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">size_t i </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> begin</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> i </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> end</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">++)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
      sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">+=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">];</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

  void join</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">const SumsG</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">&</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> p</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">for</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">std</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">size_t i </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">0</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">;</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> i </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sg.length</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">();</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">++)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
      sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">+=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> <a href="http://p.sg">p.sg</a></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">i</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">];</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">};</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">//</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">Rcpp</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">export</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
List sumsingroups</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">NumericVector v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> IntegerVector gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> int ni</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  NumericVector sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">ni</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">);</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  SumsG p</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">v</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> gi</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sg</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">);</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
  parallelReduce</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">0</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> v.length</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> p</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">);</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">

  </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">return</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> List</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">::</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">create</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">_</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">"sg"</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> <a href="http://p.sg">p.sg</a></span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">);</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span></code></pre></div><div><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px">It compiles using </span><code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">Rcpp::sourceCpp</code><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px">. Now when I call it from R </span><code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">sumsingroups(1:10, rep(0:1, each = 5), 2)</code><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px"> several times I get the right answer (</span><code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">15 40</code><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px">) and then something different (usually some multiplicative of the right answer). Running</span><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px"><br></span></div><div><span style="font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;font-size:15px;line-height:19.5px"><br></span></div><div><pre class="" style="margin-top:0px;padding:5px;border:0px;font-size:13px;overflow:auto;width:auto;max-height:600px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;color:rgb(57,51,24);word-wrap:normal;background-color:rgb(238,238,238)"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:inherit"><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">res </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><-</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sumsingroups</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">10</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> rep</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">0</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> each </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">5</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">2</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">for</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">i </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">in</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1000</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">{</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    tmp </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"><-</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> sumsingroups</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">10</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> rep</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">0</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">:</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">,</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> each </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">5</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">),</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">2</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">if</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">res</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]][</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">!=</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> tmp</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]][</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">])</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,139)">break</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
    Sys.sleep</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">(</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">0.1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">)</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">}</span></code></pre></div><div><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:19.5px">breaks at random iteration returning</p><pre class="" style="margin-top:0px;padding:5px;border:0px;font-size:13px;overflow:auto;width:auto;max-height:600px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;color:rgb(57,51,24);word-wrap:normal;background-color:rgb(238,238,238)"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:inherit"><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">$</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">sg
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">  </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">60</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">160</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:19.5px">or</p><pre class="" style="margin-top:0px;padding:5px;border:0px;font-size:13px;overflow:auto;width:auto;max-height:600px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;color:rgb(57,51,24);word-wrap:normal;background-color:rgb(238,238,238)"><code style="margin:0px;padding:0px;border:0px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:inherit"><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">$</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">sg
</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">[</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">1</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)">]</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">30</span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(0,0,0)"> </span><span class="" style="margin:0px;padding:0px;border:0px;color:rgb(128,0,0)">80</span></code></pre><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:19.5px">I am new to <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">Rcpp</code> and <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">RcppParallel</code> and do not know what could cause such behavior.</p><p style="margin:0px 0px 1em;padding:0px;border:0px;font-size:15px;clear:both;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:19.5px"><span style="margin:0px;padding:0px;border:0px">Things that did not help:</span><br></p></div><div><ol style="margin:0px 0px 1em 30px;padding:0px;border:0px;font-size:15px;font-family:'Helvetica Neue',Helvetica,Arial,sans-serif;line-height:19.5px"><li style="margin:0px 0px 0.5em;padding:0px;border:0px;word-wrap:break-word">Added <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">for (std::size_t i = 0; i < sg.length(); i++) sg[i] = 0;</code> to both of constructors.</li><li style="margin:0px 0px 0.5em;padding:0px;border:0px;word-wrap:break-word">Changed names so that they are different in <code style="margin:0px;padding:1px 5px;border:0px;font-size:13px;font-family:Consolas,Menlo,Monaco,'Lucida Console','Liberation Mono','DejaVu Sans Mono','Bitstream Vera Sans Mono','Courier New',monospace,sans-serif;white-space:pre-wrap;background-color:rgb(238,238,238)">Worker</code> definition and in function implementation.</li></ol></div></div>