// Original CPU teaching model; not a device simulator or benchmark.
#include <iostream>
#include <vector>
#include <algorithm>
#include <numeric>
#include <stdexcept>

void require(bool ok) { if (!ok) throw std::runtime_error("model check failed"); }

int main() {
 const std::vector<int> a{1,2,3,4,5,6}; std::vector<int> partial;
 for(std::size_t start=0;start<a.size();start+=4) {
  int sum=0; for(std::size_t i=start;i<std::min(start+4,a.size());++i) sum+=a[i];
  partial.push_back(sum);
 }
 const int result=std::accumulate(partial.begin(),partial.end(),0);
 require(result==std::accumulate(a.begin(),a.end(),0) && partial==std::vector<int>({10,11}));
 std::cout<<"partials="<<partial[0]<<' '<<partial[1]<<" sum="<<result<<'\n';
}

