Пример #1
0
def write_phase1_allgather_forall(builder, tr, inscription):
    buildnet.write_unpack_binding(builder,
                                  tr,
                                  builder.expand("static_cast<Tokens_{0.id}*>($bindings[$i])", tr))
    builder.for_begin("int $j = 0; $j < $thread->get_process_count(); $j++")
    builder.line("Tokens_{0.id} *$t = static_cast<Tokens_{0.id}*>($bindings[$j]);", tr)
    builder.line("$t->token_collective->value[$i] = {0.expr};", inscription)
    builder.block_end()
Пример #2
0
def write_phase1_scatter_preinit(builder, tr, inscription):
    builder.line("Tokens_{0.id} *$rbinding = static_cast<Tokens_{0.id}*>($bindings[$root]);", tr)
    buildnet.write_unpack_binding(builder, tr, builder.expand("$rbinding"))
    builder.line("const std::vector<{0.type} > &$ccdata = {0.expr};", inscription)
    builder.if_begin("$ccdata.size() != $thread->get_process_count()")
    builder.line("fprintf(stderr, \"Invalid number of scattered elements (%zu)\\n\","
                 "$ccdata.size());")
    builder.line("exit(1);")
    builder.block_end()
Пример #3
0
def write_phase1_bcast_preinit(builder, tr, inscription):
    builder.line("Tokens_{0.id} *$rbinding = static_cast<Tokens_{0.id}*>($bindings[$root]);", tr)
    buildnet.write_unpack_binding(builder, tr, builder.expand("$rbinding"))
    builder.line("const {0.type} &$ccdata = {0.expr};", inscription)
Пример #4
0
def write_phase1_gather_forall(builder, tr, inscription):
    buildnet.write_unpack_binding(builder,
                                  tr,
                                  builder.expand("static_cast<Tokens_{0.id}*>($bindings[$i])", tr))
    builder.line("$rbinding->token_collective->value[$i] = {0.expr};", inscription)