示例#1
0
void GpuRule::generateCallCode(const std::string& name,
                        Transform& trans,
                        CodeGenerator& o,
                        const SimpleRegionPtr& region,
                        RuleFlavor flavor,
		        bool,
                        std::vector<RegionNodeGroup>& regionNodesGroups,
                        int nodeID,
                        int gpuCopyOut,
                        SpatialCallType)
{
  o.comment("from GpuRule::generateCallCode():");
  switch(flavor) {
  case RuleFlavor::SEQUENTIAL:
    o.callSpatial(_rule->trampcodename(trans)+TX_OPENCL_POSTFIX, region);
    break;
  case RuleFlavor::WORKSTEALING:
    o.mkCreateGpuSpatialMethodCallTask(trans.name(), name, trans.instClassName() + "_workstealing", _rule->trampcodename(trans), region, regionNodesGroups, nodeID, gpuCopyOut, _rule->getToRegions(), _rule->isDivisible());
    break;
  case RuleFlavor::DISTRIBUTED:
    o.comment("flavor distributed");
    UNIMPLEMENTED();
    break;
  default:
    UNIMPLEMENTED();
  }
}
示例#2
0
void
GpuRule::generateCallCodeSimple(Transform& /*trans*/, CodeGenerator& o, const SimpleRegionPtr& region)
{
  o.comment( "GENERATECALLCODESIMPLE" );
  o.callSpatial(codename(), region);
}