Обсуждение участницы:Trrufina

Материал из Алговики
Перейти к навигации Перейти к поиску

Хорошая работа. Есть несколько замечаний

Спасибо! Внесла небольшие правки в статью по замечаниям. На некоторые замечания ответила в этом тексте

1 Пункт 1.1

Огромные разрежённые матрицы часто возникают при решении таких задач, как дифференциальное уравнение в частных производных или операции с графами.

Это предложение нужно переформулировать. Разреженные матрицы часто возникают при решении дифференциальных уравнений именно численными методами.


2 Пункт 1.2

Наиболее удобным форматом для вычисления произведения матрицы на вектор является "Compressed Sparse Row" или сокращенно CSR-формат.

С какой точки зрения данный формат является «наиболее удобным»?

Данный раздел хорошо бы дополнить хотя бы кратким упоминанием других способов хранения разреженных матриц.


Алгоритм умножения матрицы на вектор полностью детерминирован и не зависит от порядка хранения элементов принадлежащих одной строке.

Будет ли влиять выполнение свойства ассоциативности для сложения на детерминированность алгоритма?


3 Пункт 1.5

Лучше использовать одинаковую индексацию для псевдокода алгоритма (1.4) и для схемы реализации алгоритма.


4 Пункт 1.6

Для вычисления матрично-векторного произведения матрицы размера [math]n*n[/math] и вектора размера n в последовательном варианте требуется:

* [math]nnz[/math] сложений, * [math]nnz[/math] умножений.

Оценка для числа сложений похоже не совсем правильная для алгоритма в 1.5 (например, для матрицы с одним ненулевым элементом).


5 Пункт 1.8

Можно ли записать параллельный алгоритм, использующий больше чем n процессоров, где n - число строк(столбцов)?


6 Пункт 1.9

Суммарная размерность входных данных: [math] 2(nnz + n) + 1 [/math]

В оценке не учитывается пункт 1 – размер разреженной матрицы.

Учитываются, размер разреженной матрицы n, хранится она в формате CSR: 2 nnz + n + 1 памяти, плюс x, плотный вектор размера n

7 Пункт 2.4

Непонятно какая реализация алгоритма использовалась в экспериментах. Если это собственная реализация, то нужно кратко описать язык программирования, библиотеки, которые использовались и т.п. Собственная реализация на языке C, никаких дополнительных библиотек кроме стандартных библиотек языка и mpi.h не использовалось

4. управляющий процессор разделяет матрицу на блоки в зависимости от числа процессоров и рассылает остальным процессорам строки матрицы и вектор

Разделение матрицы идет только по строкам или по блокам матрицы? Разделение происходит по блокам, которые содержат целое число строк. Число строк на каждом процессоре равно [math]\frac{n}{k}[/math]


Опечатка - исправила


Нужно описать, что подразумевается под «Matrix size» на рисунках, число ненулевых элементов или размерность матрицы, и указать обе величины в численных экспериментах. «Matrix size» равно [math]n[/math]. В экспериментах число ненулевых элементов задавалось как [math]n * \sqrt{n}[/math]


Улучшенный алгоритм: 4. управляющий (нулевой) процессор собирает результат или же каждый процессор записывает свою часть результата (при помощи процедур параллельной записи)

Если в расчет и 1-го алгоритма и «улучшенного алгоритма» входила параллельная запись в файл, а не просто сборка данных на управляющем процессоре, то нужно это явно уточнить в тексте. Нет, запись в файл не производилась в экспериментах


Опечатки - исправила.


Тестирование производилось на кластере cluster2 ИВМ РАН.

Нужно добавить ссылку на описание кластера. Почему не проводились эксперименты только на очередях из однородных ядер на кластере ИВМ? Потому что очереди из однородных ядер содержат 16 или 32 ядер, мне этого было недостаточно. Cсылку добавила.