Beispiel #1
0
    def genStoreTileLoop(self, group: CodeBlock, dims):
        subblock = CodeBlock()
        group.append(subblock)
        subblock.append("long rel = 0;")
        for d in range(dims - 1, 0, -1):
            idx_name = self.index_name(d)
            subblock.append("for (long {} = {}; {} < {}; {} += {})".format(
                idx_name, 0, idx_name, self.codegen.TILE_DIM[d], idx_name, 1))
            newlevel = CodeBlock()
            subblock.append(newlevel)
            subblock = newlevel

        rel = self.index_name(0)
        subblock.append("for (long {} = {}; {} < {}; {} += {}, ++rel)".format(
            rel, self.LID, rel, self.codegen.TILE_DIM[0], rel, self.VECLEN))
        return subblock
Beispiel #2
0
    def genStoreTileLoop(self, group: CodeBlock, dims):
        subblock = CodeBlock()
        group.append(subblock)
        subblock.append("long rel = 0;")
        for d in range(dims - 1, 0, -1):
            idx_name = self.layout.rel_name(d)
            subblock.append("for (long {} = {}; {} < {}; {} += {})".format(
                idx_name, 0, idx_name, self.codegen.TILE_DIM[d], idx_name, 1))
            newlevel = CodeBlock()
            subblock.append(newlevel)
            subblock = newlevel

        subblock.append("{} = 0;".format(self.layout.rel_name(0)))
        subblock.append("for (long sti = 0; sti < {}; ++sti, ++rel)".format(
            self.codegen.TILE_DIM[0]))
        return subblock
Beispiel #3
0
 def genVectorLoop(self, group: CodeBlock):
     group.append("#pragma omp simd")
     group.append("for (long vit = 0; vit < {}; ++vit)".format(self.VECLEN))
     g = CodeBlock()
     group.append(g)
     return g