<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Windows Processor Groups in Intel® Fortran Compiler</title>
    <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214855#M152125</link>
    <description>&lt;P&gt;Windows affinity uses a 64-bit bit mask, and on systems with more than 64 hardware threads, has a concept called processor groups, and in which case each group has its own 64-bit bit mask (which may be partially occupied.&lt;/P&gt;
&lt;P&gt;Linux provides a bit mask, which is system build dependent, and can be of any arbitrary size.&lt;/P&gt;
&lt;P&gt;On Windows, the (as far as I know) the OpenMP implementations do not make use of processor groups. Note, I have not verified if this is so with the current release.&lt;/P&gt;
&lt;P&gt;If you search msdn.microsoft.com for processor groups, you should be able to find the API and (hopefully) example code. With that information (on Windows) you could:&lt;/P&gt;
&lt;P&gt;1) Launch oversubscribed (for single processor group) application with desired affinity&lt;BR /&gt;2) Retrieve 64-bit bit masks for the process and for the thread (also retrieve the process group number and number of groups.&lt;BR /&gt;3) count bits set in process affinity bit mask (this will be for the assigned processor group)&lt;BR /&gt;4) If your OpenMP logical processor number is .ge. the number of set bits, using the Process Group API select a different processor group than the current processor group (this may be up or down and not necessarily contiguous).&lt;BR /&gt;5) reset your thread affinity to that obtained earlier&lt;/P&gt;
&lt;P&gt;Note, you may have to repeat3:5 should you require additional processor groups to map you application.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Mon, 05 Oct 2020 13:38:38 GMT</pubDate>
    <dc:creator>jimdempseyatthecove</dc:creator>
    <dc:date>2020-10-05T13:38:38Z</dc:date>
    <item>
      <title>Windows Processor Groups</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1158200#M142192</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;Does anyone have experience with Windows Processor Groups?&amp;nbsp; I'm pondering getting a 64-core hyperthreaded (128 threads) machine to speed compute-bound OpenMP program which will happily use all the threads it can get its little hands on.&amp;nbsp; Are there ways to get more than 64 threads assigned to a process in WIn 7 or 10?&amp;nbsp; Are there any impediments to just running two instances of the code, one each in each of the processor groups?&amp;nbsp; Memory contention issues?&lt;/P&gt;&lt;P&gt;thanks,&lt;/P&gt;&lt;P&gt;Bruce&lt;/P&gt;</description>
      <pubDate>Fri, 06 Sep 2019 22:10:06 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1158200#M142192</guid>
      <dc:creator>Bruce_Weaver</dc:creator>
      <dc:date>2019-09-06T22:10:06Z</dc:date>
    </item>
    <item>
      <title>Re: Windows Processor Groups</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214492#M152090</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;
&lt;P&gt;I bought the 128-thread machine with Windows workstation.&amp;nbsp; As expected, it breaks up the threads into two 64 thread processor groups.&amp;nbsp; If I try to run a second instance of a 50-thread code, Windows tries to jam it into the node it stu8ck the first instance in.&amp;nbsp; Does anyone have experience getting Intel Fortran or OpenMP to span the two nodes?&amp;nbsp; I'm reluctant to try to use affinity &amp;amp; run two instances; for a variety of reasons, I'd rather span the nodes...i.e., Use 120 or so threads assigned to one instance of the program.&lt;/P&gt;
&lt;P&gt;Open to ideas or experience with this problem.&lt;/P&gt;</description>
      <pubDate>Sat, 03 Oct 2020 06:20:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214492#M152090</guid>
      <dc:creator>Bruce_Weaver</dc:creator>
      <dc:date>2020-10-03T06:20:08Z</dc:date>
    </item>
    <item>
      <title>Re: Windows Processor Groups</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214765#M152120</link>
      <description>&lt;P&gt;Hi Bruce, I've acces to not more than 16 threads (8 physical cores), but I experienced that Windows OS maps by default (e.g. for the Intel Linpack, which comes with the compiler) all threads to the lowest logical core names, so that e.g. 8 threads run on only the first 4 physical cores. If you define kmp_affinity=scatter (e.g. in batch file &lt;BR /&gt;set OMP_NUM_THREADS=4&lt;BR /&gt;set KMP_AFFINITY=nowarnings,scatter,1,0,granularity=fine), the threads are distributed to the physical cores first. I'm no expert in these things, maybe Jim Dempsey can give better advice and explanation.&lt;/P&gt;
&lt;P&gt;I read somewhere that Windows 10 OS behaves differently over the realeases ragarding processor groups. Most recent versions (e.g. 2004) might do a better job in scheduling. (GNU/Linux with recent kernels seems to work better with higher core count.)&lt;/P&gt;
&lt;P&gt;Anyways, maybe the Linpack is a good thing to start to play around with kmp_affinity and maybe other needed switches (C:\Program Files (x86)\IntelSWTools\compilers_and_libraries_2020.2.254\windows\mkl\benchmarks\linpack).&lt;/P&gt;</description>
      <pubDate>Mon, 05 Oct 2020 06:25:41 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214765#M152120</guid>
      <dc:creator>Johannes_Rieke</dc:creator>
      <dc:date>2020-10-05T06:25:41Z</dc:date>
    </item>
    <item>
      <title>Re: Windows Processor Groups</title>
      <link>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214855#M152125</link>
      <description>&lt;P&gt;Windows affinity uses a 64-bit bit mask, and on systems with more than 64 hardware threads, has a concept called processor groups, and in which case each group has its own 64-bit bit mask (which may be partially occupied.&lt;/P&gt;
&lt;P&gt;Linux provides a bit mask, which is system build dependent, and can be of any arbitrary size.&lt;/P&gt;
&lt;P&gt;On Windows, the (as far as I know) the OpenMP implementations do not make use of processor groups. Note, I have not verified if this is so with the current release.&lt;/P&gt;
&lt;P&gt;If you search msdn.microsoft.com for processor groups, you should be able to find the API and (hopefully) example code. With that information (on Windows) you could:&lt;/P&gt;
&lt;P&gt;1) Launch oversubscribed (for single processor group) application with desired affinity&lt;BR /&gt;2) Retrieve 64-bit bit masks for the process and for the thread (also retrieve the process group number and number of groups.&lt;BR /&gt;3) count bits set in process affinity bit mask (this will be for the assigned processor group)&lt;BR /&gt;4) If your OpenMP logical processor number is .ge. the number of set bits, using the Process Group API select a different processor group than the current processor group (this may be up or down and not necessarily contiguous).&lt;BR /&gt;5) reset your thread affinity to that obtained earlier&lt;/P&gt;
&lt;P&gt;Note, you may have to repeat3:5 should you require additional processor groups to map you application.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Oct 2020 13:38:38 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Fortran-Compiler/Windows-Processor-Groups/m-p/1214855#M152125</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2020-10-05T13:38:38Z</dc:date>
    </item>
  </channel>
</rss>

