а подскажите пожалуйста, я храню матрицу в виде одномерного массива. матрица квадратная….для представления этого массива в виде матрицы я использую индексацию вида элемент матрицы aij имеет в массиве индекс i*size+j…теперь я разбиваю матрицу на равные(квадратные блоки)…и вот проблема, как мне обращаться например к 2у элементу третьего блока в первой строке исходной матрицы?
4 марта 2010 в 0:00
хитрО
3 марта 2010 в 22:04
не…у нас курс параллельного программирования вроди только на третьем курсе будет…просто в предметной области разбираюсь…)
3 марта 2010 в 22:01
видимо лаба в универе
3 марта 2010 в 22:00
ну да…парллелить обработку матрицы по сьтрокам гораздо изящней, но по условию надо так реализовать:)
3 марта 2010 в 20:02
Приходилось читать код человека, который в подобном стиле хранил матрицы. Впечатления остались негативными.
3 марта 2010 в 16:05
спасибо!)
3 марта 2010 в 14:03
большая матрица m на m, разбита на маленькие n на n
у тебя даны i, j
Это будет
(i*m + j) / (n*n) блок
блоки нумеруются например так
1 2 3
4 5 6
7 8 9
в блоке это
(i *m + j) % (n*n) элемент
3 марта 2010 в 14:02
когда ты хранишь матрицу как двумерный массив – за тебя подсчёт индекса i*size + j делает компилятор. В остальном хранится так же
Кстати, тебе лучше использовать std::slice – это по сути одномерный массив, на основе которого можно представлять многомерные матрицы.
Специально для вычислений сделано.
Как я понял, ты разбиваешь матрицу для параллельных вычислений.
Не понял в чём проблема? просто кажлому блоку соответствуют определённые индексы. И всё
3 марта 2010 в 14:02
проблема в том, что я чтото не соображу каким образом обратиться к m-му элементу n-й строки какогото блока, в смысле как будет выражаться его индекс зная размер матрицы и размер блока