Esempio n. 1
0
def data_6():
    # C(i) = A(i,k) + B(i,k)
    program = matrix_matrix_add_fixed()
    partitioners_A = dist.partition(program['A'], [0, 1], [3, 3], [9, 9],
                                    "row")
    partitioners_B = dist.partition(program['B'], [0, 1], [3, 3], [9, 9],
                                    "row")
    partitioners_C = dist.partition(program['C'], [0], [9], [9], "row")

    str_schedule = "[r0, r1]->{Send_A[p0, p1, i1, i2]->[0, p0, p1, i1, i2]; Send_B[p0, p1, i1, i2]->[1, p0, p1, i1, i2]; Receive_A[p0, p1, i1, i2]->[2, p0, p1, i1, i2]; Receive_B[p0, p1, i1, i2]->[3, p0, p1, i1, i2]; S0[i, k]->[4, 0, 0, i, k]}"
    #	context = isl.Set("[r0, r1]->{:r0=1 and r1=1}")
    context = isl.Set("[r0, r1]->{:r0=0 and r1=0}")
    #	context = isl.Set("[r0, r1]->{:}")
    return {
        'S0_dom': program['S0_dom'],
        'A': program['A'],
        'B': program['B'],
        'C': program['C'],
        'Access_A': program['Access_A'],
        'Access_B': program['Access_B'],
        'Access_C': program['Access_C'],
        'pr_partitioner_A': partitioners_A['pr'],
        'ps_partitioner_A': partitioners_A['ps'],
        'pr_partitioner_B': partitioners_B['pr'],
        'ps_partitioner_B': partitioners_B['ps'],
        'pr_partitioner_C': partitioners_C['pr'],
        'ps_partitioner_C': partitioners_C['ps'],
        'str_schedule': str_schedule,
        'context': context
    }
Esempio n. 2
0
def data_5():
    program = mat_mul_2D_fixed()
    partitioners_A = dist.partition(program['A'], [0, 1], [4, 3], [12, 12],
                                    "col")
    partitioners_B = dist.partition(program['B'], [0, 1], [3, 4], [12, 12],
                                    "row")
    partitioners_C = dist.partition(program['C'], [0, 1], [3, 4], [12, 12],
                                    "row")

    str_schedule = "[r0, r1]->{Send_A[p0, p1, i1, i2]->[0, p0, p1, i1, i2]; Send_B[p0, p1, i1, i2]->[1, p0, p1, i1, i2]; Receive_A[p0, p1, i1, i2]->[2, p0, p1, i1, i2]; Receive_B[p0, p1, i1, i2]->[3, p0, p1, i1, i2]; S0[i, j, k]->[4, 0, 0, i, j]}"
    #	context = isl.Set("[r0, r1]->{:r0=1 and r1=1}")  #Correct
    #	context = isl.Set("[r0, r1]->{:r0=0 and r1=0}")  #Correct
    #	context = isl.Set("[r0, r1]->{:r0=0 and r1=1}")  #Correct
    context = isl.Set("[r0, r1]->{:}")
    return {
        'S0_dom': program['S0_dom'],
        'A': program['A'],
        'B': program['B'],
        'C': program['C'],
        'Access_A': program['Access_A'],
        'Access_B': program['Access_B'],
        'Access_C': program['Access_C'],
        'pr_partitioner_A': partitioners_A['pr'],
        'ps_partitioner_A': partitioners_A['ps'],
        'pr_partitioner_B': partitioners_B['pr'],
        'ps_partitioner_B': partitioners_B['ps'],
        'pr_partitioner_C': partitioners_C['pr'],
        'ps_partitioner_C': partitioners_C['ps'],
        'str_schedule': str_schedule,
        'context': context
    }
Esempio n. 3
0
def data_4():
	program = mat_mul_2D_fixed()
	partitioners_A = dist.partition(program['A'], [0,1], [3,3], [12,12], "row")
	partitioners_B = dist.partition(program['B'], [0,1], [3,3], [12,12], "row")
	partitioners_C = dist.partition(program['C'], [0,1], [3,3], [12,12], "row")
	str_schedule = "[r]->{Send_A[p0, p1, i1, i2]->[0, p0, p1, i1, i2]; Send_B[p0, p1, i1, i2]->[1, p0, p1, i1, i2]; Receive_A[p0, p1, i1, i2]->[2, p0, p1, i1, i2]; Receive_B[p0, p1, i1, i2]->[3, p0, p1, i1, i2]; S0[i, j, k]->[4, 0, 0, i, j]}"
	context = isl.Set("[r0, r1]->{:}")
	return {'S0_dom':program['S0_dom'], 'A':program['A'], 'B':program['B'], 'C':program['C'], 'Access_A':program['Access_A'], 'Access_B':program['Access_B'], 'Access_C':program['Access_C'], 'pr_partitioner_A':partitioners_A['pr'], 'ps_partitioner_A':partitioners_A['ps'], 'pr_partitioner_B':partitioners_B['pr'], 'ps_partitioner_B':partitioners_B['ps'], 'pr_partitioner_C':partitioners_C['pr'], 'ps_partitioner_C':partitioners_C['ps'], 'str_schedule':str_schedule, 'context':context}
Esempio n. 4
0
def data_1():
	program = vec_add()
	partitioners_A = dist.partition(program['A'], [0], [4], [16], "row")
	partitioners_B = dist.partition(program['B'], [0], [4], [16], "row")
	partitioners_C = dist.partition(program['C'], [0], [4], [16], "row")
	str_schedule = "{Send_A[p0, i1]->[0, p0, i1]; Send_B[p0, i1]->[1, p0, i1]; Receive_A[p0, i1]->[2, p0, i1]; Receive_B[p0, i1]->[3, p0, i1]; S0[i]->[4, 0, i]}"
	context = isl.Set("[r0]->{:}")
	return {'S0_dom':program['S0_dom'], 'A':program['A'], 'B':program['B'], 'C':program['C'], 'Access_A':program['Access_A'], 'Access_B':program['Access_B'], 'Access_C':program['Access_C'], 'pr_partitioner_A':partitioners_A['pr'], 'ps_partitioner_A':partitioners_A['ps'], 'pr_partitioner_B':partitioners_B['pr'], 'ps_partitioner_B':partitioners_B['ps'], 'pr_partitioner_C':partitioners_C['pr'], 'ps_partitioner_C':partitioners_C['ps'], 'str_schedule':str_schedule, 'context':context}
Esempio n. 5
0
def data_6():
	# C(i) = A(i,k) + B(i,k)
	program = matrix_matrix_add_fixed()
	partitioners_A = dist.partition(program['A'], [0,1], [3,3], [9,9], "row")
	partitioners_B = dist.partition(program['B'], [0,1], [3,3], [9,9], "row")
	partitioners_C = dist.partition(program['C'], [0],   [9],  [9],    "row")

	str_schedule = "[r0, r1]->{Send_A[p0, p1, i1, i2]->[0, p0, p1, i1, i2]; Send_B[p0, p1, i1, i2]->[1, p0, p1, i1, i2]; Receive_A[p0, p1, i1, i2]->[2, p0, p1, i1, i2]; Receive_B[p0, p1, i1, i2]->[3, p0, p1, i1, i2]; S0[i, k]->[4, 0, 0, i, k]}"
#	context = isl.Set("[r0, r1]->{:r0=1 and r1=1}")
	context = isl.Set("[r0, r1]->{:r0=0 and r1=0}")
#	context = isl.Set("[r0, r1]->{:}")
	return {'S0_dom':program['S0_dom'], 'A':program['A'], 'B':program['B'], 'C':program['C'], 'Access_A':program['Access_A'], 'Access_B':program['Access_B'], 'Access_C':program['Access_C'], 'pr_partitioner_A':partitioners_A['pr'], 'ps_partitioner_A':partitioners_A['ps'], 'pr_partitioner_B':partitioners_B['pr'], 'ps_partitioner_B':partitioners_B['ps'], 'pr_partitioner_C':partitioners_C['pr'], 'ps_partitioner_C':partitioners_C['ps'], 'str_schedule':str_schedule, 'context':context}
Esempio n. 6
0
def data_1():
    program = vec_add()
    partitioners_A = dist.partition(program['A'], [0], [4], [16], "row")
    partitioners_B = dist.partition(program['B'], [0], [4], [16], "row")
    partitioners_C = dist.partition(program['C'], [0], [4], [16], "row")
    str_schedule = "{Send_A[p0, i1]->[0, p0, i1]; Send_B[p0, i1]->[1, p0, i1]; Receive_A[p0, i1]->[2, p0, i1]; Receive_B[p0, i1]->[3, p0, i1]; S0[i]->[4, 0, i]}"
    context = isl.Set("[r0]->{:}")
    return {
        'S0_dom': program['S0_dom'],
        'A': program['A'],
        'B': program['B'],
        'C': program['C'],
        'Access_A': program['Access_A'],
        'Access_B': program['Access_B'],
        'Access_C': program['Access_C'],
        'pr_partitioner_A': partitioners_A['pr'],
        'ps_partitioner_A': partitioners_A['ps'],
        'pr_partitioner_B': partitioners_B['pr'],
        'ps_partitioner_B': partitioners_B['ps'],
        'pr_partitioner_C': partitioners_C['pr'],
        'ps_partitioner_C': partitioners_C['ps'],
        'str_schedule': str_schedule,
        'context': context
    }
Esempio n. 7
0
def data_3():
    program = mat_mul_2D()
    partitioners_A = dist.partition(program['A'], [0], [3], [12], "row")
    partitioners_B = dist.partition(program['B'], [0], [3], [12], "row")
    partitioners_C = dist.partition(program['C'], [0], [3], [12], "row")
    str_schedule = "{Send_A[p0, i1, i2]->[0, p0, i1, i2]; Send_B[p0, i1, i2]->[1, p0, i1, i2]; Receive_A[p0, i1, i2]->[2, p0, i1, i2]; Receive_B[p0, i1, i2]->[3, p0, i1, i2]; S0[i, j, k]->[4, 0, i, j]}"
    context = isl.Set("[r0, r1]->{:}")
    return {
        'S0_dom': program['S0_dom'],
        'A': program['A'],
        'B': program['B'],
        'C': program['C'],
        'Access_A': program['Access_A'],
        'Access_B': program['Access_B'],
        'Access_C': program['Access_C'],
        'pr_partitioner_A': partitioners_A['pr'],
        'ps_partitioner_A': partitioners_A['ps'],
        'pr_partitioner_B': partitioners_B['pr'],
        'ps_partitioner_B': partitioners_B['ps'],
        'pr_partitioner_C': partitioners_C['pr'],
        'ps_partitioner_C': partitioners_C['ps'],
        'str_schedule': str_schedule,
        'context': context
    }