Q: Разработайте формулы для вычисления my_first_i и my_last_i в нашем примере.
Предположим, что p (количество ядер) и n (количество значений) доступны для всех ядер, и каждое ядро имеет значение my_id , который является уникальным идентификатором от 0 до n ‐ 1.
• Помните, что каждому ядру должно быть назначено примерно одинаковое количество элементов (сначала рассмотрим случай, когда n делится на p)
для моего текущего кода, у меня есть некоторые проблемы с elif и прочее.
Правильный ответ должен быть:
0: 0->4 # remainder 1 -> 4 value
1: 5->9 # remainder 2 -> 4 value
2: 10->14 # remainder 3 -> 4 value
3: 15->18 # 3 value
4: 19->22 # 3 value
5: 23->26 # 3 value
это мой код
remainder = 27%8 #remain 3
my_id = 6
my_first = 0
my_last = 0
p = 8
n = 26
for my_id in range(0, 7):
if (my_id == 0) and (my_id < remainder):
my_first = my_id * n/p
my_last = (my_id * n/p )+ n/p +1
elif (my_id > 0) and (my_id < remainder):
my_first = my_id * n/p + my_id +1
my_last = (my_id * n/p )+ n/p + my_id + 2
else:
my_first = (my_id * n/p) + remainder + 2
my_last = (my_id * n/p) + n/p + remainder + 2
print(my_first,"->",my_last)