Cleaning: Largely renamed templates to BLAS-like names

This commit is contained in:
Philippe Tillet
2015-07-11 09:36:01 -04:00
parent 281fa9c7a6
commit cfa6ea812d
40 changed files with 606 additions and 572 deletions

View File

@@ -36,30 +36,30 @@ def benchmark(template, setting, tree):
def tree_of(template, sizes, context):
if issubclass(template, isc.vaxpy):
if issubclass(template, isc.templates.axpy):
N, = sizes
x = isc.empty(N, dtype=isc.float32, context=context)
y = isc.empty(N, dtype=isc.float32, context=context)
return x + y, (x, y)
elif issubclass(template, isc.reduction):
elif issubclass(template, isc.templates.dot):
N, = sizes
x = isc.empty(N, context=context)
y = isc.empty(N, context=context)
return isc.dot(x, y), (x, y)
elif issubclass(template, isc.maxpy):
elif issubclass(template, isc.templates.ger):
M, N = sizes
A = isc.empty((M,N), context=context)
B = isc.empty((M,N), context=context)
return A + B, (A, B)
elif issubclass(template, isc.mreduction):
T = template is isc.mreduction_cols
elif issubclass(template, isc.templates.gemv):
T = template is isc.templates.gemv_t
M, N = sizes[::-1] if T else sizes
A = isc.empty((M,N), context=context)
x = isc.empty(N, context=context)
return isc.dot(A.T, x) if T else isc.dot(A, x), (A, x)
elif issubclass(template, isc.mproduct):
AT = template is isc.mproduct_tn or template is isc.mproduct_tt
BT = template is isc.mproduct_nt or template is isc.mproduct_tt
elif issubclass(template, isc.templates.gemm):
AT = template is isc.templates.gemm_tn or template is isc.templates.gemm_tt
BT = template is isc.templates.gemm_nt or template is isc.templates.gemm_tt
M, N, K = sizes
A = isc.empty((K, M) if AT else (M, K), context=context)
B = isc.empty((N, K) if BT else (K, N), context=context)
@@ -68,35 +68,35 @@ def tree_of(template, sizes, context):
return isc.dot(AA, BB), (A, B)
def memory_footprint(template, sizes):
if issubclass(template, isc.vaxpy):
if issubclass(template, isc.templates.axpy):
return 4*3*sizes[0]*1e-9
elif issubclass(template, isc.reduction):
elif issubclass(template, isc.templates.dot):
return 4*2*sizes[0]*1e-9
elif issubclass(template, isc.maxpy):
elif issubclass(template, isc.templates.ger):
return 4*3*sizes[0]*sizes[1]*1e-9
elif issubclass(template, isc.mreduction):
elif issubclass(template, isc.templates.gemv):
return 4*sizes[0]*sizes[1]*1e-9
elif issubclass(template, isc.mproduct):
elif issubclass(template, isc.templates.gemm):
return 4*(sizes[0]*sizes[1] + sizes[0]*sizes[2] + sizes[1]*sizes[2])*1e-9
def metric_of(template):
memory_bound = [isc.vaxpy, isc.reduction, isc.maxpy, isc.mreduction]
compute_bound = [isc.mproduct]
memory_bound = [isc.templates.axpy, isc.templates.dot, isc.templates.ger, isc.templates.gemv]
compute_bound = [isc.templates.gemm]
if any([issubclass(template, x) for x in memory_bound]):
return lambda sizes, t: memory_footprint(template, sizes)/t
elif any([issubclass(template, x) for x in compute_bound]):
return lambda sizes, t: 2*sizes[0]*sizes[1]*sizes[2]*1e-9/t
def genetic_infos_of(template):
if issubclass(template, isc.vaxpy):
if issubclass(template, isc.templates.axpy):
return {'categorical': [3], 'nbits': [3,4,4,2] }
elif issubclass(template, isc.reduction):
elif issubclass(template, isc.templates.dot):
return {'categorical': [3], 'nbits':[3,4,4,2]}
elif issubclass(template, isc.maxpy):
elif issubclass(template, isc.templates.ger):
return {'categorical': [5], 'nbits': [3,3,3,3,4,2]}
elif issubclass(template, isc.mreduction):
elif issubclass(template, isc.templates.gemv):
return {'categorical': [5], 'nbits': [3,3,3,3,4,2]}
elif issubclass(template, isc.mproduct):
elif issubclass(template, isc.templates.gemm):
return {'categorical': [8,9], 'nbits': [3,3,3,3,3,2,2,2,2,2,3,3]}