Я использую ublas:: Compressed Matrix для работы с UMFPACK, редким линейным решателем. Так как я делаю симуляцию, так каждый раз, когда линейная система создается несколько иначе, что может включать в себя увеличение/уменьшение матрицы коэффициентов и некоторых разреженных матричных умножений. Шкала линейной системы составляет около 25 000.
Даже если есть обязательный патч для повышения эффективности работы с UMFPACK, мне все равно нужно время от времени менять матрицу, иногда даже вычислять количество ненулевых значений было бы трудоемким (в идеале я должен укажите число ненулевых значений при инициализации матрицы). Кроме того, я использую ublas:: range для динамического добавления столбцов/строк.
Итак, мой вопрос: есть ли эффективный способ сделать это? Сейчас это слишком медленно для меня. Транспонирование матрицы с размером как 15k стоит около 6 с, а добавление около 12 тыс. Строк - это быстро (потому что я предполагаю, что это матрица строк), но добавление одинакового количества столбцов в матрицу может стоить до 20 с (я предполагаю, что для того же как и выше, так что даже я использовал матрицу столбцов, общее требуемое время было бы таким же).
Своего рода отчаяние. Любое предложение приветствуется.
Приветствия.