Только случайная ошибка в MCVE.

я очень большая диагональная матрица, которую мне нужно разделить для параллельных вычислений. Из-за проблем с локальностью данных нет смысла перебирать матрицу и разбивать каждыйn-ый расчет междуn потоки. В настоящее время я делюk x k Диагональная матрица выполняется следующим образом, но она дает неравные разбиения с точки зрения количества вычислений (самый маленький кусок вычисляется в несколько раз длиннее самого большого).

def split_matrix(k, n):
    split_points = [round(i * k / n) for i in range(n + 1)] 
    split_ranges = [(split_points[i], split_points[i + 1],) for i in range(len(split_points) - 1)]
    return split_ranges

import numpy as np
k = 100
arr = np.zeros((k,k,))
idx = 0
for i in range(k):
    for j in range(i + 1, k):
        arr[i, j] = idx
        idx += 1


def parallel_calc(array, k, si, endi):
     for i in range(si, endi):
         for j in range(k):
             # do some expensive calculations

for start_i, stop_i in split_matrix(k, cpu_cnt):
     parallel_calc(arr, k, start_i, stop_i)

Есть ли у вас какие-либо предложения относительно реализации или функции библиотеки?

Ответы на вопрос(2)

Ваш ответ на вопрос