0

Я знаю, что у Intel Fortran есть библиотеки с функциями и подпрограммами для работы с разреженными матрицами, но мне интересно, существует ли какой-то тип данных или автоматический метод для создания разреженных матриц в первом место.Автоматизированные разреженные матрицы в Fortran

СПРАВОЧНАЯ ИНФОРМАЦИЯ: У меня есть программа, которая использует 3 мерные массивы размером 3 &, которые могут быть очень большими в первых двух измерениях (от ~ 10 до ~ 100 тыс. Элементов в каждом измерении, возможно, больше). В первых 2 измерениях каждый массив в основном (95% или около того) заполнен с нулями. Чтобы программа была дружественной к машинам с «нормальным» объемом оперативной памяти, я бы хотел конвертировать в разреженные матрицы. То, как обрабатываются текущие обычные массивы &, обновленный по всему коду, в значительной степени зависит от приложения кода, поэтому я ищу способ преобразования в разреженное хранение матрицы без существенной модификации кода. В принципе, я ленив, и я не хочу пересматривать всю реализацию управления памятью или писать весь новый модуль, где мои массивы живут и управляются. Есть ли в Fortran библиотека или что-то еще, что бы реализовать тип данных или что-то еще, чтобы я мог использовать разреженное хранилище матриц без реинжиниринга каждого массива и как он обрабатывается? Спасибо за помощь. Приветствия.

ответ

0

Есть много различных форматов разреженных и много различных библиотек для обработки разреженных матриц в Fortran (например sparskit, petsc ...) Тем не менее, ни один из них не может предложить, что обработка компактного массива формализм, который доступен в Fortran для внутреннего плотные массивы (особенно обозначение подмассива). Таким образом, вам придется прикоснуться к вашему коду в нескольких местах, когда вы хотите изменить его, чтобы использовать разреженные матрицы.

+0

Я боялся этого, но я не удивлен. Похоже, это будет просто большой проект и опыт обучения! Спасибо за ваш вклад. – whit

Смежные вопросы