@@ -228,8 +228,10 @@ <h2 id="expressing-reductions">Expressing Reductions</h2>
228228</ p >
229229< p > and demonstrates how matrix-vector multiplication can be expressed in index
230230notation. Both forms are supported by TACO:</ p >
231- < pre class ="highlight "> < code class ="language-python "> y[i] = A[i,j] * x[j]
232- y[i] = sum(j, A[i,j] * x[j])</ code > </ pre >
231+ < pre class ="highlight "> < code class ="language-python "> i, j = pytaco.get_index_vars(2)
232+
233+ y[i] = A[i,j] * x[j]
234+ y[i] = pytaco.sum(j, A[i,j] * x[j])</ code > </ pre >
233235
234236< p > Reductions that are not explicitly expressed are assumed to be over the
235237smallest subexpression that captures all uses of the corresponding reduction
@@ -260,6 +262,7 @@ <h1 id="expressing-broadcasts">Expressing Broadcasts</h1>
260262< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3])
261263B = pt.tensor([3,3])
262264C = pt.tensor([3,1])
265+ i, j = pt.get_index_vars(2)
263266
264267A[i, j] = B[i, j] + C[i, j] # ERROR!!</ code > </ pre >
265268
@@ -271,6 +274,7 @@ <h1 id="expressing-transposes">Expressing Transposes</h1>
271274< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3], pt.format([dense, dense]))
272275B = pt.tensor([3,3], pt.format([dense, dense]))
273276C = pt.tensor([3,3], pt.format([dense, dense]))
277+ i, j = pt.get_index_vars(2)
274278
275279A[i,j] = B[i,j] + C[j,i]</ code > </ pre >
276280
@@ -286,15 +290,17 @@ <h1 id="expressing-transposes">Expressing Transposes</h1>
286290< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3], pt.format([dense, compressed]))
287291B = pt.tensor([3,3], pt.format([dense, compressed]))
288292C = pt.tensor([3,3], pt.format([dense, compressed]))
293+ i, j = pt.get_index_vars(2)
289294
290- A[i,j] = B[i,j] + C[j,i]</ code > </ pre >
295+ A[i,j] = B[i,j] + C[j,i] # ERROR!! </ code > </ pre >
291296
292297< p > As an alternative, you can first explicitly transpose < code > C</ code > by invoking its
293298< code > transpose</ code > method, storing the result in a temporary, and then perform the
294299addition with the already-transposed temporary:</ p >
295300< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3], pt.format([dense, compressed]))
296301B = pt.tensor([3,3], pt.format([dense, compressed]))
297302C = pt.tensor([3,3], pt.format([dense, compressed]))
303+ i, j = pt.get_index_vars(2)
298304
299305Ct = C.transpose([1, 0]) # Ct is also stored in the CSR format
300306A[i,j] = B[i,j] + Ct[i,j]</ code > </ pre >
@@ -306,15 +312,17 @@ <h1 id="expressing-transposes">Expressing Transposes</h1>
306312< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3], pt.format([dense, compressed]))
307313B = pt.tensor([3,3], pt.format([dense, compressed]))
308314C = pt.tensor([3,3], pt.format([dense, compressed], [1, 0]))
315+ i, j = pt.get_index_vars(2)
309316
310- A[i,j] = B[i,j] + C[i,j]</ code > </ pre >
317+ A[i,j] = B[i,j] + C[i,j] # ERROR!! </ code > </ pre >
311318
312319< p > We can again perform the same computation by invoking < code > transpose</ code > , this time to
313320repack < code > C</ code > into the same CSR format as < code > A</ code > and < code > B</ code > before computing the
314321addition:</ p >
315322< pre class ="highlight "> < code class ="language-python "> A = pt.tensor([3,3], pt.format([dense, compressed]))
316323B = pt.tensor([3,3], pt.format([dense, compressed]))
317324C = pt.tensor([3,3], pt.format([dense, compressed], [1, 0]))
325+ i, j = pt.get_index_vars(2)
318326
319327Cp = C.transpose([0, 1], pt.format([dense, compressed])) # Store a copy of C in the CSR format
320328A[i,j] = B[i,j] + Cp[i,j]</ code > </ pre >
0 commit comments