Есть ли какой-либо эффективный способ динамически изменять сжатие_matrix при повышении?

Я использую ublas :: Compressed Matrix для работы с UMFPACK, разреженным линейным решателем. Поскольку я занимаюсь симуляцией, каждый раз линейная система строится немного по-другому, что может включать увеличение / уменьшение матрицы коэффициентов и некоторые разреженные матричные умножения. Масштаб линейной системы около 25k.

Даже есть патч привязки для Boost для работы с UMFPACK, мне все равно нужно время от времени менять матрицу, иногда даже выяснение количества ненулевых значений может занять много времени (в идеале я должен дать количество ненулевых значений, когда я инициализирую матрицу). Кроме того, я использую ublas :: range для динамического добавления столбцов / строк.

Итак, мой вопрос: есть ли какой-нибудь эффективный способ сделать это? Сейчас это слишком медленно для меня. Транспонирование матрицы с размером, например, 15k, стоит почти 6 секунд, а добавление около 12k строк происходит быстро (потому что я предполагаю, что это матрица-строка), но добавление того же количества столбцов к матрице может стоить до 20 секунд (я думаю, для того же причина такая же, как указано выше, поэтому даже я использовал матрицу с основными столбцами, общее необходимое время было бы таким же).

Какое-то отчаяние здесь. Любые предложения приветствуются.

Ура.

10
задан He01 15 November 2010 в 19:22
поделиться