<div dir="ltr"><div dir="ltr">On Sat, Mar 19, 2022 at 6:29 AM Mikhail Kuzminsky <<a href="mailto:kus@free.net">kus@free.net</a>> wrote:<br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;border-left-color:rgb(204,204,204);padding-left:1ex">If so, it turns out that for the HPC user, stream gives a more<br>
important estimate - the application is translated by the compiler<br>
(they do not write in assembler - except for modules from mathematical<br>
libraries), and stream will give a real estimate of what will be<br>
received in the application.<br></blockquote><div><br></div><div>When vendors advertise STREAM results, they compile the application with non-temporal loads and stores. This means that all memory accesses bypass the processor's caches. If your application of interest does a random walk through memory and there is neither temporal or spatial locality, then using non-temporal loads and stores makes sense and STREAM irrelevant.</div><div><br></div><div>If you want to know what memory bandwidth that your application may achieve, you can use STREAM without the compiler flags to enable non-temporal loads and stores.</div></div></div>