size=tile) context.synchronize() cublas_dot(devA2, devB2, devC2, alpha=alpha, beta=beta) partial1 = ng.empty( (devC1.shape[0], 1), dtype=np.float32) partial2 = partial1[0:1, 0:1] if ng.min( ng.finite(devC1), partial=partial1, out=partial2).get()[0, 0] == 0.0: print "Error: NaN KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" % ( K, C, N, alpha, beta, itemsize) exit() diff = ng.max(abs(devC2 - devC1), partial=partial1, out=partial2).get()[0, 0] mean = ng.mean(abs(devC2), partial=partial1, out=partial2).get()[0, 0] pctErr = 100 * diff / mean
if op[1] == 't': devB1, devB2 = devB1.T, devB2.T for tile in (32,64,128): if op == 'nt' and tile != 128: continue try: ng.dot(devA1, devB1, devC1, alpha=alpha, beta=beta, size=tile) context.synchronize() cublas_dot(devA2, devB2, devC2, alpha=alpha, beta=beta) partial1 = ng.empty((devC1.shape[0],1), dtype=np.float32) partial2 = partial1[0:1,0:1] if ng.min(ng.finite(devC1), partial=partial1, out=partial2).get()[0,0] == 0.0: print("Error: NaN KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" % (K,C,N, alpha,beta, itemsize)) exit() diff = ng.max(abs(devC2 - devC1), partial=partial1, out=partial2).get()[0,0] mean = ng.mean(abs(devC2), partial=partial1, out=partial2).get()[0,0] pctErr = 100 * diff / mean if pctErr > maxerr: print("Error: %.3f%% diff: %.5f mean %.5f op: %s tile: %d KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" % (pctErr, diff, mean, op, tile, K,C,N, alpha,beta, itemsize)) exit() except drv.Error as e: print("op: %s tile: %d KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" %
if op[1] == 't': devB1, devB2 = devB1.T, devB2.T for tile in ("128x32","32x128",): if tile not in implemented[op]: continue try: ng.dot(devA1, devB1, devC1, alpha=alpha, beta=beta, size=tile) #context.synchronize() cublas_dot(devA2, devB2, devC2, alpha=alpha, beta=beta) partial1 = ng.empty((devC1.shape[0],1), dtype=np.float32) #partial1 = devPs.share((devC1.shape[0],1), dtype=np.float32) partial2 = partial1[0:1,0:1] if ng.min(ng.finite(devC1), partial=partial1, out=partial2).get()[0,0] == 0.0: print("Error: NaN op: %s tile: %s KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" % (op, tile, K,C,N, alpha,beta, itemsize)) exit() diff = ng.max(abs(devC2 - devC1), partial=partial1, out=partial2).get()[0,0] mean = ng.mean(abs(devC2), partial=partial1, out=partial2).get()[0,0] pctErr = 100 * diff / mean if pctErr > maxerr: print("Error: %.3f%% diff: %.5f mean %.5f op: %s tile: %s KCN: (%d,%d,%d) ab: (%f,%f) dtype: %d" % (pctErr, diff, mean, op, tile, K,C,N, alpha,beta, itemsize)) print devC1.get() print devC2.get() exit()