|
185 | 185 | \end{minipage} |
186 | 186 | \end{frame} |
187 | 187 |
|
| 188 | +\begin{frame} |
| 189 | + \begin{center} |
| 190 | + {\huge А зачем мне разреженная линейная алгебра?} |
| 191 | + \\ |
| 192 | + Я же программист \ldots |
| 193 | + \\ |
| 194 | + {\tiny \ldots а не математик} |
| 195 | + \end{center} |
| 196 | +\end{frame} |
| 197 | + |
188 | 198 | \begin{frame}[fragile] |
189 | 199 | \frametitle{Разреженная линейная алгебра} |
190 | 200 | \begin{itemize} |
|
267 | 277 | \end{itemize} |
268 | 278 | \end{frame} |
269 | 279 |
|
| 280 | +\begin{frame} |
| 281 | + \begin{center} |
| 282 | + {\huge Знакомьтесь, GraphBLAS} |
| 283 | + \\ |
| 284 | + Как BLAS, только Graph |
| 285 | + \\ |
| 286 | + {\tiny Сосед SparseBLAS по палате} |
| 287 | + \end{center} |
| 288 | +\end{frame} |
| 289 | + |
| 290 | + |
270 | 291 | \begin{frame}[fragile] |
271 | | - \frametitle{GraphBLAS\footnote{\url{https://graphblas.org/}}} |
| 292 | + \frametitle{GraphBLAS API\footnote{\url{https://graphblas.org/}}} |
272 | 293 | \begin{itemize} |
273 | 294 | \item API для создания алгоритмов анализа графов на основе линейной алгебры |
274 | 295 | \begin{itemize} |
275 | 296 | \item Различные операции над матрицами и векторами (\underline{\textbf{разреженными}}) |
276 | 297 | \item Параметризация алгебраическими структурами: полукольцами, моноидами и т.д. |
277 | 298 | \end{itemize} |
278 | | - \pause |
| 299 | + %\pause |
279 | 300 | \item Позволяет выражать \underline{\textbf{различные}} алгоритмы |
280 | 301 | \begin{itemize} |
281 | 302 | \item Обход в ширину, поиск кратчайших путей, достижимость, \ldots |
282 | 303 | \item Подсчёт треугольников, PageRank, остовные деревья, кластеризация,\ldots |
283 | 304 | \item Запросы с регулярными (RPQ) и контекстно-свободными (CFPQ) ограничениями \ldots |
284 | 305 | \end{itemize} |
285 | | - \pause |
| 306 | + %\pause |
286 | 307 | \item Подробнее |
287 | 308 | \begin{itemize} |
288 | 309 | \item The GraphBLAS C API Specification\footnote{\url{https://graphblas.org/docs/GraphBLAS_API_C_v2.1.0.pdf}} |
|
314 | 335 | \end{center} |
315 | 336 | \end{frame} |
316 | 337 |
|
| 338 | +\begin{frame} |
| 339 | + \begin{center} |
| 340 | + {\huge Кто может написать обход в ширину?} |
| 341 | + \\ |
| 342 | + А параллельный? |
| 343 | + \\ |
| 344 | + {\tiny А так, чтобы работало быстро?} |
| 345 | + \end{center} |
| 346 | +\end{frame} |
| 347 | + |
317 | 348 | \begin{frame}[fragile] |
318 | 349 | \frametitle{Пример: обход в ширину} |
319 | 350 | \begin{minipage}{0.2\textwidth} |
|
398 | 429 |
|
399 | 430 | \end{frame} |
400 | 431 |
|
| 432 | +\begin{frame} |
| 433 | + \begin{center} |
| 434 | + {\huge А задачи для <<настоящих программистов>> есть?} |
| 435 | + \\ |
| 436 | + Допустим, я поверил, что линейная алгебра --- это круто \ldots |
| 437 | + \\ |
| 438 | + {\tiny Только такие, чтобы я справился \ldots} |
| 439 | + \end{center} |
| 440 | +\end{frame} |
| 441 | + |
| 442 | +\begin{frame}[fragile] |
| 443 | + \frametitle{Кросс-сборка и тестирование SuiteSparse\footnote{Соответствующий реквекст: \url{https://github.com/DrTimothyAldenDavis/SuiteSparse/pull/949}}} |
| 444 | + \begin{itemize} |
| 445 | + \item \textbf{Было} |
| 446 | + \begin{itemize} |
| 447 | + \item Alpine linux + chroot\footnote{До недавнего времени не было RISC-V} |
| 448 | + \item Сборка и тестирование в эмуляторе (qemu)\footnote{Не для всех компонент} |
| 449 | + \item Продолжительность workflow в GitHub CI: 2 часа 20 минут |
| 450 | + \end{itemize} |
| 451 | + \pause |
| 452 | + \vfill |
| 453 | + \item \textbf{Стало} |
| 454 | + \begin{itemize} |
| 455 | + \item Кросс-тулчейн + MultiArch |
| 456 | + \item Кросс-сборка и тестирование в эмуляторе (qemu-user)\footnote{Для всех компонент} |
| 457 | + \item Продолжительность workflow в GitHub CI: 40 минут |
| 458 | + \item Выявлены и локализованы ошибки под x390s и ppc64le\footnote{Позже выяснилось, что про них знали и ошибка в GCC а не в SuiteSparse} |
| 459 | + \end{itemize} |
| 460 | + \pause |
| 461 | + \item Предложенное нами решение для кросс-сборки начали использовать в GNU Octave\footnote{\url{https://github.com/DrTimothyAldenDavis/SuiteSparse/pull/955\#discussion_r2103092266}} |
| 462 | + \end{itemize} |
| 463 | +\end{frame} |
401 | 464 |
|
402 | 465 | \begin{frame}[t] |
403 | 466 | \frametitle{Векторизация умножения матриц в SuiteSparse:GraphBLAS\footnote{Соответствующий PR: \url{https://github.com/DrTimothyAldenDavis/GraphBLAS/pull/381}}} |
|
478 | 541 | } |
479 | 542 | \end{frame} |
480 | 543 |
|
| 544 | +\begin{frame} |
| 545 | + \begin{center} |
| 546 | + {\huge А на GPGPU можно?} |
| 547 | + \\ |
| 548 | + Но чтобы тоже с RISC-V что-нибудь \ldots |
| 549 | + \\ |
| 550 | + {\tiny И про линейную алгебру \ldots} |
| 551 | + \end{center} |
| 552 | +\end{frame} |
| 553 | + |
| 554 | + |
481 | 555 | \begin{frame}[fragile] |
482 | | - \frametitle{Кросс-сборка и тестирование SuiteSparse\footnote{Соответствующий реквекст: \url{https://github.com/DrTimothyAldenDavis/SuiteSparse/pull/949}}} |
| 556 | + \frametitle{RISC-V и GPGPU} |
483 | 557 | \begin{itemize} |
484 | | - \item \textbf{Было} |
485 | | - \begin{itemize} |
486 | | - \item Alpine linux + chroot\footnote{До недавнего времени не было RISC-V} |
487 | | - \item Сборка и тестирование в эмуляторе (qemu)\footnote{Не для всех компонент} |
488 | | - \item Продолжительность workflow в GitHub CI: 2 часа 20 минут |
489 | | - \end{itemize} |
490 | | - \pause |
491 | | - \vfill |
492 | | - \item \textbf{Стало} |
493 | | - \begin{itemize} |
494 | | - \item Кросс-тулчейн + MultiArch |
495 | | - \item Кросс-сборка и тестирование в эмуляторе (qemu-user)\footnote{Для всех компонент} |
496 | | - \item Продолжительность workflow в GitHub CI: 40 минут |
497 | | - \item Выявлены и локализованы ошибки под x390s и ppc64le\footnote{Позже выяснилось, что про них знали и ошибка в GCC а не в SuiteSparse} |
498 | | - \end{itemize} |
499 | | - \pause |
500 | | - \item Предложенное нами решение для кросс-сборки начали использовать в GNU Octave\footnote{\url{https://github.com/DrTimothyAldenDavis/SuiteSparse/pull/955\#discussion_r2103092266}} |
| 558 | + \item \textbf{RISC-V CPU + Imagination Technologies GPU}: самая распространённая (из доступных) конфигурация |
| 559 | + \item \textbf{RISC-V CPU + AMD GPU}: утверждается, что работает и есть официальная поддержка (\href{https://milkv.io/pioneer}{Milk-V Pioneer}, \href{https://riscv.org/ecosystem-news/2024/10/risc-v-cpu-demoed-with-rx-7900-xtx-gpu-in-debian-linux-amd-flagship-gpu-paired-with-milk-v-megrez-board-and-sifive-p550-cores/}{Milk-V Megrez}, \href{https://milkv.io/ruyibook}{RuyiBook}) |
| 560 | + \item \textbf{RISC-V CPU + Intel GPU}: \href{https://www.reddit.com/r/RISCV/comments/1ftep9u/intel_arc_a770_on_riscv/}{ходят слухи, что можно}, но официальной поддержки пока нет |
| 561 | + \item \textbf{RISC-V CPU + Nvidia GPU}: \href{https://riscv.org/ecosystem-news/2025/07/nvidia-to-bring-cuda-platform-support-to-the-risc-v/}{анонсировано} |
| 562 | + \item \textbf{RISC-V GPU}: \href{https://github.com/vortexgpgpu/vortex}{Vortex} |
501 | 563 | \end{itemize} |
502 | 564 | \end{frame} |
503 | 565 |
|
| 566 | + |
504 | 567 | \begin{frame} |
505 | 568 | \frametitle{Spla на SpacemiT M1 (RISC-V) с IMG BXE-2-32 GPU} |
506 | 569 |
|
|
532 | 595 | \includegraphics[width=0.55\textwidth]{pictures/MILK-V_crop.pdf} |
533 | 596 | \tikz[overlay,remember picture]{\draw[draw=red,thick,double,fill opacity=0.2] ($ (z1) + (1.1,5.45)$) rectangle ($ (z1) + (3.4,6.05)$);} |
534 | 597 | \\ |
535 | | - GPGPU от Imagination Technologies (пока) не совсем для вычислений |
| 598 | + (Некоторые) GPGPU от Imagination Technologies (пока) не совсем для вычислений |
536 | 599 | \end{center} |
537 | 600 | \end{frame} |
538 | 601 |
|
|
542 | 605 | \item Набор инструкций, основанный на RISC-V ISA |
543 | 606 | \item Поддержка OpenCL через POCL |
544 | 607 | \begin{itemize} |
545 | | - \item[\faGears] Spla должен запускаться |
| 608 | + \item[\alt<1>{\faGears}{\faCheck}]\alt<1>{Spla должна запускаться}{Spla запускается (и даже что-то работает)} |
546 | 609 | \end{itemize} |
| 610 | + \onslide<3>{ |
547 | 611 | \item Проблемы со сбросом регистров |
548 | 612 | \begin{itemize} |
549 | 613 | \item Типичные оптимизации не работают |
|
553 | 617 | \item В целом, есть подозрение, что мало регистров |
554 | 618 | \item Для ПЛИС с HBM |
555 | 619 | \begin{itemize} |
556 | | - \item[\faQuestion] Бонус для обработки слабоструктурированных данных |
| 620 | + \item[\faQuestion] Бонус для обработки граф-структурированных данных |
557 | 621 | \end{itemize} |
| 622 | + } |
558 | 623 | \end{itemize} |
559 | 624 | \end{frame} |
560 | 625 |
|
| 626 | +\begin{frame} |
| 627 | + \begin{center} |
| 628 | + {\huge Куда катится этот мир?} |
| 629 | + \\ |
| 630 | + Мир RISC-V, конечно же, \ldots |
| 631 | + \\ |
| 632 | + {\tiny Вместе с линейной алгеброй \ldots} |
| 633 | + \end{center} |
| 634 | +\end{frame} |
| 635 | + |
| 636 | + |
561 | 637 | \begin{frame}[fragile] |
562 | 638 | \frametitle{Перспективы: RISC-V} |
563 | 639 | \begin{itemize} |
|
583 | 659 | \end{itemize} |
584 | 660 | \end{frame} |
585 | 661 |
|
586 | | - |
587 | 662 | \begin{frame}[fragile] |
588 | 663 | \frametitle{Заключение} |
589 | 664 | \begin{itemize} |
|
0 commit comments