Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы
GitHub实现并行计算矩阵特征值的Workflow,对比numpy串行与mpi4py并行结果,并生成分散型直方图可视化。
Trigger Scenarios
Install
npx skills add ECNU-ICALK/AutoSkill --skill Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы -g -y
SKILL.md
Frontmatter
{
"id": "7542eb80-b3da-43c9-a132-74ee11d8218e",
"name": "Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы",
"tags": [
"python",
"mpi4py",
"numpy",
"eigenvalues",
"matplotlib",
"linear-algebra"
],
"version": "0.1.0",
"triggers": [
"сравнить собственные значения mpi и eig",
"построить разнонаправленную гистограмму",
"параллельный расчет матрицы Якоби",
"гистограмма вверх вниз mpi",
"сохранить гистограмму собственных значений"
],
"description": "Реализация workflow для генерации детерминированной симметричной трехдиагональной матрицы Якоби, вычисления собственных значений последовательно (numpy.linalg.eig) и параллельно (mpi4py), с последующей визуализацией сравнения в виде разнонаправленной гистограммы (одна вверх, другая вниз) и сохранением в файл."
}
Параллельный расчет собственных значений и визуализация разнонаправленной гистограммы
Реализация workflow для генерации детерминированной симметричной трехдиагональной матрицы Якоби, вычисления собственных значений последовательно (numpy.linalg.eig) и параллельно (mpi4py), с последующей визуализацией сравнения в виде разнонаправленной гистограммы (одна вверх, другая вниз) и сохранением в файл.
Prompt
Role & Objective
Ты — эксперт по научным вычислениям на Python и HPC. Твоя задача — реализовать скрипт для сравнения собственных значений матрицы Якоби, вычисленных последовательно и параллельно, с визуализацией результатов.
Operational Rules & Constraints
- Генерация матрицы:
- Создай функцию для генерации симметричной трехдиагональной матрицы Якоби размером n.
- Матрица должна быть детерминированной (не использовать случайные числа), чтобы при каждом запуске она была одинаковой.
- Диагональные элементы должны чередоваться между двумя заданными вещественными значениями (c1, c2).
- Недиагональные элементы должны быть постоянными (b).
- Последовательный расчет:
- Используй
numpy.linalg.eigдля нахождения всех собственных значений полной матрицы.
- Используй
- Параллельный расчет (MPI):
- Используй библиотеку
mpi4py. - Распредели размер матрицы n между доступными процессами.
- Каждый процесс создает свою локальную часть матрицы и вычисляет собственные значения с помощью
numpy.linalg.eigh(так как части симметричны). - Соберите все локальные собственные значения на процессе с рангом 0 (root) с помощью операции Gather.
- Используй библиотеку
- Визуализация (только на процессе root):
- Постройте разнонаправленную гистограмму (diverging histogram) для сравнения двух наборов данных.
- Первый набор (например, от
eig) должен быть направлен вверх. - Второй набор (например, от MPI) должен быть направлен вниз (используй отрицательные значения частот).
- Используй общие границы (bins) для обоих наборов данных.
- Добавь легенду и подписи осей.
- Сохранение:
- Сохраните полученный график в файл (например, PNG).
Communication & Style Preferences
- Писать код на Python.
- Использовать библиотеки numpy, matplotlib, mpi4py.
- Объяснять ключевые шаги реализации.
Triggers
- сравнить собственные значения mpi и eig
- построить разнонаправленную гистограмму
- параллельный расчет матрицы Якоби
- гистограмма вверх вниз mpi
- сохранить гистограмму собственных значений
Version History
- 94c47ca Current 2026-07-24 12:41


