Program Listing for File AssignContiguously.hpp

Return to documentation for file (include/netuit/assign/AssignContiguously.hpp)

#pragma once
#ifndef NETUIT_ASSIGN_ASSIGNCONTIGUOUSLY_HPP_INCLUDE
#define NETUIT_ASSIGN_ASSIGNCONTIGUOUSLY_HPP_INCLUDE

#include <functional>
#include <stddef.h>

namespace netuit {

template<typename RETURN_TYPE>
struct AssignContiguously {

  const size_t num_threads;
  const size_t num_nodes;

  AssignContiguously(
    const size_t num_threads_,
    const size_t num_nodes_
  ) : num_threads(num_threads_)
  , num_nodes(num_nodes_)
  { ; }

  RETURN_TYPE operator()(const size_t & node_id) {
    return (node_id * num_threads / num_nodes) % num_threads;
  }

};

} // namespace netuit

#endif // #ifndef NETUIT_ASSIGN_ASSIGNCONTIGUOUSLY_HPP_INCLUDE