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 }
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 }
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}
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}
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}
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 }
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 }