def test_gather_access_footprint_2(): knl = lp.make_kernel( "{[i]: 0<=i<n}", "c[2*i] = a[i]", name="matmul", assumptions="n >= 1") knl = lp.add_and_infer_dtypes(knl, dict(a=np.float32)) from loopy.statistics import gather_access_footprints, count fp = gather_access_footprints(knl) params = {"n": 200} for key, footprint in six.iteritems(fp): assert count(knl, footprint).eval_with_dict(params) == 200 print(key, count(knl, footprint))
def test_strided_footprint(): param_dict = dict(n=2**20) knl = lp.make_kernel("[n] -> {[i]: 0<=i<n}", ["z[i] = x[3*i]"], name="s3") knl = lp.add_and_infer_dtypes(knl, dict(x=np.float32)) unr = 4 bx = 256 knl = lp.split_iname(knl, "i", bx * unr, outer_tag="g.0", slabs=(0, 1)) knl = lp.split_iname(knl, "i_inner", bx, outer_tag="unr", inner_tag="l.0") footprints = lp.gather_access_footprints(knl) x_l_foot = footprints[('x', 'read')] from loopy.statistics import count num = count(knl, x_l_foot).eval_with_dict(param_dict) denom = count(knl, x_l_foot.remove_divs()).eval_with_dict(param_dict) assert 2 * num < denom
def test_gather_access_footprint(): knl = lp.make_kernel("{[i,k,j]: 0<=i,j,k<n}", ["c[i, j] = sum(k, a[i, k]*b[k, j]) + a[i,j]"], name="matmul", assumptions="n >= 1") knl = lp.add_and_infer_dtypes(knl, dict(a=np.float32, b=np.float32)) from loopy.statistics import gather_access_footprints, count fp = gather_access_footprints(knl) for key, footprint in six.iteritems(fp): print(key, count(knl, footprint))
def test_gather_access_footprint(): knl = lp.make_kernel( "{[i,k,j]: 0<=i,j,k<n}", [ "c[i, j] = sum(k, a[i, k]*b[k, j]) + a[i,j]" ], name="matmul", assumptions="n >= 1") knl = lp.add_and_infer_dtypes(knl, dict(a=np.float32, b=np.float32)) from loopy.statistics import gather_access_footprints, count fp = gather_access_footprints(knl) for key, footprint in six.iteritems(fp): print(key, count(knl, footprint))