diff --git a/report/img/task1-gflops-comparison.png b/report/img/task1-gflops-comparison.png index 770efb5..a42f58a 100644 Binary files a/report/img/task1-gflops-comparison.png and b/report/img/task1-gflops-comparison.png differ diff --git a/report/img/task1-time-comparison.png b/report/img/task1-time-comparison.png index 0dcac14..081156f 100644 Binary files a/report/img/task1-time-comparison.png and b/report/img/task1-time-comparison.png differ diff --git a/report/report.tex b/report/report.tex index 2846300..d2c01cc 100755 --- a/report/report.tex +++ b/report/report.tex @@ -344,31 +344,23 @@ Host polytech \label{fig:task1-time-comparison} \end{figure} -\begin{figure}[H] - \centering - \imgplaceholder{img/task1-gflops-comparison.png} - \caption{Сравнение производительности эталонной и собственной реализаций} - \label{fig:task1-gflops-comparison} -\end{figure} - -Графическое сравнение времени решения приведено на рис.~\ref{fig:task1-time-comparison}, а сравнение достигнутой производительности --- на рис.~\ref{fig:task1-gflops-comparison}. Скрипт, использованный для построения этих графиков, приведён в приложении Д. +Графическое сравнение времени решения приведено на рис.~\ref{fig:task1-time-comparison}. Скрипт, использованный для построения данного графика, приведён в приложении Д. По полученным результатам можно сделать следующие наблюдения: \begin{itemize} \item все тестовые случаи для размеров от $1000$ до $3500$ успешно сошлись за $5$--$6$ итераций; \item время решения возрастает плавно: от $5.0083$ мс при $N = 1000$ до $14.8861$ мс при $N = 3500$; - \item производительность в GFLOPS монотонно увеличивается и достигает $1920.138$ GFLOPS на размере $N = 3500$; \item ошибка по известному решению остаётся на уровне порядка $10^{-9}$--$10^{-8}$, а невязка --- на уровне $10^{-6}$--$10^{-5}$, что подтверждает корректность полученного решения; - \item на всех рассмотренных размерах задач собственная CUDA-реализация оказывается быстрее Intel LINPACK, а ускорение по времени $S_t$ возрастает от $2.00$ до $6.72$. + \item на всех рассмотренных размерах задач собственная реализация работает быстрее Intel LINPACK, а выигрыш по времени возрастает от $2.00$ до $6.72$ раза. \end{itemize} \subsection{Выводы} -В рамках первого задания была подготовлена собственная CUDA-реализация LINPACK-подобного теста для решения плотной СЛАУ методом Якоби. Программа поддерживает запуск серии экспериментов, измерение времени выполнения, оценку производительности в GFLOPS, а также вычисление невязки и ошибки относительно известного точного решения. +В рамках первого задания была подготовлена собственная CUDA-реализация LINPACK-подобного теста для решения плотной СЛАУ методом Якоби. Программа поддерживает запуск серии экспериментов, измерение времени выполнения, а также вычисление невязки и ошибки относительно известного точного решения. Дополнительно были подготовлены пакетные файлы запуска для собственной CUDA-реализации и для стандартного Intel LINPACK. Полные тексты этих файлов приведены в приложениях Б и В. -На текущем этапе можно зафиксировать, что собственная CUDA-реализация корректно работает на узле \texttt{tornado-k40}, обеспечивает сходимость на всём исследованном диапазоне размеров и достигает производительности до $1920.138$ GFLOPS. В сопоставлении со стандартным Intel LINPACK на CPU она показывает меньшее время решения на всех исследованных размерах: ускорение возрастает от $2.00$ при $N = 1000$ до $6.72$ при $N = 3500$, а достигнутая производительность существенно выше во всём рассмотренном диапазоне. +На текущем этапе можно зафиксировать, что собственная CUDA-реализация корректно работает на узле \texttt{tornado-k40} и обеспечивает сходимость на всём исследованном диапазоне размеров. В сопоставлении со стандартным Intel LINPACK на CPU она показывает меньшее время решения на всех исследованных размерах: собственная реализация оказывается более производительной, а выигрыш по времени возрастает от $2.00$ раза при $N = 1000$ до $6.72$ раза при $N = 3500$. \newpage diff --git a/task1/scripts/plot_task1_results.py b/task1/scripts/plot_task1_results.py index ddc1e8b..d1eae3b 100644 --- a/task1/scripts/plot_task1_results.py +++ b/task1/scripts/plot_task1_results.py @@ -42,11 +42,10 @@ def plot_time(output_path: Path) -> None: marker="s", linewidth=2.2, color="#d62728", - label="CUDA-реализация", + label="Собственная реализация", ) plt.xlabel("Размер матрицы N") plt.ylabel("Время решения, мс") - plt.title("Сравнение времени решения") plt.legend(loc="upper left") plt.tight_layout() plt.savefig(output_path, bbox_inches="tight") @@ -69,11 +68,10 @@ def plot_gflops(output_path: Path) -> None: marker="s", linewidth=2.2, color="#d62728", - label="CUDA-реализация", + label="Собственная реализация", ) plt.xlabel("Размер матрицы N") plt.ylabel("Производительность, GFLOPS") - plt.title("Сравнение производительности") plt.legend(loc="upper left") plt.tight_layout() plt.savefig(output_path, bbox_inches="tight")