Я ищу интерфейс C / C ++ для эффективного вычисления огромной разреженной матрицы в Linux.Матрица может быть в миллионы раз миллионы / тысячи.Я проверил несколько существующих библиотек, но, похоже, ни одна из них не удовлетворяет всем моим требованиям,
1, мне нужно создать разреженную матрицу, динамически добавляя в нее элементы.(не для SparseLib ++)
2, мне также нужно иметь возможность создавать разреженную диагональную матрицу, чтобы я мог масштабировать столбцы другой разреженной матрицы с различными скалярами.(не нашел библиотеки для этого, и, возможно, есть другой способ масштабирования разреженной матрицы по столбцам)
3, он должен поддерживать операции матрицы, умноженные на матрицу / вектор (многие библиотеки поддерживают этибазовые операции)
4, он должен поддерживать пошаговое умножение или деление двух разреженных матриц или векторов, например. * или ./ в MATLAB (не нашел для этого библиотеку, и мне нужно этооперация, чтобы отфильтровать некоторые записи одной разреженной матрицы с другой разреженной матрицей)
5, Инверсия матрицы или линейный решатель.(Большинство библиотек предоставляют решатель для линейной системы)
Изначально я использовал scipy в Python для реализации моего алгоритма.Python потребляет слишком много памяти и работает медленно, поэтому я хотел бы преобразовать свою программу в C.
Спасибо.