Как разбить "умножение матрицы на вектор" на параллельные участки кода
В общем, необходимо с помощью методов класса Parallel (и для другого варианта с помощью Task) реализовать параллельный алгоритм умножения матрицы на вектор. Уважаемые форумчане, подкиньте, пожалуйста, свои идеи, как это можно организовать. Матрицу и вектор я считываю из файла. Сам алгоритм умножения я написал, но как его распараллелить - не могу догадаться. Любые идеи пригодятся! Благодарю за внимание.
public static int[] matxvec(int [,] mat, int[] vec) //функция умножения матрицы на вектор
{
int[] res = new int[mat.GetLength(0)] ;
for (int i = 0; i < mat.GetLength(0); i++)
{
for (int j = 0; j < mat.GetLength(1); j++)
{
res[i] += mat[i, j] * vec[j];
}
}
return res;
/*int[] res = new int[mat.GetLength(0)];
Parallel.For(0, mat.GetLength(1), i =>
{
for (int j = 0; j < mat.GetLength(0); j++)
{
for (int k = 0; k < mat.GetLength(1); k++)
{
res[i] += mat[i, k] * vec[k];
}
}
});
return res;*/
}