График
This commit is contained in:
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 |
@@ -344,31 +344,23 @@ Host polytech
|
|||||||
\label{fig:task1-time-comparison}
|
\label{fig:task1-time-comparison}
|
||||||
\end{figure}
|
\end{figure}
|
||||||
|
|
||||||
\begin{figure}[H]
|
Графическое сравнение времени решения приведено на рис.~\ref{fig:task1-time-comparison}. Скрипт, использованный для построения данного графика, приведён в приложении Д.
|
||||||
\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}. Скрипт, использованный для построения этих графиков, приведён в приложении Д.
|
|
||||||
|
|
||||||
По полученным результатам можно сделать следующие наблюдения:
|
По полученным результатам можно сделать следующие наблюдения:
|
||||||
\begin{itemize}
|
\begin{itemize}
|
||||||
\item все тестовые случаи для размеров от $1000$ до $3500$ успешно сошлись за $5$--$6$ итераций;
|
\item все тестовые случаи для размеров от $1000$ до $3500$ успешно сошлись за $5$--$6$ итераций;
|
||||||
\item время решения возрастает плавно: от $5.0083$ мс при $N = 1000$ до $14.8861$ мс при $N = 3500$;
|
\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 ошибка по известному решению остаётся на уровне порядка $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}
|
\end{itemize}
|
||||||
|
|
||||||
\subsection{Выводы}
|
\subsection{Выводы}
|
||||||
|
|
||||||
В рамках первого задания была подготовлена собственная CUDA-реализация LINPACK-подобного теста для решения плотной СЛАУ методом Якоби. Программа поддерживает запуск серии экспериментов, измерение времени выполнения, оценку производительности в GFLOPS, а также вычисление невязки и ошибки относительно известного точного решения.
|
В рамках первого задания была подготовлена собственная CUDA-реализация LINPACK-подобного теста для решения плотной СЛАУ методом Якоби. Программа поддерживает запуск серии экспериментов, измерение времени выполнения, а также вычисление невязки и ошибки относительно известного точного решения.
|
||||||
|
|
||||||
Дополнительно были подготовлены пакетные файлы запуска для собственной CUDA-реализации и для стандартного Intel 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
|
\newpage
|
||||||
|
|||||||
@@ -42,11 +42,10 @@ def plot_time(output_path: Path) -> None:
|
|||||||
marker="s",
|
marker="s",
|
||||||
linewidth=2.2,
|
linewidth=2.2,
|
||||||
color="#d62728",
|
color="#d62728",
|
||||||
label="CUDA-реализация",
|
label="Собственная реализация",
|
||||||
)
|
)
|
||||||
plt.xlabel("Размер матрицы N")
|
plt.xlabel("Размер матрицы N")
|
||||||
plt.ylabel("Время решения, мс")
|
plt.ylabel("Время решения, мс")
|
||||||
plt.title("Сравнение времени решения")
|
|
||||||
plt.legend(loc="upper left")
|
plt.legend(loc="upper left")
|
||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
plt.savefig(output_path, bbox_inches="tight")
|
plt.savefig(output_path, bbox_inches="tight")
|
||||||
@@ -69,11 +68,10 @@ def plot_gflops(output_path: Path) -> None:
|
|||||||
marker="s",
|
marker="s",
|
||||||
linewidth=2.2,
|
linewidth=2.2,
|
||||||
color="#d62728",
|
color="#d62728",
|
||||||
label="CUDA-реализация",
|
label="Собственная реализация",
|
||||||
)
|
)
|
||||||
plt.xlabel("Размер матрицы N")
|
plt.xlabel("Размер матрицы N")
|
||||||
plt.ylabel("Производительность, GFLOPS")
|
plt.ylabel("Производительность, GFLOPS")
|
||||||
plt.title("Сравнение производительности")
|
|
||||||
plt.legend(loc="upper left")
|
plt.legend(loc="upper left")
|
||||||
plt.tight_layout()
|
plt.tight_layout()
|
||||||
plt.savefig(output_path, bbox_inches="tight")
|
plt.savefig(output_path, bbox_inches="tight")
|
||||||
|
|||||||
Reference in New Issue
Block a user