From ec0296a4f991512c59b3f12befa037aa6fa291a7 Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Thu, 12 Feb 2026 16:31:29 -0500 Subject: [PATCH 01/15] Add empty slides for 5.1 release briefing. --- Content/ReleaseBriefings/5_1/Conference.png | Bin 0 -> 66223 bytes Content/ReleaseBriefings/5_1/MLs.png | Bin 0 -> 7210 bytes .../5_1/Section_BackendUpdates.tex | 61 ++++++++ .../5_1/Section_BreakingChanges.tex | 57 +++++++ .../ReleaseBriefings/5_1/Section_BugFixes.tex | 47 ++++++ .../5_1/Section_BuildSystemUpdates.tex | 11 ++ .../5_1/Section_GeneralEnhancements.tex | 11 ++ .../5_1/Section_NewFeatures.tex | 37 +++++ .../5_1/Section_Organizational.tex | 143 ++++++++++++++++++ Content/ReleaseBriefings/5_1/Summit.png | Bin 0 -> 66366 bytes Content/ReleaseBriefings/Makefile | 5 +- Content/ReleaseBriefings/release-51.tex | 120 +++++++++++++++ 12 files changed, 491 insertions(+), 1 deletion(-) create mode 100644 Content/ReleaseBriefings/5_1/Conference.png create mode 100644 Content/ReleaseBriefings/5_1/MLs.png create mode 100644 Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_BugFixes.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_NewFeatures.tex create mode 100644 Content/ReleaseBriefings/5_1/Section_Organizational.tex create mode 100644 Content/ReleaseBriefings/5_1/Summit.png create mode 100644 Content/ReleaseBriefings/release-51.tex diff --git a/Content/ReleaseBriefings/5_1/Conference.png b/Content/ReleaseBriefings/5_1/Conference.png new file mode 100644 index 0000000000000000000000000000000000000000..f626b858b22d3c87c183455ce9d206d1e3134d51 GIT binary patch literal 66223 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 literal 0 HcmV?d00001 diff --git a/Content/ReleaseBriefings/5_1/MLs.png b/Content/ReleaseBriefings/5_1/MLs.png new file mode 100644 index 0000000000000000000000000000000000000000..421c7c5b963378ffec73395a884101fca23cbca2 GIT binary patch literal 7210 zcmeHM`%hbC82-R*G6u^MMwX5#Mi+?IL}ryTNrzjQmB?iX!W<;sn6{A!w6K8C7RcO? zC9oLKjE-KmkXdeRN06Rwhh8KL$kw&~U_0^jw1ufPNIA@=7Z?n`Q~Y7^FIc{qraf;? z&S~=Ap7(j)@6w4vZeslYcmP0R-ut;90H_^JK@5!-@wa`st>riV3Yn_Gpc(5 zNb%(59xeSszBCup^V?f{z|pHKn`V~;#B~~r$&<3wuRqUIY8*?;sqp1MVNhN z2LOAL_|QJ|zxj;EVN9*Ge8ws%iZQvDoh622LF2IVK|ndbuAHY5Bew`sd94*DvT7;; zfS1w`GK)Ad?VHv79#KvGTiwb? zMEvj|8=azti3h5;S;4*9n|N?<AH!4M!-S?xh$nT2*;LZg) zENGZZL+M}zC&-p~$xqgU58Zm*q@cacH;r12N1HbEa}tQ?8ZqTmGXFbeEU278HmMeY zzm~H-(gN{pJ|2_mhNT}FeS|Zd>DeTa_i7@0Cd7%(|f@j zFIg}hoD`JW#VLR7TA^I1HSZP#DO+OIbh5qotod(hsbtj&zmLc=TQ+}3wu`fB=xN1f zTxl9t*$0)_DbL*+YE|D*3W3_M4{BU`-D`*r>v24IK%2puH8|E<+^pJcvqP*s$%`EJ z#kDTe0XT~!ftD)TdKgEp$h!}R@`VCG8BQx2RAkwP>*7ccIVXTo&j z{aqEDHw2}Sn>h~O_OGuUQHh8^eTQd&CHFKnAnUwE_dPyqU^O@l-&RYR7)Q5ZO?QQG zAz`}hZ*FEIL_?oah+}hP%Wm%de9lECOt?N6R6-g`HQe~sZlf5OVt@z*YDOu1YuN2% z0npx;LC-xjOiplH?HHZ(-mZ!vcf*ZS9wIa@-JavaAJt+~_9zU2QGjUTX(=)hRUy?< zK^gmLSJ>wVA<7&5obutIv0y@_@UY~scq<~D zg#yIs+mRpF{!XJyUNNxP%yb7Bt@~^@bzUFBZbN{B5(O7K46v<-eHte$cX8uoo56oT z)UhGyNI?zRqWJtvNfBr_WB*PyNZ(4S)l3YM8eywvYs(PbxU@~fjSF0|)GZ*?>`;Mw z$D#I~N`@*tHuW5_<_=AodMUni^+Gj|3`tGh=qBCU#NHxuVj?irpT!lpLQ<_uuOgAv zrNE3s39gWRQfU`Y*Vro_DLoomt9eEULsY1vL0F#h0&Do1sOrw|e1KN1k- zYcx@ZF(^k=fIZ_!Hf +% +% int main() { +% std::cout << "hello world\n"; +% } +% \end{code} +%\end{frame} + +%\begin{frame}[fragile]{Example table} +% \begin{center} +% \begin{tabular}{l|l} +% a & b \\\hline +% c & d +% \end{tabular} +% \end{center} +%\end{frame} + +%========================================================================== diff --git a/Content/ReleaseBriefings/5_1/Section_BugFixes.tex b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex new file mode 100644 index 00000000..2a4083b4 --- /dev/null +++ b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex @@ -0,0 +1,47 @@ +%========================================================================== + +\begin{frame}[fragile] + + {\Huge Bug Fixes} + + \vspace{10pt} + +\end{frame} + +%========================================================================== + +% Examples + +% note: always keep the [fragile] for your frames! + +%\begin{frame}[fragile]{Example list} +% \begin{itemize} +% \item Item 1 +% \item Item 2 with some \texttt{code} +% \begin{itemize} +% \item Sub-item 2.1 +% \item Sub-item 2.2 +% \end{itemize} +% \end{itemize} +%\end{frame} + +%\begin{frame}[fragile]{Example code} +% \begin{code}[keywords={std}] +% #include +% +% int main() { +% std::cout << "hello world\n"; +% } +% \end{code} +%\end{frame} + +%\begin{frame}[fragile]{Example table} +% \begin{center} +% \begin{tabular}{l|l} +% a & b \\\hline +% c & d +% \end{tabular} +% \end{center} +%\end{frame} + +%========================================================================== diff --git a/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex b/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex new file mode 100644 index 00000000..259bac5b --- /dev/null +++ b/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex @@ -0,0 +1,11 @@ +%========================================================================== + +\begin{frame}[fragile] + + {\Huge Build System Updates} + + \vspace{10pt} + +\end{frame} + +%========================================================================== diff --git a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex new file mode 100644 index 00000000..49752741 --- /dev/null +++ b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex @@ -0,0 +1,11 @@ +%========================================================================== + +\begin{frame}[fragile] + + {\Huge General Enhancements} + + \vspace{10pt} + +\end{frame} + +%========================================================================== diff --git a/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex b/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex new file mode 100644 index 00000000..c508d1a5 --- /dev/null +++ b/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex @@ -0,0 +1,37 @@ +%========================================================================== + +\begin{frame}[fragile] + + {\Huge Feature highlights} + + \vspace{10pt} + +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Minimum compiler requirements after requiring C++20} + +\begin{table}[] +\begin{tabular}{lll} +\multicolumn{1}{r}{} & Kokkos 4.x & Kokkos 5.0 \\ \hline +GCC & 8.2.0 & 10.4.0 \\ +Clang (CPU) & 8.0.0 & 14.0.0 \\ +Clang (CUDA) & 10.0.0 & 15.0.0 \\ +IntelLLVM (CPU) & 2021.1.1 & 2022.0.0 \\ +IntelLLVM (SYCL) & 2023.0.0 & 2024.2.1 \\ +NVCC & 11.0 & 12.2.0 \\ +NVC++ & 22.3 & 22.3 \\ +ROCm & 5.2.0 & 6.2.0 \\ +MSVC & 19.29 & 19.30 \\ +\end{tabular} +\end{table} + +\textit{\footnotesize Note: Clang (CUDA) allows for CUDA 11.8 as underlying runtime.} \\ +\textit{\footnotesize Note: MSVC is only actually tested with the latest version.} + +\centering +\url{https://kokkos.org/kokkos-core-wiki/get-started/requirements.html} +\end{frame} + +%========================================================================== diff --git a/Content/ReleaseBriefings/5_1/Section_Organizational.tex b/Content/ReleaseBriefings/5_1/Section_Organizational.tex new file mode 100644 index 00000000..e3bf7207 --- /dev/null +++ b/Content/ReleaseBriefings/5_1/Section_Organizational.tex @@ -0,0 +1,143 @@ + +%========================================================================== + +\begin{frame}[fragile] + + {\Huge Organizational} + + \vspace{15pt} + + \textbf{Content:} + \begin{itemize} + \item Kokkos User Group @ HPSF Community Summit '26 (Europe) + \item Kokkos User Group @ HPSF Conference '26 (US) + \item Internship program + \item Mailing Lists + \end{itemize} + +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Kokkos User Group 2026 (Europe)} + \begin{center} + \textbf{Kokkos User Group @ HPSF Community Summit, Europe} + \end{center} + + \begin{itemize} + \item \textit{When:} February 25th-27th 2026 + \item \textit{Where:} TU Braunschweig (``near'' Berlin), Germany + \item \textit{What:} + \begin{itemize} + \item Few HPSF plenary talks + \item Project community gathering:\\ + Kokkos, Trilinos and WarpX user \& developers groups + \item Some Spack, Module \& other HPSF projects + \end{itemize} + \end{itemize} + + \begin{center} + \textit{Call for Abstracts open!}\\ + \url{https://events.academiccloud.de/e/hpsfcs26} + \end{center} + + \begin{textblock}{3}(12.5,5) + \includegraphics[width=\textwidth]{5_1/Summit.png} + \end{textblock} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Kokkos User Group 2026 (USA)} + \begin{center} + \textbf{Kokkos User Group @ HPSF Conference, USA} + \end{center} + + \begin{itemize} + \item \textit{When:} March 16th-20th 2026 + \item \textit{Where:} Chicago, IL, USA + \item \textit{What:} 2\sfrac{1}{2}-days HPSF plenary + 2\sfrac{1}{2}-days Project meetings + \item \textit{KUG-Content:} Focused on user experiences + \begin{itemize} + \item How do you leverage Kokkos? + \item What are pain points? + \item Kokkos-based libraries of interest to the community + \end{itemize} + \end{itemize} + + \begin{center} + \textit{Call for Papers \& Registration open!}\\ + \url{https://events.linuxfoundation.org/hpsf-conference/} + \end{center} + + \begin{textblock}{3}(12.5,5) + \includegraphics[width=\textwidth]{5_1/Conference.png} + \end{textblock} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Other news} + +\medskip + +\begin{center} + \textbf{SRP Internship Program}\\ + Kokkos will take part in HPSF internship program in 2026\\ + With Sustainable Research Pathways\\ + More info soon +\end{center} + +\vfill + +\begin{center} + \textbf{Mailing Lists}\hspace{5em}~\\ + Sign up for the Kokkos mailing list to stay up-to-date\hspace{5em}~\\ + with the latest Kokkos news.\hspace{5em}~\\ + \url{https://kokkos.org/community/mailing-lists/}\hspace{5em}~ +\end{center} +\medskip +\begin{textblock}{2}(12.5,9.75) + \includegraphics[width=\textwidth]{5_1/MLs.png} +\end{textblock} + +\end{frame} + +%========================================================================== + +% Examples + +% note: always keep the [fragile] for your frames! + +%\begin{frame}[fragile]{Example list} +% \begin{itemize} +% \item Item 1 +% \item Item 2 with some \texttt{code} +% \begin{itemize} +% \item Sub-item 2.1 +% \item Sub-item 2.2 +% \end{itemize} +% \end{itemize} +%\end{frame} + +%\begin{frame}[fragile]{Example code} +% \begin{code}[keywords={std}] +% #include +% +% int main() { +% std::cout << "hello world\n"; +% } +% \end{code} +%\end{frame} + +%\begin{frame}[fragile]{Example table} +% \begin{center} +% \begin{tabular}{l|l} +% a & b \\\hline +% c & d +% \end{tabular} +% \end{center} +%\end{frame} + +%========================================================================== + diff --git a/Content/ReleaseBriefings/5_1/Summit.png b/Content/ReleaseBriefings/5_1/Summit.png new file mode 100644 index 0000000000000000000000000000000000000000..edce909d8766b76e21a9214217de9b96bfdf51a7 GIT binary patch literal 66366 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 a1KgO5o{DpK>#89JkdaiB$P+j4{eJ+`Qxf$6 literal 0 HcmV?d00001 diff --git a/Content/ReleaseBriefings/Makefile b/Content/ReleaseBriefings/Makefile index 9c001e82..c4a0669a 100644 --- a/Content/ReleaseBriefings/Makefile +++ b/Content/ReleaseBriefings/Makefile @@ -1,5 +1,5 @@ -default: release-50 +default: release-51 workaround-on: sed -i.bak 's|%\\input|\\input|g' KokkosTutorial_PreTitle.tex @@ -43,5 +43,8 @@ release-47: release-50: latexmk release-50 +release-51: + latexmk release-51 + clean: latexmk -c diff --git a/Content/ReleaseBriefings/release-51.tex b/Content/ReleaseBriefings/release-51.tex new file mode 100644 index 00000000..66350dc4 --- /dev/null +++ b/Content/ReleaseBriefings/release-51.tex @@ -0,0 +1,120 @@ +\input{KokkosTutorial_PreTitle} +\usepackage{tikz} +\graphicspath{{5_1/figures/}} +\usepackage{multicol} +\usepackage{pgfplots} +\usepackage{xfrac} + +%disclaimer for Sandia. uncomment and the whole blob goes away @ b80c116300122 +% \def\sandid{SANDXXXX PE} +\def\ornlid{THIS WILL NEED TO BE UPDATED AFTER RESOLUTION} + +% \title{Performance Portability with Kokkos} +\title{Kokkos 5.1 Release Briefing} + +%BAD misuse of author field +% \author{New Capabilities} + +\date{TBD} + +\input{KokkosTutorial_PostTitle} + +\begin{document} + +\begin{frame} + \titlepage +\end{frame} + + +\begin{frame}[fragile]{Outline} + + \textbf{5.1 Release Highlights} + + \begin{itemize} + \item{Organizational} + \item{Feature Highlights} + \item{General Enhancements} + \item{Backend updates} + \item{Build system updates} + \item{Deprecations and other breaking changes} + \item{Bug Fixes} + \end{itemize} + +\end{frame} + +\begin{frame}{Find More} + + \textbf{Online Resources}: + + \begin{itemize} + \item \url{https://github.com/kokkos}: + \begin{itemize} + \item Primary Kokkos GitHub Organization + \end{itemize} + \item \url{https://kokkos.org/kokkos-core-wiki/tutorials-and-examples.html}: + \begin{itemize} + \item{Tutorials, video lectures, and examples} + \end{itemize} + \item \url{https://kokkos.org/kokkos-core-wiki}: + \begin{itemize} + \item Wiki including API reference + \end{itemize} + \item \url{https://kokkosteam.slack.com}: + \begin{itemize} + \item Slack workspace for Kokkos. + \item Please join: fastest way to get your questions answered. + \item Can whitelist domains, or invite individual people. + \end{itemize} + \end{itemize} + +\end{frame} + +\begin{frame}[fragile]{Kokkos Usage} + \textbf{Would like to strengthen community bonds and discoverability} + + \vspace{10pt} + \textit{List of Applications and Libraries} + \begin{itemize} + \item Add your app to \url{https://github.com/kokkos/kokkos/issues/1950} + \item We are planning to add that to the Kokkos website. + \item Helps people discover each other when working on similar things. + \end{itemize} + + \vspace{10pt} + \textit{GitHub Topics} + \begin{itemize} + \item Use \textit{kokkos} tag on your repos. + \item If you click on the topic you get a list of all projects on github with that topic. + \end{itemize} +\end{frame} + +\input{5_1/Section_Organizational.tex} +\input{5_1/Section_NewFeatures.tex} +\input{5_1/Section_GeneralEnhancements.tex} +\input{5_1/Section_BackendUpdates.tex} +\input{5_1/Section_BuildSystemUpdates.tex} +\input{5_1/Section_BreakingChanges.tex} +\input{5_1/Section_BugFixes.tex} + +%========================================================================== + +\begin{frame}[fragile] + + \vspace{10pt} + + \textbf{How to Get Your Fixes and Features into Kokkos} + \newline + \begin{itemize} + \item Fork the Kokkos repo (\url{https://github.com/kokkos/kokkos}) + \item Make topic branch from \textit{develop} for your code + \item Add tests for your code + \item Create a pull request (PR) on the main project \textit{develop} + \item Update the documentation (\url{https://github.com/kokkos/kokkos-core-wiki}) if your code changes the API + \item Get in touch if you have any question (\url{https://kokkosteam.slack.com}) + \end{itemize} + +\end{frame} + +%========================================================================== + +\end{document} From a1c7ec7d4023149b72e127d3cd3a5a931e203be2 Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Tue, 17 Feb 2026 14:34:47 -0500 Subject: [PATCH 02/15] Remove KUG Europ from Organizational slide --- .../5_1/Section_Organizational.tex | 30 ------------------- 1 file changed, 30 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_Organizational.tex b/Content/ReleaseBriefings/5_1/Section_Organizational.tex index e3bf7207..fc200695 100644 --- a/Content/ReleaseBriefings/5_1/Section_Organizational.tex +++ b/Content/ReleaseBriefings/5_1/Section_Organizational.tex @@ -9,7 +9,6 @@ \textbf{Content:} \begin{itemize} - \item Kokkos User Group @ HPSF Community Summit '26 (Europe) \item Kokkos User Group @ HPSF Conference '26 (US) \item Internship program \item Mailing Lists @@ -19,35 +18,6 @@ %========================================================================== -\begin{frame}[fragile]{Kokkos User Group 2026 (Europe)} - \begin{center} - \textbf{Kokkos User Group @ HPSF Community Summit, Europe} - \end{center} - - \begin{itemize} - \item \textit{When:} February 25th-27th 2026 - \item \textit{Where:} TU Braunschweig (``near'' Berlin), Germany - \item \textit{What:} - \begin{itemize} - \item Few HPSF plenary talks - \item Project community gathering:\\ - Kokkos, Trilinos and WarpX user \& developers groups - \item Some Spack, Module \& other HPSF projects - \end{itemize} - \end{itemize} - - \begin{center} - \textit{Call for Abstracts open!}\\ - \url{https://events.academiccloud.de/e/hpsfcs26} - \end{center} - - \begin{textblock}{3}(12.5,5) - \includegraphics[width=\textwidth]{5_1/Summit.png} - \end{textblock} -\end{frame} - -%========================================================================== - \begin{frame}[fragile]{Kokkos User Group 2026 (USA)} \begin{center} \textbf{Kokkos User Group @ HPSF Conference, USA} From 73c1d038594cf4d010cd59ac6ac6e247da4e4d7d Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Fri, 27 Mar 2026 14:21:51 -0400 Subject: [PATCH 03/15] Update Organizational section. --- .../ReleaseBriefings/5_1/Section_Organizational.tex | 10 ---------- 1 file changed, 10 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_Organizational.tex b/Content/ReleaseBriefings/5_1/Section_Organizational.tex index fc200695..142b420f 100644 --- a/Content/ReleaseBriefings/5_1/Section_Organizational.tex +++ b/Content/ReleaseBriefings/5_1/Section_Organizational.tex @@ -10,7 +10,6 @@ \textbf{Content:} \begin{itemize} \item Kokkos User Group @ HPSF Conference '26 (US) - \item Internship program \item Mailing Lists \end{itemize} @@ -51,15 +50,6 @@ \medskip -\begin{center} - \textbf{SRP Internship Program}\\ - Kokkos will take part in HPSF internship program in 2026\\ - With Sustainable Research Pathways\\ - More info soon -\end{center} - -\vfill - \begin{center} \textbf{Mailing Lists}\hspace{5em}~\\ Sign up for the Kokkos mailing list to stay up-to-date\hspace{5em}~\\ From c82b9fd8692b383552b54875112682cb4f6bf1d0 Mon Sep 17 00:00:00 2001 From: Adrien Taberner Date: Fri, 3 Apr 2026 16:15:09 +0200 Subject: [PATCH 04/15] wip General Enhancements Signed-off-by: Adrien Taberner --- .../5_1/Section_GeneralEnhancements.tex | 150 ++++++++++++++++++ 1 file changed, 150 insertions(+) diff --git a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex index 49752741..ff627db3 100644 --- a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex +++ b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex @@ -8,4 +8,154 @@ \end{frame} +\begin{frame}[fragile]{General Enhancements I} + \begin{itemize} + \item Enable ScatterView contribute into a View that is a rvalue + \item Use \texttt{Array::size\_type} for subscript operators + \item Use StaticBatchSize in ViewFill + \item Improve performance of \texttt{deep\_copy} from scalar in view fill using \texttt{StaticBatchSize} + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{General Enhancements II} + \begin{itemize} + \item Enforce failure when exceeding \texttt{team\_size\_max} and \texttt{scratch\_size\_max} checks + \item Enable MPI detection with PALS + \item Add \texttt{Kokkos::norm} for \texttt{Kokkos::complex} similar to \texttt{std::norm} + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{SIMD Enhancements} + \begin{itemize} + \item Add bitwise operators to simd vectors of integral types and simd masks + \item Add simd memory permute functions + \item Use neon and sve SIMD instructions if nvcc supports them + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{MDRangePolicy overhaul} + Improved performance for \texttt{MDRangePolicy} for all rank (2 to 6) for \texttt{CUDA}, \texttt{HIP} and \texttt{SYCL} + \begin{itemize} + \item Rewrite internal logic for computing functor indices + \item Fix performance discrepancies between iterate Left and Right + \end{itemize} + + \vspace{5pt} + Note: Doesn't concern nested multidimensional policy like \texttt{TeamThreadMDRange} or \texttt{TeamVectorMDRange} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{MDRangePolicy overhaul} + Change the default tile size for \texttt{CUDA}, \texttt{HIP}, and \texttt{SYCL} backends. + Use more threads for the dimension that accesses memory in a coalesced way. + \vspace{10pt} + \begin{itemize} + \item Lower register usage for the same kernel + \item Better memory throughput for memory-intensive kernels. + \item Better GPU occupancy for simple kernels. + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{MDRangePolicy overhaul} + \begin{figure}[ht] + \centering + \begin{tikzpicture} + \begin{axis}[ + width=0.8\textwidth, + height=0.35\textwidth, + grid=major, + ymin=0, + ybar, + ybar=5pt, + bar width=12pt, + enlargelimits=0.15, + legend style={at={(0.5, 1.3)}, + anchor=north,legend columns=-1,font=\small}, + ylabel={Speedup}, + symbolic x coords={2D, 3D, 4D, 5D, 6D}, + xtick=data, + x tick label style={at={(0.0, -0.5)},font=\small}, + ] + \addplot[color=red!60, fill=red!40] coordinates {(2D, 1.23) (3D, 1.38) (4D, 1.56) (5D, 1.36) (6D, 2.16)}; + \addplot[color=green!60, fill=green!40] coordinates {(2D, 1.32) (3D, 1.00) (4D, 1.08) (5D, 1.42) (6D, 2.13)}; + \legend{AMD MI250X, Nvidia A100} + \end{axis} + \end{tikzpicture} + \end{figure} + \begin{itemize} + \item Stream Add kernel ($C = A + B$) for different dimensions. + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{MDRangePolicy overhaul} + \begin{figure}[ht] + \centering + \begin{tikzpicture} + \begin{axis}[ + width=0.8\textwidth, + height=0.35\textwidth, + grid=major, + ymin=0, + ybar, + ybar=10pt, + bar width=15pt, + enlargelimits=0.15, + legend style={at={(0.5, 1.3)}, + anchor=north,legend columns=-1,font=\small}, + ylabel={Speedup}, + symbolic x coords={2D Left, 2D Right, 3D Left, 3D Right}, + xtick=data, + x tick label style={at={(0.0, -0.5)},font=\small}, + ] + \addplot[color=red!60, fill=red!40] coordinates {(2D Left, 1.44) (2D Right, 3.17) (3D Left, 1.00) (3D Right, 2.32)}; + \addplot[color=green!60, fill=green!40] coordinates {(2D Left, 1.94) (2D Right, 1.94) (3D Left, 1.01) (3D Right, 2.71)}; + \legend{AMD MI250X, Nvidia A100} + \end{axis} + \end{tikzpicture} + \end{figure} + \begin{itemize} + \item Stencil kernel with 7 points and 9 points in 2D and 3D respectively. + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Expand math support} + Increase \texttt{\textbf{half}} and \texttt{\textbf{bhalf}} support + \begin{itemize} + \item Add \texttt{denorm\_min} traits + \item Add non standard \texttt{rcp}, \texttt{rcpf} and \texttt{rcpl} functions. + \item Extend \texttt{rsqrt} to half types + \end{itemize} + +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Expand math support} + Implement all remaining math functions + \begin{itemize} + \item Add \texttt{modf}, \texttt{modff} and \texttt{modfl} functions + \item Add mathematical functions \texttt{frexp} \texttt{ldexp}, \texttt{scalbn}, \texttt{scalbln} + \item Provide more quadruple precision floating-point manipulation functions. + \item Add \texttt{isnormal} function for all floating-point types. + \item Add binary predicate math comparison functions. + \item Add fpclassify function. + \item Round to integer math functions \texttt{rint} and \texttt{round}. + \item Add std \texttt{nexttoward} wrapper. + \end{itemize} + +\end{frame} + %========================================================================== From 2f1e1ffccee81aea1bfe019e56989d774745a3b9 Mon Sep 17 00:00:00 2001 From: Jakob Bludau Date: Mon, 6 Apr 2026 14:53:22 -0400 Subject: [PATCH 05/15] add SVE and NEON detection slide --- .../ReleaseBriefings/5_1/Section_GeneralEnhancements.tex | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex index ff627db3..a3a40bb9 100644 --- a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex +++ b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex @@ -159,3 +159,12 @@ \end{frame} %========================================================================== + +\begin{frame}[fragile]{SIMD support on ARM} + \texttt{nvcc} > 12.8 allows to use \texttt{NEON} instructions. + \begin{itemize} + \item With `KOKKOS\_ARCH\_NATIVE=ON` we run checks if the compiler supports \texttt{NEON} and \texttt{SVE}. If the compiler supports them we enable them. + \item For all manually specified ARM architectures we enable them if the architecture supports them. We do \textbf{not} check if the compiler supports them. + \end{itemize} +\end{frame} + From 81c9adb1da06435ad66bb02b83e662d494e0a821 Mon Sep 17 00:00:00 2001 From: Jakob Bludau Date: Mon, 6 Apr 2026 16:01:09 -0400 Subject: [PATCH 06/15] add slides I was tasked with --- Content/ReleaseBriefings/5_1/Section_BugFixes.tex | 9 +++++++++ .../ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex | 9 +++++++++ .../ReleaseBriefings/5_1/Section_GeneralEnhancements.tex | 6 +++--- 3 files changed, 21 insertions(+), 3 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_BugFixes.tex b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex index 2a4083b4..8ec186e4 100644 --- a/Content/ReleaseBriefings/5_1/Section_BugFixes.tex +++ b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex @@ -45,3 +45,12 @@ %\end{frame} %========================================================================== + +\begin{frame}[fragile]{Restrict host atomics to sizes that are \texttt{lock-free}} + The atomics for integers were not restricted on the sizes for which they are \texttt{lock-free} (except with \texttt{MSVC}). + \begin{itemize} + \item If you used 128bit atomics on integers the linker needed to link \texttt{latomic}. + \item \textbf{Problem}: Linking \texttt{latomic} by anyone outside of Kokkos' own build system results in \textbf{unsafe} atomic operations. + \item Kokkos' atomics on integers with 128 bit or more use our internal lock-tables. Linking \texttt{libatomic} is \textbf{neither} necessary \textbf{nor} recommended. + \end{itemize} +\end{frame} diff --git a/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex b/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex index 259bac5b..58fd44d2 100644 --- a/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex +++ b/Content/ReleaseBriefings/5_1/Section_BuildSystemUpdates.tex @@ -9,3 +9,12 @@ \end{frame} %========================================================================== + +\begin{frame}[fragile]{Integtation of \texttt{ROCm} and \texttt{HIP} in \texttt{CMake}} + Kokkos now uses \texttt{find\_package(HIP)} to find \texttt{ROCm}. The search includes the path in the environment variable \texttt{ROCM\_PATH}. + \begin{itemize} + \item Allows us to get the \texttt{ROCm} version independently of the compiler version. + \item \textbf{Problem}: \texttt{find\_package(HIP)} runs autodetection of GPU architectures if \texttt{GPU\_TARGETS} is not defined as \texttt{CMake} variable. + \item We warn if the architecture in \texttt{GPU\_TARGETS} does not match the device architecture enabled in Kokkos. This can happen e.g. when cross-compiling. + \end{itemize} +\end{frame} diff --git a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex index a3a40bb9..b79ab97e 100644 --- a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex +++ b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex @@ -161,10 +161,10 @@ %========================================================================== \begin{frame}[fragile]{SIMD support on ARM} - \texttt{nvcc} > 12.8 allows to use \texttt{NEON} instructions. + \texttt{nvcc} $>$ 12.8 allows to use \texttt{NEON} instructions. \begin{itemize} - \item With `KOKKOS\_ARCH\_NATIVE=ON` we run checks if the compiler supports \texttt{NEON} and \texttt{SVE}. If the compiler supports them we enable them. - \item For all manually specified ARM architectures we enable them if the architecture supports them. We do \textbf{not} check if the compiler supports them. + \item With \texttt{KOKKOS\_ARCH\_NATIVE=ON} we run checks if the compiler supports \texttt{NEON} and \texttt{SVE}. If the compiler supports them we enable them. + \item For all manually specified ARM architectures we enable them if the architecture supports them by specification. We do \textbf{not} check if the compiler supports them. \end{itemize} \end{frame} From e286d4434bb2f1ee0e057bf8769f7ec1819695c7 Mon Sep 17 00:00:00 2001 From: Dong Hun Lee Date: Tue, 7 Apr 2026 18:30:26 -0600 Subject: [PATCH 07/15] Updated GeneralEnhancements section on array, simd --- .../5_1/Section_GeneralEnhancements.tex | 41 +++++++++++++++++-- 1 file changed, 37 insertions(+), 4 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex index b79ab97e..28ab1d7e 100644 --- a/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex +++ b/Content/ReleaseBriefings/5_1/Section_GeneralEnhancements.tex @@ -29,12 +29,25 @@ %========================================================================== -\begin{frame}[fragile]{SIMD Enhancements} +\begin{frame}[fragile]{Array Update} + + Relaxed constraints on \texttt{Kokkos::Array} subscript operator + + \vspace{1em} + \begin{itemize} - \item Add bitwise operators to simd vectors of integral types and simd masks - \item Add simd memory permute functions - \item Use neon and sve SIMD instructions if nvcc supports them + \item Previously, the indexer type was constrained so that the following holds: + \begin{code} + std::is_integral_v || std::is_enum_v + \end{code} + \item Now, only requires to be implictly convertible to \texttt{Kokkos::Array::size\_type} \end{itemize} + + \vspace{1.5em} + + This relaxation allows custom type indexers\\ + This is closer to the indexer constraints in \texttt{Kokkos::View} + \end{frame} %========================================================================== @@ -160,6 +173,26 @@ %========================================================================== +\begin{frame}[fragile]{SIMD Enhancements} + \begin{itemize} + \item Added bitwise operators to all simd masks and simd vectors of integral types + \begin{itemize} + \item Bitwise ops: \texttt{\textasciitilde{}, \&{}, |, \^{} , \&=, |=, \^{}=} + \end{itemize} + + \vspace{1em} + + \item Added simd memory permute functions + \begin{itemize} + \item \texttt{[unchecked|partial]\_gather\_from(in, indices, simd\_flag)} + \item \texttt{[unchecked|partial]\_scatter\_to(simd, out, indices, simd\_flag)} + \item Replace memory permute functions in deprecated \texttt{where\_expression} + \end{itemize} + \end{itemize} +\end{frame} + +%========================================================================== + \begin{frame}[fragile]{SIMD support on ARM} \texttt{nvcc} $>$ 12.8 allows to use \texttt{NEON} instructions. \begin{itemize} From a1a57095a7f99531a25787637d7b1564bf5b71ad Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Wed, 8 Apr 2026 10:33:54 -0400 Subject: [PATCH 08/15] Update KUG/HPSF slide Signed-off-by: Seyong Lee --- Content/ReleaseBriefings/5_1/Section_Organizational.tex | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Content/ReleaseBriefings/5_1/Section_Organizational.tex b/Content/ReleaseBriefings/5_1/Section_Organizational.tex index 142b420f..6946746a 100644 --- a/Content/ReleaseBriefings/5_1/Section_Organizational.tex +++ b/Content/ReleaseBriefings/5_1/Section_Organizational.tex @@ -35,7 +35,7 @@ \end{itemize} \begin{center} - \textit{Call for Papers \& Registration open!}\\ + \textit{HPSF Conference 2026}\\ \url{https://events.linuxfoundation.org/hpsf-conference/} \end{center} From d23079515c5e02ab9d1d1a1b9787457f67ba802d Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Wed, 8 Apr 2026 10:52:07 -0400 Subject: [PATCH 09/15] Delete empty sections Signed-off-by: Seyong Lee --- .../5_1/Section_BackendUpdates.tex | 30 ------------------- .../5_1/Section_BreakingChanges.tex | 10 ------- 2 files changed, 40 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex index e64058d5..1d6ebda6 100644 --- a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex +++ b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex @@ -20,36 +20,6 @@ %========================================================================== -\begin{frame}[fragile] - - {\Huge SYCL} - - \vspace{10pt} - -\end{frame} - -%========================================================================== - -\begin{frame}[fragile] - - {\Huge OpenMPTarget} - - \vspace{10pt} - -\end{frame} - -%========================================================================== - -\begin{frame}[fragile] - - {\Huge OpenACC} - - \vspace{10pt} - -\end{frame} - -%========================================================================== - \begin{frame}[fragile] {\Huge HIP} diff --git a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex index e220a32a..9ffea51d 100644 --- a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex +++ b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex @@ -1,15 +1,5 @@ %========================================================================== -\begin{frame}[fragile] - - {\Huge Deprecations} - - \vspace{10pt} - -\end{frame} - -%========================================================================== - \begin{frame}[fragile] {\Huge Breaking Changes} From 32e20cc9ce1d7e15f2387bb2550fd336b59f228b Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Thu, 9 Apr 2026 00:27:50 -0400 Subject: [PATCH 10/15] Add new feature slide (Kokkos type traits as C++20 concepts) Signed-off-by: Seyong Lee --- .../5_1/Section_NewFeatures.tex | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex b/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex index c508d1a5..e7f52f76 100644 --- a/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex +++ b/Content/ReleaseBriefings/5_1/Section_NewFeatures.tex @@ -35,3 +35,20 @@ \end{frame} %========================================================================== + +\begin{frame}[fragile]{Export Kokkos type traits as C++20 concepts} + +Export Kokkos type traits as C++20 concepts to be used internally and in downstream code. +\begin{itemize} +\item Defined in Kokkos\_Concepts.hpp +\end{itemize} +Available Kokkos type traits concepts +\begin{itemize} +\item \texttt{Kokkos::ExecutionSpace} +\item \texttt{Kokkos::MemorySpace} +\item \texttt{Kokkos::ExecutionPolicy} +\item \texttt{Kokkos::TeamHandle} +\item \texttt{Kokkos::Reducer} +\end{itemize} +\end{frame} + From 0dea303a6bedece92d26fb33ffe554d5d01c130a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tr=C3=A9vis=20Morvany?= Date: Thu, 9 Apr 2026 11:46:18 +0200 Subject: [PATCH 11/15] Add the rest of the bug fixes slides --- .../ReleaseBriefings/5_1/Section_BugFixes.tex | 28 +++++++++++++++++++ 1 file changed, 28 insertions(+) diff --git a/Content/ReleaseBriefings/5_1/Section_BugFixes.tex b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex index 8ec186e4..9f0d5e55 100644 --- a/Content/ReleaseBriefings/5_1/Section_BugFixes.tex +++ b/Content/ReleaseBriefings/5_1/Section_BugFixes.tex @@ -46,6 +46,17 @@ %========================================================================== +\begin{frame}[fragile]{General} + \begin{itemize} + \item Fix \texttt{reduction\_identity} with the \texttt{BAnd} reducer + \item Update \texttt{team\_fan\_\{in|out\}} member functions of \texttt{ThreadsExecTeamMember} not to call host-only functions on the device + \item Ensure that execution space instances fence when they are destructed + \item Correctly identify GCC and LLVM Clang on macOS + \end{itemize} +\end{frame} + +%========================================================================== + \begin{frame}[fragile]{Restrict host atomics to sizes that are \texttt{lock-free}} The atomics for integers were not restricted on the sizes for which they are \texttt{lock-free} (except with \texttt{MSVC}). \begin{itemize} @@ -54,3 +65,20 @@ \item Kokkos' atomics on integers with 128 bit or more use our internal lock-tables. Linking \texttt{libatomic} is \textbf{neither} necessary \textbf{nor} recommended. \end{itemize} \end{frame} + +%========================================================================== + +\begin{frame}[fragile]{Conformance with the C++ standard} + \begin{itemize} + \item Add missing constexpr specifiers on \texttt{conj()}, and for the \texttt{real()} and \texttt{imag()} non-member functions taking complex numbers + \item Make overloads of \texttt{isnormal} compliant with std + \end{itemize} +\end{frame} + +%========================================================================== + +\begin{frame}[fragile]{SIMD} + \begin{itemize} + \item Use intrinsics when calling \texttt{min} and \texttt{max} on simd vectors of integral types + \end{itemize} +\end{frame} From 4b4dec5a4d590dc2f6ecac3e519297cc24cf6340 Mon Sep 17 00:00:00 2001 From: Jakob Bludau Date: Thu, 9 Apr 2026 14:30:20 -0400 Subject: [PATCH 12/15] added BackendUpdates except MI300A synchronization issue --- .../5_1/Section_BackendUpdates.tex | 20 +++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex index 1d6ebda6..b4308e3f 100644 --- a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex +++ b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex @@ -18,6 +18,16 @@ \end{frame} +\begin{frame}[fragile]{Features and Fixes for \texttt{CUDA}} + + \begin{itemize} + \item Added support for \texttt{Kokkos\_ARCH\_BLACKWELL103} for B300 GPUs (requires \texttt{CUDA} $\geq 12.8$). + \item Fixed building with \texttt{clang} when enabling both \texttt{CUDA} and \texttt{OpenMP}. + \item Added support for the flags \texttt{-Ofc} and \texttt{--fdevice-time-trace} to \texttt{nvcc\_wrapper} (Useful for getting insights into compile time). + \end{itemize} + +\end{frame} + %========================================================================== \begin{frame}[fragile] @@ -29,3 +39,13 @@ \end{frame} %========================================================================== + +\begin{frame}[fragile]{Features and Fixes for \texttt{HIP}} + + \begin{itemize} + \item Add support for \texttt{Kokkos\_ARCH\_AMD\_GFX950} for MI350 and MI355 (requires \texttt{ROCm} $\geq 7.0$ recommended $\geq 7.1$) + \item Added support for \texttt{bhalf\_t} (in \texttt{Kokkos::Experimental}). + \item Added math functions for \texttt{half\_t} and \texttt{bhalf\_t} instead of casting to \texttt{float}. + \end{itemize} + +\end{frame} From 8bc24f8551eec8f8963cd5382d194c12aa7e04f7 Mon Sep 17 00:00:00 2001 From: Rahul Gayatri Date: Thu, 9 Apr 2026 21:31:06 -0700 Subject: [PATCH 13/15] Filled Breaking Changes Section --- .../5_1/Section_BreakingChanges.tex | 50 ++++++++++--------- 1 file changed, 27 insertions(+), 23 deletions(-) diff --git a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex index 9ffea51d..a1ebfa9b 100644 --- a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex +++ b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex @@ -14,34 +14,38 @@ % note: always keep the [fragile] for your frames! -%\begin{frame}[fragile]{Example list} -% \begin{itemize} -% \item Item 1 -% \item Item 2 with some \texttt{code} -% \begin{itemize} -% \item Sub-item 2.1 -% \item Sub-item 2.2 -% \end{itemize} -% \end{itemize} -%\end{frame} - -%\begin{frame}[fragile]{Example code} -% \begin{code}[keywords={std}] -% #include -% -% int main() { -% std::cout << "hello world\n"; -% } -% \end{code} -%\end{frame} - -%\begin{frame}[fragile]{Example table} +\begin{frame}[fragile]{Breaking Changes} + \begin{itemize} + \item Kokkos now detects and reports an error if an execution space is outside its valid lifetime scope, i.e., before \texttt{initialize()} or after \texttt{finalize()}. + \begin{itemize} + \item An example has been added to show users how to migrate from static execution spaces to comply with the new lifetime scope enforcement. + \end{itemize} + \item \texttt{Kokkos::TeamPolicy} now validates the \texttt{vector\_length} argument at construction time and aborts with a descriptive error if it is out of range, making misconfiguration bugs easier to catch. + \begin{itemize} + \item \texttt{Kokkos::TeamPolicy} now requires \texttt{vector\_length} to be a power of two. + \end{itemize} + \item Kokkos now warns when an OpenMP execution space instance is created inside an active OpenMP parallel region. + \item The OpenMPTarget backend has been removed from Kokkos. + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Example code} + \begin{code}[keywords={std}] + #include + + int main() { + std::cout << "hello world\n"; + } + \end{code} +\end{frame} + +% \begin{frame}[fragile]{Example table} % \begin{center} % \begin{tabular}{l|l} % a & b \\\hline % c & d % \end{tabular} % \end{center} -%\end{frame} +% \end{frame} %========================================================================== From bca59bd16335738b70683d199049d18a58c467b8 Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Fri, 10 Apr 2026 16:50:44 -0400 Subject: [PATCH 14/15] Add explanation on ScatterView in Breaking Changes section Signed-off-by: Seyong Lee --- Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex | 6 ++++++ Content/ReleaseBriefings/release-51.tex | 2 +- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex index a1ebfa9b..07b19387 100644 --- a/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex +++ b/Content/ReleaseBriefings/5_1/Section_BreakingChanges.tex @@ -24,6 +24,12 @@ \begin{itemize} \item \texttt{Kokkos::TeamPolicy} now requires \texttt{vector\_length} to be a power of two. \end{itemize} + \item \texttt{ScatterView} is no longer move constructible or move assignable. + \end{itemize} +\end{frame} + +\begin{frame}[fragile]{Breaking Changes on OpenMP and OpenMPTarget} + \begin{itemize} \item Kokkos now warns when an OpenMP execution space instance is created inside an active OpenMP parallel region. \item The OpenMPTarget backend has been removed from Kokkos. \end{itemize} diff --git a/Content/ReleaseBriefings/release-51.tex b/Content/ReleaseBriefings/release-51.tex index 66350dc4..4ae5988a 100644 --- a/Content/ReleaseBriefings/release-51.tex +++ b/Content/ReleaseBriefings/release-51.tex @@ -15,7 +15,7 @@ %BAD misuse of author field % \author{New Capabilities} -\date{TBD} +\date{4/14/2026} \input{KokkosTutorial_PostTitle} From 8e65da26e3b308bf64d912c277dd471927a294a1 Mon Sep 17 00:00:00 2001 From: Seyong Lee Date: Sat, 11 Apr 2026 21:19:29 -0400 Subject: [PATCH 15/15] Update backend section Signed-off-by: Seyong Lee --- Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex index b4308e3f..e3ea16c2 100644 --- a/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex +++ b/Content/ReleaseBriefings/5_1/Section_BackendUpdates.tex @@ -43,9 +43,15 @@ \begin{frame}[fragile]{Features and Fixes for \texttt{HIP}} \begin{itemize} - \item Add support for \texttt{Kokkos\_ARCH\_AMD\_GFX950} for MI350 and MI355 (requires \texttt{ROCm} $\geq 7.0$ recommended $\geq 7.1$) + \item Added support for \texttt{Kokkos\_ARCH\_AMD\_GFX950} for MI350 and MI355 (requires \texttt{ROCm} $\geq 7.0$ recommended $\geq 7.1$) \item Added support for \texttt{bhalf\_t} (in \texttt{Kokkos::Experimental}). \item Added math functions for \texttt{half\_t} and \texttt{bhalf\_t} instead of casting to \texttt{float}. + \item Fixed race conditions in HIP \texttt{parallel\_scan} when running on MI300A + \begin{itemize} + \item Added an extra synchronization at the end of \texttt{parallel\_scan} implementation. + \item Seems to be a compiler bug on MI300A. + \item Extra overhead is negligible. + \end{itemize} \end{itemize} \end{frame}