График

This commit is contained in:
2026-03-17 09:04:26 +03:00
parent 32f8e92bcb
commit 6f718668c8
4 changed files with 6 additions and 16 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 108 KiB

After

Width:  |  Height:  |  Size: 100 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 92 KiB

After

Width:  |  Height:  |  Size: 85 KiB

View File

@@ -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

View File

@@ -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")