Обсуждение участницы:Trrufina: различия между версиями

Материал из Алговики
Перейти к навигации Перейти к поиску
Dan (обсуждение | вклад)
Нет описания правки
Нет описания правки
Строка 1: Строка 1:
Хорошая работа. Один маленький вопрос
Хорошая работа. Есть несколько замечаний
 
 
= Пункт 1.1 =
 
'''Огромные разрежённые матрицы часто возникают при решении таких задач, как дифференциальное уравнение в частных производных или операции с графами.'''
 
Это предложение нужно переформулировать. Разреженные матрицы часто возникают при решении дифференциальных уравнений именно численными методами.
 


= Пункт 1.2 =
= Пункт 1.2 =
Наиболее удобный CSR. Почему?
'''Наиболее удобным форматом для вычисления произведения матрицы на вектор является "Compressed Sparse Row" или сокращенно CSR-формат.'''
 
С какой точки зрения данный формат является «наиболее удобным»?
 
Данный раздел хорошо бы дополнить хотя бы кратким упоминанием других способов хранения разреженных матриц.
 
 
 
'''Алгоритм умножения матрицы на вектор полностью детерминирован и не зависит от порядка хранения элементов принадлежащих одной строке.'''
 
Будет ли влиять выполнение свойства ассоциативности для сложения на детерминированность алгоритма?
 
 
= Пункт 1.5 =
 
Лучше использовать одинаковую индексацию для псевдокода алгоритма (1.4) и для схемы реализации алгоритма.
 
 
= Пункт 1.6 =
 
'''Для вычисления матрично-векторного произведения матрицы размера <math>n*n</math> и вектора размера n в последовательном варианте требуется:'''
 
'''* <math>nnz</math> сложений,'''
'''* <math>nnz</math> умножений.'''
 
Оценка для числа сложений похоже не совсем правильная для алгоритма в 1.5 (например, для матрицы с одним ненулевым элементом).
 
 
= Пункт 1.8 =
 
Можно ли записать параллельный алгоритм, использующий больше чем n процессоров, где n - число строк(столбцов)?
 
 
= Пункт 1.9 =
 
'''Суммарная размерность входных данных: <math> 2(nnz + n) + 1 </math>'''
 
В оценке не учитывается пункт 1 – размер разреженной матрицы.
 
 
= Пункт 2.4 =
 
Непонятно какая реализация алгоритма использовалась в экспериментах. Если это собственная реализация, то нужно кратко описать язык программирования, библиотеки, которые использовались и т.п.
 
 
'''4. управляющий процессор разделяет матрицу на блоки в зависимости от числа процессоров и рассылает остальным процессорам строки матрицы и вектор'''
 
Разделение матрицы идет только по строкам или по блокам матрицы?
 
 
Опечатка - '''Данный алгоритм несмотря на кажщуюся простоту'''
 
 
Нужно описать, что подразумевается под «Matrix size» на рисунках, число ненулевых элементов или размерность матрицы, и указать обе величины в численных экспериментах.
 
 
'''Улучшенный алгоритм:'''
'''4. управляющий (нулевой) процессор собирает результат или же каждый процессор записывает свою часть результата (при помощи процедур параллельной записи)'''
 
Если в расчет и 1-го алгоритма и «улучшенного алгоритма» входила параллельная запись в файл, а не просто сборка данных на управляющем процессоре, то нужно это явно уточнить в тексте.
 
 
Опечатки - Следует заметить, что в данной реализации матрица генерировалась при помощи случайных '''числел''', и кроме того кластер, на котором '''прозиводились''' эксперименты не является однородным, различные ядра имеют различные характеристики, вследствие чего возникает "рельефность" производительности и эффективности.
 


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


И, конечно, хорошо бы действительно пересчитать на однородном кластере, сделать соответствующие диаграммы, приложить код (на algowiki есть git-репозиторий).
Нужно добавить ссылку на описание кластера.
Обратитесь к организаторам, может быть, все это возможно устроить?
Почему не проводились эксперименты только на очередях из однородных ядер на кластере ИВМ?

Версия от 00:12, 1 декабря 2016

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


Пункт 1.1

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

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


Пункт 1.2

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

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

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


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

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


Пункт 1.5

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


Пункт 1.6

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

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

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


Пункт 1.8

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


Пункт 1.9

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

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


Пункт 2.4

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


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

Разделение матрицы идет только по строкам или по блокам матрицы?


Опечатка - Данный алгоритм несмотря на кажщуюся простоту


Нужно описать, что подразумевается под «Matrix size» на рисунках, число ненулевых элементов или размерность матрицы, и указать обе величины в численных экспериментах.


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

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


Опечатки - Следует заметить, что в данной реализации матрица генерировалась при помощи случайных числел, и кроме того кластер, на котором прозиводились эксперименты не является однородным, различные ядра имеют различные характеристики, вследствие чего возникает "рельефность" производительности и эффективности.


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

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