diff --git a/main.typ b/main.typ new file mode 100644 index 0000000..71a6a04 --- /dev/null +++ b/main.typ @@ -0,0 +1,94 @@ +#set text( + font: "Times New Roman", + size: 14pt, + lang: "ru" +) + +#show heading: set text(size: 14pt) + +#set page( + paper: "a4", + margin: ( + top: 2cm, + bottom: 2cm, + left: 3cm, + right: 1cm + ), + + numbering: "1" +) + +#set heading( + numbering: "1.1.1.1", +) +#show heading.where(level: 1): set block(below: 2em) + +#set par( + justify: true, + leading: 1em, + first-line-indent: ( + amount: 1.25cm, + all: true + ), +) + +#show "〜": h(1.25cm) + +#align( + center, + outline( + title: "СОДЕРЖАНИЕ" + ) +) + +#pagebreak() + +#align( + center, + heading( + numbering: none, + "Введение" + ) +) + +*Актуальность темы*: развитие технологий тесно связано с ростом объёмов обрабатываемых данных, особенно в сфере искусственного интеллекта. В связи с этим история высокопроизводительных вычислений становится как никогда актуальной. Рост массивов данных, развитие ИИ и необходимость ускорения вычислений делают историю языков и моделей программирования для HPC особенно важной. Эволюция подходов позволяет оптимизировать параллельные вычисления на суперкомпьютерах и ускорителях вроде GPU. Ограничения аппаратного обеспечения и растая сложность задач, требующих распределённой обработки, ведут к появлению новых вычислительных моделей. + +Первым высокоуровневым языком для HPC стал Fortran, разработанный IBM в 1954 году под руководством Джона Бэкуса, который обеспечил эффективность на быстро эволюционирующем оборудовании и остаётся стандартом для бенчмарков TOP500@noauthor_frequently_nodate. В 1960–1970-х годах последовательное программирование уступило место параллельным подходам из-за роста многоядерных систем@noauthor_history_nodate. + +В контексте развития высокопроизводительных вычислений особую роль сыграли параллельные модели и языки программирования. Уже в 1990-е годы сформировались ключевые подходы -- *message passing* и *shared memory*@noauthor_mpi_nodate. Стандарт MPI (1994 @noauthor_mpi_nodate) стал основой для распределённых систем и фактически закрепился как де-факто стандарт параллельных вычислений на кластерах. Параллельно развивался OpenMP (1997 -- для Fortran и 1998 -- для C/C++), ориентированный на многопоточное программирование для многоядерных CPU. + +Следующий значимый этап связан с появлением GPU-программирования. В 2007 году NVIDIA представила CUDA@noauthor_cuda_nodate, впервые предложив удобную модель для унифицированных вычислений на GPU. Её развитие было дополнено открытым стандартом OpenCL@noauthor_opencl_nodate (2008), получившим поддержку NVIDIA и AMD. Параллельно появился Chapel -- язык, создававшийся Cray в рамках программы DARPA HPCS (2002–2012) и ориентированный на высокопроизводительную параллельность в масштабах суперкомпьютеров@balaji_chapel_2015. Эти модели существенно расширили возможности обработки данных, обеспечив переносимость и адаптивность к гетерогенным вычислительным системам. + +В итоге эволюция -- от классических решений вроде Fortran до современных GPU-ориентированных моделей CUDA и OpenCL -- значительно упростила разработку высокопроизводительных алгоритмов. Смещение парадигм в сторону *параллелизма данных* и *гетерогенных вычислений* определяет современное состояние HPC и формирует требования к моделям программирования будущего. + +#pagebreak() + +#align( + center, + heading( + numbering: none, + "СПИСОК СОКРАЩЕНИЙ" + ) +) + +ИИ -- искуственный интеллект + +HPC (High-Performance Computing) -- высокопроизводительные вычисления + +GPU (Graphics Processing Unit) -- графический процессор + +#pagebreak() + +#align( + center, + heading( + numbering: none, + "СПИСОК ИСПОЛЬЗОВАННЫХ ИСТОЧНИКОВ" + ) +) + +#bibliography( + "references.bib", + title: none, + style: "gost-r-7-0-5-2008-numeric-alphabetical.csl" +) \ No newline at end of file diff --git a/references.bib b/references.bib new file mode 100644 index 0000000..2e53d90 --- /dev/null +++ b/references.bib @@ -0,0 +1,55 @@ + +@misc{noauthor_frequently_nodate, + title = {Frequently {Asked} {Questions} {\textbar} {TOP500}}, + url = {https://top500.org/resources/frequently-asked-questions/}, + urldate = {2025-12-08}, +} + +@misc{noauthor_history_nodate, + title = {The {History} of the {Development} of {Parallel} {Computing} {\textbar} {PARALLEL}.{RU} - Информационно-аналитический центр по параллельным вычислениям}, + url = {https://parallel.ru/history/wilson_history.html}, + urldate = {2025-12-08}, +} + +@misc{noauthor_mpi_nodate, + title = {{MPI} {Documents}}, + url = {https://www.mpi-forum.org/docs/}, + language = {en}, + urldate = {2025-12-08}, +} + +@misc{@noauthor_mpi_nodate, + title = {Parallel {Programming} - {HPC} {Wiki}}, + url = {https://hpc-wiki.info/hpc/Parallel_Programming}, + urldate = {2025-12-08}, +} + +@misc{noauthor_cuda_nodate, + title = {{CUDA} {Toolkit} {Archive}}, + url = {https://developer.nvidia.com/cuda-toolkit-archive}, + language = {en}, + urldate = {2025-12-08}, + journal = {NVIDIA Developer}, +} + +@misc{noauthor_opencl_nodate, + title = {{OpenCL} - an overview {\textbar} {ScienceDirect} {Topics}}, + url = {https://www.sciencedirect.com/topics/computer-science/opencl}, + urldate = {2025-12-08}, +} + +@incollection{balaji_chapel_2015, + title = {Chapel}, + isbn = {9780262332248}, + url = {https://direct.mit.edu/books/book/4070/chapter/168849/Chapel}, + language = {en}, + urldate = {2025-12-08}, + booktitle = {Programming {Models} for {Parallel} {Computing}}, + publisher = {The MIT Press}, + author = {Chamberlain, Bradford L.}, + editor = {Balaji, Pavan}, + month = nov, + year = {2015}, + doi = {10.7551/mitpress/9486.003.0008}, + pages = {129--160}, +}