uwplse / stng

compiler for fortran stencils using verified lifting,
http://stng.uwplse.org
MIT License
17 stars 4 forks source link

Creating sketches for stencilmark tests fails #2

Open sdorkenw opened 7 years ago

sdorkenw commented 7 years ago

Hi, I built the frontend with make on a 32bit Ubuntu 14.04 setup (same as in the Dockerfile) and used it to get *.ir files with make stencil in the stencilmark_fortran folder. Then, I tried to use the provided docker image for the backend in the stng/backend directory to create the sketch file, but it fails with

[INFO]: Generating sketch level 11 from IR file: stencil_stencilmark/heat_loop0.ir
[INFO]: Sketch file: sketch/heat_loop0.sk
Traceback (most recent call last):
  File "./stng-backend.py", line 139, in <module>
    gen_sketch(args)
  File "./stng-backend.py", line 32, in gen_sketch
    sketch = whichGenerator(program, inputs, loopvars).generate()
  File "/home/sdorkenw/stng/backend/generate_sketch.py", line 221, in generate
    ret += self.generate_generators()
  File "/home/sdorkenw/stng/backend/generate_sketch.py", line 739, in generate_generators
    interpreter_result = interpret.Interpreter(inputs, outputs).interpret(self.program)
  File "/home/sdorkenw/stng/backend/interpret.py", line 68, in interpret
    self.visit(tree)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 107, in visit_Block
    map(self.visit, node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 112, in visit_WhileLoop
    self.visit(node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 107, in visit_Block
    map(self.visit, node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 112, in visit_WhileLoop
    self.visit(node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 107, in visit_Block
    map(self.visit, node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 112, in visit_WhileLoop
    self.visit(node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 107, in visit_Block
    map(self.visit, node.body)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 119, in visit_AssignExp
    self.state[node.lval.name.name][self.visit(node.lval.loc)+AOFFSET] = self.visit(node.rval)
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 103, in visit_BinExp
    ret = sympy.sympify("(("+str(self.visit(node.left))+")" + node.op +"("+str(self.visit(node.right))+"))")
  File "/usr/lib/python2.7/ast.py", line 241, in visit
    return visitor(node)
  File "/home/sdorkenw/stng/backend/interpret.py", line 90, in visit_ArrExp
    return self.state[node.name.name][loc+AOFFSET]
IndexError: list index out of range

This is however working for the CloverLeaf_Serial tests that I tried so far (eg. accelerate_kernel_loop82.ir).

shoaibkamil commented 7 years ago

Let me look into this. I believe it's an issue of allocating a large enough array size in the interpreter. Thanks for reporting.