| # Matmul example, relation representation |
| |
| <OpenScop> |
| |
| # =============================================== Global |
| # Backend Language |
| C |
| |
| # Context |
| CONTEXT |
| 1 3 0 0 0 1 |
| 1 1 -1 ## N-1 >= 0 |
| |
| # Parameter names are provided |
| 1 |
| # Parameter names |
| <strings> |
| N |
| </strings> |
| |
| # Number of statements |
| 2 |
| |
| # =============================================== Statement 1 |
| # Number of relations describing the statement |
| 3 |
| |
| # ---------------------------------------------- 1.1 Domain |
| DOMAIN |
| 4 5 2 0 0 1 |
| # e/i i j N 1 |
| 1 1 0 0 0 ## i >= 0 |
| 1 -1 0 1 -1 ## -i+N-1 >= 0 |
| 1 0 1 0 0 ## j >= 0 |
| 1 0 -1 1 -1 ## -j+N-1 >= 0 |
| |
| # ---------------------------------------------- 1.2 Scattering |
| SCATTERING |
| 5 10 5 2 0 1 |
| # e/i s1 s2 s3 s4 s5 i j N 1 |
| 0 -1 0 0 0 0 0 0 0 0 ## s1 = 0 |
| 0 0 -1 0 0 0 1 0 0 0 ## s2 = i |
| 0 0 0 -1 0 0 0 0 0 0 ## s3 = 0 |
| 0 0 0 0 -1 0 0 1 0 0 ## s4 = j |
| 0 0 0 0 0 -1 0 0 0 0 ## s5 = 0 |
| |
| # ---------------------------------------------- 1.3 Access |
| WRITE |
| 3 8 3 2 0 1 |
| # e/i Arr [1] [2] i j N 1 |
| 0 -1 0 0 0 0 0 1 ## C |
| 0 0 -1 0 1 0 0 0 ## [i] |
| 0 0 0 -1 0 1 0 0 ## [j] |
| |
| # ---------------------------------------------- 1.4 Body |
| # Statement body is provided |
| 1 |
| <body> |
| # Number of original iterators |
| 2 |
| # Original iterator names |
| i j |
| # Statement body |
| C[i][j] = 0.0; |
| </body> |
| |
| # =============================================== Statement 2 |
| # Number of relations describing the statement |
| 6 |
| |
| # ---------------------------------------------- 2.1 Domain |
| DOMAIN |
| 6 6 3 0 0 1 |
| # e/i i j k N 1 |
| 1 1 0 0 0 0 ## i >= 0 |
| 1 -1 0 0 1 -1 ## -i+N-1 >= 0 |
| 1 0 1 0 0 0 ## j >= 0 |
| 1 0 -1 0 1 -1 ## -j+N-1 >= 0 |
| 1 0 0 1 0 0 ## k >= 0 |
| 1 0 0 -1 1 -1 ## -k+N-1 >= 0 |
| |
| # ---------------------------------------------- 2.2 Scattering |
| SCATTERING |
| 7 13 7 3 0 1 |
| # e/i s1 s2 s3 s4 s5 s6 s7 i j k N 1 |
| 0 -1 0 0 0 0 0 0 0 0 0 0 0 ## s1 = 0 |
| 0 0 -1 0 0 0 0 0 1 0 0 0 0 ## s2 = i |
| 0 0 0 -1 0 0 0 0 0 0 0 0 0 ## s3 = 0 |
| 0 0 0 0 -1 0 0 0 0 1 0 0 0 ## s4 = j |
| 0 0 0 0 0 -1 0 0 0 0 0 0 1 ## s5 = 1 |
| 0 0 0 0 0 0 -1 0 0 0 1 0 0 ## s6 = k |
| 0 0 0 0 0 0 0 -1 0 0 0 0 0 ## s7 = 0 |
| |
| # ---------------------------------------------- 2.3 Access |
| WRITE |
| 3 9 3 3 0 1 |
| # e/i Arr [1] [2] i j k N 1 |
| 0 -1 0 0 0 0 0 0 1 ## C |
| 0 0 -1 0 1 0 0 0 0 ## [i] |
| 0 0 0 -1 0 1 0 0 0 ## [j] |
| |
| READ |
| 3 9 3 3 0 1 |
| # e/i Arr [1] [2] i j k N 1 |
| 0 -1 0 0 0 0 0 0 1 ## C |
| 0 0 -1 0 1 0 0 0 0 ## [i] |
| 0 0 0 -1 0 1 0 0 0 ## [j] |
| |
| READ |
| 3 9 3 3 0 1 |
| # e/i Arr [1] [2] i j k N 1 |
| 0 -1 0 0 0 0 0 0 2 ## A |
| 0 0 -1 0 1 0 0 0 0 ## [i] |
| 0 0 0 -1 0 0 1 0 0 ## [k] |
| |
| READ |
| 3 9 3 3 0 1 |
| # e/i Arr [1] [2] i j k N 1 |
| 0 -1 0 0 0 0 0 0 3 ## B |
| 0 0 -1 0 0 0 1 0 0 ## [k] |
| 0 0 0 -1 0 1 0 0 0 ## [j] |
| |
| # ---------------------------------------------- 2.4 Body |
| # Statement body is provided |
| 1 |
| <body> |
| # Number of original iterators |
| 3 |
| # Original iterator names |
| i j k |
| # Statement body |
| C[i][j] = C[i][j] + A[i][k] * B[k][j]; |
| </body> |
| |
| </OpenScop> |
| |