Параллельный алгоритм - трехдиагональная матрица
Каков порядок размера матрицы?
300-3000
так если меньше миллиарда, то зачем распределенный алгоритм?
я ведь правильно помню, что трехдиагональная матрица обращается за линейное время?
я ведь правильно помню, что трехдиагональная матрица обращается за линейное время?Точно.
эээммм1. Хотелось посмотреть на асимптотику, если это где-то есть.
так если меньше миллиарда, то зачем распределенный алгоритм?
2. Лучше я по-другому сформулирую задачу, которую хочется решить
Есть примерно следующий код
FOR (i = 0; i < N; i++)
FOR (j = 0; j < N; j++)
FOR (k = 0; k < N; k ++)
/*
* Matrix NxN is constructed here
*/
MATRIX[k] = FUNCTION(i,j,k);
SOLVE_SYSTEM(MATRIX, RIGHT_HAND(i,j,k;
ENDFOR
ENDFOR
ENDFOR
где MATRIX[k] - условно обозначает три элемента (под/над диагональю и саму диагональ)
* На данном этапе я не могу распараллелить цикл по i - будем считать это как данность.
* Я могу распараллелить цикл по j.
* Теперь думаю, что сделать с циклом по K + SOLVE_MATRIX
Если ничего не делать, то O(N^3) получается.
Но я не очень хорошо ориентируюсь в алгоритмах, поэтому буду рад, если кто-нибудь подкинет идейку
Оставить комментарий
kataich
Собственно требуется решить систему линейный уравненийс трехдиагональной матрицей. Матрица хранится не равномерно,
то есть, если например, диагональ матрицы представить как массив,
то каждый процесс хранит кусок этого массива, но априори, длины этих
кусков не известны (память распределенная). Прошу просветить по поводу
следующих двух вопросов:
- какое ускорение ожидать от существующих алгоритмов?
- можете ли привести ссылку на статью, где алгоритм описывается?