Параллельная программа, работа с остатком в python - PullRequest
0 голосов
/ 17 января 2020

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)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...