def test_cholesky():
    A = dummy_matrix()
    B = dummy_matrix()
    C = dummy_matrix(num_dims=3)
    program = lpcompile(CHOLESKY)(A, B, C, 313, 0)
    assert (find_starters(program, input_matrices=["I"])) == [(0, {})]
    assert len(find_terminators(program, output_matrices=["O"])) == 49141
예제 #2
0
def test_qr():
    A = dummy_matrix(num_dims=2)
    V = dummy_matrix(num_dims=2)
    T = dummy_matrix(num_dims=2)
    R = dummy_matrix(num_dims=2)
    S = dummy_matrix(num_dims=4)
    t = time.time()
    program = lpcompile(QR)(A, V, T, R, S, 16, 0)
    #states = walk_program(program)
    #idx = np.random.choice(len(states),  len(states) - 1, replace=False)[0]
    #states = states[idx:idx+1]
    states = [(8, {'j': 1, 'level': 0, 'k': 6, 'i': 1})]
    print(states)
    times = []
    print("number of states", len(states))
    actual = time.time()
    for p_idx, loop_vars in states:
        r_call_abstract_with_scope = program[p_idx]
        current_node = (p_idx, loop_vars)
        scope = r_call_abstract_with_scope.scope.copy()
        children = find_children(program, p_idx, loop_vars)
        for p_idx_child, child_vars in children:
            child_parents = find_parents(program, p_idx_child, child_vars)
            assert current_node in child_parents
    e = time.time()
    times.append(e - actual)
    print("mean find children and parents", np.mean(times))
    print("full time ", e - t)
    print("std time find children and parents", np.std(times))
예제 #3
0
def test_tsqr():
    A = dummy_matrix(num_dims=1)
    V = dummy_matrix(num_dims=2)
    T = dummy_matrix(num_dims=2)
    R = dummy_matrix(num_dims=2)
    program = lpcompile(TSQR)(A, V, T, R, 16)
    verify_program(program)
예제 #4
0
def test_qr():
    A = dummy_matrix(num_dims=2)
    V = dummy_matrix(num_dims=2)
    T = dummy_matrix(num_dims=2)
    R = dummy_matrix(num_dims=2)
    S = dummy_matrix(num_dims=4)
    program = lpcompile(QR)(A, V, T, R, S, 4, 0)
    verify_program(program)
예제 #5
0
def test_gemm():
    A = dummy_matrix(num_dims=2)
    B = dummy_matrix(num_dims=2)
    M = 4
    N = 4
    K = 4
    Temp = dummy_matrix(num_dims=4)
    Out = dummy_matrix(num_dims=3)
    program = lpcompile(GEMM)(A, B, M, N, K, Temp, Out)
    verify_program(program)
def test_qr():
    A = dummy_matrix(num_dims=2)
    V = dummy_matrix(num_dims=2)
    T = dummy_matrix(num_dims=2)
    R = dummy_matrix(num_dims=2)
    S = dummy_matrix(num_dims=4)
    M = 256
    program = lpcompile(QR)(A, V, T, R, S, M, 0)
    assert len(find_starters(program, input_matrices=["I"])) == M
    assert len(find_terminators(program, output_matrices=["Rs"])) == 129920
def test_gemm():
    A = dummy_matrix(num_dims=2)
    B = dummy_matrix(num_dims=2)
    M = 4
    N = 4
    K = 4
    Temp = dummy_matrix(num_dims=4)
    Out = dummy_matrix(num_dims=3)
    program = lpcompile(GEMM)(A, B, M, N, K, Temp, Out)
    assert len(find_starters(program, input_matrices=["A", "B"])) == M * N * K
    assert len(find_terminators(program, output_matrices=["Out"])) == M * N
예제 #8
0
def test_bdfac():
    A = dummy_matrix(num_dims=2)
    V = dummy_matrix(num_dims=3)
    T = dummy_matrix(num_dims=3)
    R = dummy_matrix(num_dims=4)
    S = dummy_matrix(num_dims=4)
    VR = dummy_matrix(num_dims=3)
    TR = dummy_matrix(num_dims=3)
    L = dummy_matrix(num_dims=4)
    SR = dummy_matrix(num_dims=4)
    program = lpcompile(BDFAC)(A, V, T, R, S, VR, TR, SR, L, 256, 0)
    t = time.time()
    print(find_children(program, 15, {'j': 2, 'k': 2, 'i': 1, 'level': 1}))
    e = time.time()
    print(e - t)
예제 #9
0
 def test_types_simple_2(self):
     parser, type_checker, f3_ast = compiler.lpcompile(F3)
     tree = astor.dump_tree(f3_ast)
     assert type_checker.decl_types['c'] == frontend.ConstFloatType
     assert type_checker.decl_types['d'] == frontend.ConstFloatType
     assert type_checker.decl_types['e'] == frontend.ConstIntType
예제 #10
0
 def test_types_simple(self):
     parser, type_checker, f2_ast = compiler.lpcompile(F2)
     tree = astor.dump_tree(f2_ast)
     assert type_checker.decl_types['a'] == frontend.ConstFloatType
     assert type_checker.decl_types['b'] == frontend.ConstIntType
예제 #11
0
 def test_types_for_loop_nested_if_statment(self):
     parser, type_checker, f_ast = compiler.lpcompile(F9)
     assert type_checker.decl_types['z'] == frontend.LinearIntType
     assert type_checker.decl_types['i'] == frontend.LinearIntType
예제 #12
0
 def test_types_if_statement_no_err(self):
     parser, type_checker, f_ast = compiler.lpcompile(F7_no_err)
     assert type_checker.decl_types['f'] == frontend.ConstFloatType
     assert type_checker.decl_types['d'] == frontend.ConstFloatType
예제 #13
0
 def test_types_if_statement_err(self):
     try:
         parser, type_checker, f_ast = compiler.lpcompile(F7_err)
     except exceptions.LambdaPackParsingException:
         pass
예제 #14
0
def test_cholesky():
    A = dummy_matrix()
    B = dummy_matrix()
    C = dummy_matrix(num_dims=3)
    program = lpcompile(CHOLESKY)(A, B, C, 8, 0)
    verify_program(program)
예제 #15
0
def test_simple_nonlinear():
    A = dummy_matrix()
    B = dummy_matrix()
    program = lpcompile(SimpleTestNonLinear)(A, B, int(8))
    verify_program(program)
예제 #16
0
def test_simple_linear_2():
    A = dummy_matrix()
    B = dummy_matrix()
    program = lpcompile(SimpleTestLinear2)(A, B, int(8))
    verify_program(program)
예제 #17
0
 def test_types_compound_expr_3(self):
     parser, type_checker, f_ast = compiler.lpcompile(F6)
     assert type_checker.return_node_type == frontend.ConstFloatType
예제 #18
0
                                            X_sharded.shape[0]), shard_sizes=(shard_size*b_fac, shard_size), write_header=False, safe=False)
T_sharded = BigMatrix("tsqr_test_T", shape=(num_tree_levels*shard_size*b_fac,
                                            X_sharded.shape[0]), shard_sizes=(shard_size*b_fac, shard_size), write_header=False, safe=False)
I = BigMatrix("I", shape=(N, N), shard_sizes=(
    shard_size, shard_size), write_header=True, safe=False)
Vs = BigMatrix("Vs", shape=(num_tree_levels, N, N), shard_sizes=(
    1, shard_size, shard_size), write_header=True, safe=False)
Ts = BigMatrix("Ts", shape=(num_tree_levels, N, N), shard_sizes=(
    1, shard_size, shard_size), write_header=True, safe=False)
Rs = BigMatrix("Rs", shape=(num_tree_levels, N, N), shard_sizes=(
    1, shard_size, shard_size), write_header=True, safe=False)
Ss = BigMatrix("Ss", shape=(N, N, N, num_tree_levels*shard_size), shard_sizes=(shard_size,
                                                                               shard_size, shard_size, shard_size), write_header=True, parent_fn=parent_fn, safe=False)
#tsqr = frontend.lpcompile(TSQR_BinTree)
N_blocks = X_sharded.num_blocks(0)
program_compiled_linear = compiler.lpcompile(SimpleTestLinear)(Vs, Ts)
program_compiled_nonlinear = compiler.lpcompile(
    SimpleTestNonLinear)(Vs, Ts, 100)
program_compiled_QR = compiler.lpcompile(QR)(I, Vs, Ts, Rs, Ss, 16, 0)

start = timer()
#print("children linear", compiler.find_children(program_compiled_linear[0], program_compiled_linear, level=0, j=4, i=3))
#print("children nonlinear", compiler.find_children(program_compiled_nonlinear[0], program_compiled_nonlinear, level=1, k=8, i=0))
#print("children qr", compiler.find_children(program_compiled_QR[1], program_compiled_QR, i=0, j=0, level=0))
print("children", compiler.find_children(
    program_compiled_QR[9], program_compiled_QR, k=2, j=3, i=1))
print("parents", compiler.find_parents(
    program_compiled_QR[6], program_compiled_QR, i=2, j=3))
#print("parents", compiler.find_parents(program_compiled_QR[2], program_compiled_QR, i=0, j=0, level=2))
end = timer()
print(end - start)