<?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 thanks Jim for reply in Intel® Moderncode for Parallel Architectures</title>
    <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980016#M5690</link>
    <description>&lt;P&gt;thanks Jim for reply&lt;BR /&gt;&lt;BR /&gt;I know what you are talking about. I already made proc which derives contans to create masks then pins to each logical processor and picks its APIC ID and extracts each subIDs to create topology. &lt;BR /&gt;&lt;BR /&gt;In case when I have threads per cache parameter from CPUID leaf 04h EAX[25:14](Intel) and 8000001Dh EAX[25:14](AMD) it is probobly similiar to getting constans for CPU topology. I mean LogToNearestPowerOf2(threads per cache). I'm not sure do I follow the right way, but i think it is a good way.&lt;BR /&gt;&lt;BR /&gt;But else problem is what to do when CPU doesnt support this leaf. i tested my code on AMD Phenom(tm) II X6 1075T. This algo assumes that if that leaf is not supported than each core has every level of cache for himself. And this code has a bug.&lt;BR /&gt;Look at report below:&lt;BR /&gt;&lt;BR /&gt;Processor name:&amp;nbsp; AMD Phenom(tm) II X6 1075T Processor&lt;BR /&gt;&lt;BR /&gt;Cores per CPU &amp;nbsp; :&amp;nbsp; 006&lt;BR /&gt;Threads per CPU:&amp;nbsp; 006&lt;BR /&gt;&lt;BR /&gt;CACHE L1 CODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00064 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00002&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;________________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;CACHE L1 DATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00064 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; 00002&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;_______________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;CACHE L2 UNIFIED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00512 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00016&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;_____________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;___&lt;BR /&gt;&lt;BR /&gt;CACHE L3 UNIFIED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; 06 x 06144 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00048&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;________________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;CPUID DATA:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; EAX&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EAX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EBX&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; ECX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EDX&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;BR /&gt;00000000h | 00000006h | 68747541h | 444D4163h | 69746E65h |&lt;BR /&gt;00000001h | 00100FA0h | 05060800h | 00802009h | 178BFBFFh |&lt;BR /&gt;00000002h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;&lt;BR /&gt;80000000h | 8000001Bh | 68747541h | 444D4163h | 69746E65h |&lt;BR /&gt;80000005h | FF30FF10h | FF30FF20h | 40020140h | 40020140h |&lt;BR /&gt;80000006h | 20800000h | 42004200h | 02008140h | 0030B140h |&lt;BR /&gt;80000019h | F0300000h | 60100000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;&lt;BR /&gt;i checked it on cpu-world.com and it got only one L3&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
    <pubDate>Wed, 21 Aug 2013 08:05:14 GMT</pubDate>
    <dc:creator>Ilya_Z_</dc:creator>
    <dc:date>2013-08-21T08:05:14Z</dc:date>
    <item>
      <title>cache topology</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980014#M5688</link>
      <description>&lt;P&gt;hi,&lt;/P&gt;
&lt;P&gt;I'm writting cpuid program. I need help with getting number of each type of cache. not its size, but the number. for example i need get info such as &lt;BR /&gt;below:&lt;BR /&gt;&lt;BR /&gt;L1 data cache = 2 x 64KB.&lt;BR /&gt;&lt;BR /&gt;CPUID will give me the size of each sort of cache, but not its number. On MSDN i've found that GetLogicalProcessorsInformationEx proc might be &lt;BR /&gt;helpful to get that number. but i'm not sure do i understood it right. I guess, that member of CACHE_RELATIONSHIP structure, the GROUP_AFFINITY will be related with quantity. Could some give me some hints or explain what this proc exactly does or tell me were else find such infos.&lt;/P&gt;
&lt;P&gt;thanks in advance&lt;/P&gt;</description>
      <pubDate>Tue, 20 Aug 2013 19:23:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980014#M5688</guid>
      <dc:creator>Ilya_Z_</dc:creator>
      <dc:date>2013-08-20T19:23:54Z</dc:date>
    </item>
    <item>
      <title>The CPUID retrieves</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980015#M5689</link>
      <description>&lt;P&gt;The CPUID retrieves information relating to the hardware thread (its HT position within a core, and the core within a CPU, and the CPU within the system). The general technique to produce the cache topology is:&lt;/P&gt;
&lt;P&gt;for each of the logical processors available to your process&lt;BR /&gt;set affinity to that logical processor (switching execution to that hardware thread)&lt;BR /&gt;Obtain the APIC number (and/or group number) of the CPU,&lt;BR /&gt;Then obtain the cache relationships within the CPU&lt;/P&gt;
&lt;P&gt;This is a non-trivial process, especially if your code must handle a wide variety of CPUs (Intel and AMD).&lt;/P&gt;
&lt;P&gt;Some of the O/S's may provide an API to obtain this information. As to if what they provide is what you want, that is a different story.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Tue, 20 Aug 2013 20:46:17 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980015#M5689</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-08-20T20:46:17Z</dc:date>
    </item>
    <item>
      <title>thanks Jim for reply</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980016#M5690</link>
      <description>&lt;P&gt;thanks Jim for reply&lt;BR /&gt;&lt;BR /&gt;I know what you are talking about. I already made proc which derives contans to create masks then pins to each logical processor and picks its APIC ID and extracts each subIDs to create topology. &lt;BR /&gt;&lt;BR /&gt;In case when I have threads per cache parameter from CPUID leaf 04h EAX[25:14](Intel) and 8000001Dh EAX[25:14](AMD) it is probobly similiar to getting constans for CPU topology. I mean LogToNearestPowerOf2(threads per cache). I'm not sure do I follow the right way, but i think it is a good way.&lt;BR /&gt;&lt;BR /&gt;But else problem is what to do when CPU doesnt support this leaf. i tested my code on AMD Phenom(tm) II X6 1075T. This algo assumes that if that leaf is not supported than each core has every level of cache for himself. And this code has a bug.&lt;BR /&gt;Look at report below:&lt;BR /&gt;&lt;BR /&gt;Processor name:&amp;nbsp; AMD Phenom(tm) II X6 1075T Processor&lt;BR /&gt;&lt;BR /&gt;Cores per CPU &amp;nbsp; :&amp;nbsp; 006&lt;BR /&gt;Threads per CPU:&amp;nbsp; 006&lt;BR /&gt;&lt;BR /&gt;CACHE L1 CODE&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00064 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00002&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;________________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;CACHE L1 DATA&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00064 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; 00002&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;_______________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;CACHE L2 UNIFIED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 06 x 00512 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00016&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;_____________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;___&lt;BR /&gt;&lt;BR /&gt;CACHE L3 UNIFIED&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; :&amp;nbsp; 06 x 06144 KB&lt;BR /&gt;&lt;BR /&gt;Ways of associativity&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; 00048&lt;BR /&gt;Byte line size(B)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; 00064&lt;BR /&gt;Physical line partitions&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Number of sets&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Threads per cache&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;IDs for cores per CPU&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Lines per tag&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; 00001&lt;BR /&gt;Self initializing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Fully associativate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Write-back invalidate&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Inclusive of lower cache levels:&amp;nbsp; N/A&lt;BR /&gt;Complex cache indexing&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;Unified on-die&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; &amp;nbsp; :&amp;nbsp; N/A&lt;BR /&gt;&lt;BR /&gt;________________________________________________________________________________&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;CPUID DATA:&lt;BR /&gt;&lt;BR /&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; EAX&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EAX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EBX&amp;nbsp;&amp;nbsp; &amp;nbsp; &amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; ECX&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; |&amp;nbsp;&amp;nbsp;&amp;nbsp; EDX&amp;nbsp;&amp;nbsp;&amp;nbsp; |&lt;BR /&gt;00000000h | 00000006h | 68747541h | 444D4163h | 69746E65h |&lt;BR /&gt;00000001h | 00100FA0h | 05060800h | 00802009h | 178BFBFFh |&lt;BR /&gt;00000002h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;00000004h | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;&lt;BR /&gt;80000000h | 8000001Bh | 68747541h | 444D4163h | 69746E65h |&lt;BR /&gt;80000005h | FF30FF10h | FF30FF20h | 40020140h | 40020140h |&lt;BR /&gt;80000006h | 20800000h | 42004200h | 02008140h | 0030B140h |&lt;BR /&gt;80000019h | F0300000h | 60100000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;8000001Dh | 00000000h | 00000000h | 00000000h | 00000000h |&lt;BR /&gt;&lt;BR /&gt;i checked it on cpu-world.com and it got only one L3&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Wed, 21 Aug 2013 08:05:14 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980016#M5690</guid>
      <dc:creator>Ilya_Z_</dc:creator>
      <dc:date>2013-08-21T08:05:14Z</dc:date>
    </item>
    <item>
      <title>Ilya,</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980017#M5691</link>
      <description>&lt;P&gt;Ilya,&lt;/P&gt;
&lt;P&gt;RE: Analyse&lt;/P&gt;
&lt;P&gt;When you inclue a URL (internet hyperlink) the administrator wants to make sure you are not using the forum to send SPAM.&lt;/P&gt;
&lt;P&gt;RE: CPUID&lt;/P&gt;
&lt;P&gt;Attached is QuickThread.cpp. This is&amp;nbsp;one of the files from my threading toolkit QuickThread(R). You can download the entire toolkit from &lt;A href="http://www.quickthreadprogramming.com/"&gt;www.quickthreadprogramming.com&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Search for QuickThreadStruct::ProcessNodes()&lt;/P&gt;
&lt;P&gt;This routine is called for each thread of the thread pool as it comes up. The routine, and the caller code, is a bit complex so making sense of what is happening is not straitforward. The mapping of cache to hardware thread could be made easier, but this is not entirely what is being done with the code.&lt;/P&gt;
&lt;P&gt;If you build the toolkit, you could then step through the code using the debugger. Also, if you build a simple test app that initialized the thread pool (qt::qtInit), and call "void qt::DumpState()" it will print out the topology.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Wed, 21 Aug 2013 19:41:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980017#M5691</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-08-21T19:41:08Z</dc:date>
    </item>
    <item>
      <title>it now remains for me to read</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980018#M5692</link>
      <description>&lt;P&gt;it now remains for me to read and understand the code. It is hard to find someone how can help with discovering CPU and cache topology.&lt;/P&gt;
&lt;P&gt;Thanks a lot Jim.&lt;/P&gt;
&lt;P&gt;&lt;/P&gt;</description>
      <pubDate>Thu, 22 Aug 2013 07:51:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980018#M5692</guid>
      <dc:creator>Ilya_Z_</dc:creator>
      <dc:date>2013-08-22T07:51:54Z</dc:date>
    </item>
    <item>
      <title> &gt;&gt;&gt;On MSDN i've found that</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980019#M5693</link>
      <description>&lt;P&gt;&amp;nbsp;&amp;gt;&amp;gt;&amp;gt;On MSDN i've found that GetLogicalProcessorsInformationEx proc might be &amp;gt;&amp;gt;&amp;gt;&lt;/P&gt;
&lt;P&gt;I agree that this function is not the easiest to work with.I also had the problem with the output provided by this function.&lt;/P&gt;</description>
      <pubDate>Sat, 21 Sep 2013 20:18:20 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980019#M5693</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-09-21T20:18:20Z</dc:date>
    </item>
    <item>
      <title>Also note that</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980020#M5694</link>
      <description>&lt;P&gt;Also note that&amp;nbsp;GetLogicalProcessorsInformationEx is not available on all O/S's (rather Win32 DLL's), good code would query if the entrypoint is available. i.e. attempt to fetch the address of the function, if found make the call, else take alternative action.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2013 11:38:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980020#M5694</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-09-23T11:38:07Z</dc:date>
    </item>
    <item>
      <title>Thanks Jim for providing this</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980021#M5695</link>
      <description>&lt;P&gt;Thanks Jim for providing this valuable tip.&lt;/P&gt;</description>
      <pubDate>Mon, 23 Sep 2013 12:33:54 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980021#M5695</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-09-23T12:33:54Z</dc:date>
    </item>
    <item>
      <title>#if defined(__linux)</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980022#M5696</link>
      <description>&lt;P&gt;[cpp]&lt;/P&gt;
&lt;P&gt;&lt;BR /&gt;#if defined(__linux)&lt;BR /&gt;#else&lt;BR /&gt;typedef BOOL (WINAPI *LPFN_GLPI)(&lt;BR /&gt;&amp;nbsp;PSYSTEM_LOGICAL_PROCESSOR_INFORMATION,&lt;BR /&gt;&amp;nbsp;PDWORD);&lt;BR /&gt;#endif&lt;BR /&gt;...&lt;/P&gt;
&lt;P&gt;#if defined(__linux)&lt;BR /&gt;// other code&lt;BR /&gt;#else&lt;BR /&gt;LPFN_GLPI Glpi = (LPFN_GLPI)GetProcAddress(&lt;BR /&gt;&amp;nbsp;&amp;nbsp;GetModuleHandle(TEXT("kernel32")), "GetLogicalProcessorInformation");&lt;BR /&gt;if(Glpi != NULL)&lt;BR /&gt;&amp;nbsp; DoGlpi(Glpi);&lt;BR /&gt;else&lt;BR /&gt;&amp;nbsp; DoYourAlternateMethod();&lt;BR /&gt;#endif&lt;BR /&gt;...&lt;/P&gt;
&lt;P&gt;void&amp;nbsp;QuickThreadStruct::DoGlpi(LPFN_GLPI Glpi)&lt;BR /&gt;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL done;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; BOOL rc;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SYSTEM_LOGICAL_PROCESSOR_INFORMATION* SLPI;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; DWORD ReturnLength;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_Native nSLPI;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_Native iSLPI;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int_Native packageCount;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; uint_Native procCoreCount;&lt;BR /&gt;&amp;nbsp;uint_Native&amp;nbsp;ProcessorMask;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; LOGICAL_PROCESSOR_RELATIONSHIP Relationship;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; int8_t&amp;nbsp;ProcessorCore_Flags;&lt;BR /&gt;&amp;nbsp;DWORD&amp;nbsp;NumaNode_NodeNumber;&lt;BR /&gt;&amp;nbsp;_CACHE_DESCRIPTOR&amp;nbsp;CacheDescriptor;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; done = FALSE;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; SLPI = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; ReturnLength = 0;&lt;BR /&gt;&amp;nbsp;QuickThreadThreadContext *tls = qtThreadContext;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // Determine the size of the buffer&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = Glpi(SLPI, &amp;amp;ReturnLength);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((rc != FALSE) || (GetLastError() != ERROR_INSUFFICIENT_BUFFER)) \&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; DoStop(__FILE__, __LINE__, "Failure obtaining SYSTEM_LOGICAL_PROCESSOR_INFORMATION");&lt;BR /&gt;&amp;nbsp;&amp;nbsp; &lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; nSLPI = ReturnLength / sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; if((nSLPI*sizeof(SYSTEM_LOGICAL_PROCESSOR_INFORMATION)) != ReturnLength) DoStop(__FILE__, __LINE__, "Debug");&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;bool b = tls-&amp;gt;set_Use_qt_malloc(false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;SLPI = new SYSTEM_LOGICAL_PROCESSOR_INFORMATION[nSLPI];&lt;BR /&gt;&amp;nbsp;&amp;nbsp;tls-&amp;gt;set_Use_qt_malloc(b);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; // now obtain the array of SLPI&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; rc = Glpi(SLPI, &amp;amp;ReturnLength);&lt;BR /&gt;&amp;nbsp;if(rc != TRUE) DoStop(__FILE__, __LINE__, "Failure obtaining SYSTEM_LOGICAL_PROCESSOR_INFORMATION");&lt;/P&gt;
&lt;P&gt;#ifndef RelationProcessorPackage&lt;BR /&gt;#define RelationProcessorPackage 3&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;packageCount = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; procCoreCount = 0;&lt;BR /&gt;&amp;nbsp;for(iSLPI=0; iSLPI&amp;lt;nSLPI; ++iSLPI)&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;ProcessorMask = (uint_Native)SLPI[iSLPI].ProcessorMask;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;Relationship = SLPI[iSLPI].Relationship;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;switch(Relationship)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;case RelationProcessorCore:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;ProcessorCore_Flags = SLPI[iSLPI].ProcessorCore.Flags;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;procCoreCount = qt_bitCount(ProcessorMask);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;case RelationNumaNode:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;NumaNode_NodeNumber = SLPI[iSLPI].NumaNode.NodeNumber;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(NumaNode_NodeNumber)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(tls-&amp;gt;NUMA_NodeNumber == 0)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tls-&amp;gt;pThreadFreeListList = tls-&amp;gt;pDefaultThreadFreeListList;&amp;nbsp;// allocate later&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tls-&amp;gt;pNUMAPoolContext = 0;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;tls-&amp;gt;NUMA_NodeNumber = NumaNode_NodeNumber;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(NumaNode_NodeNumber &amp;gt; HighestNumaNodeNumber)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;DoStop(__FILE__, __LINE__, "NumaNode_NodeNumber &amp;gt; HighestNumaNodeNumber\n");&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(NumaNode_NodeNumber &amp;gt; HighestNumaNodeNumber)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;HighestNumaNodeNumber = NumaNode_NodeNumber;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;if(NumaNode_NodeNumber &amp;lt; nBits_uint_Native)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;NumaNodeMasks[NumaNode_NodeNumber].bm |= ProcessorMask;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;case RelationCache:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;CacheDescriptor = SLPI[iSLPI].Cache;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;case RelationProcessorPackage:&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;++packageCount;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;default:&lt;BR /&gt;#if defined(_DEBUG)&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;printf("Undefined relationship %d\n", SLPI[iSLPI].Relationship);&lt;BR /&gt;#endif&lt;BR /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;break;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;&amp;nbsp;{&lt;BR /&gt;&amp;nbsp;&amp;nbsp;bool b = tls-&amp;gt;set_Use_qt_malloc(false);&lt;BR /&gt;&amp;nbsp;&amp;nbsp;delete [] SLPI;&lt;BR /&gt;&amp;nbsp;&amp;nbsp;tls-&amp;gt;set_Use_qt_malloc(b);&lt;BR /&gt;&amp;nbsp;}&lt;BR /&gt;} // void&amp;nbsp;QuickThreadStruct::DoGlpi(LPFN_GLPI Glpi)&lt;BR /&gt;[/cpp]&lt;/P&gt;
&lt;P&gt;The above won't compile on your system (it is part of the QuickThread library). However, it wll provide an outline of what you are up against.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Tue, 24 Sep 2013 14:23:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980022#M5696</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-09-24T14:23:00Z</dc:date>
    </item>
    <item>
      <title>Thanks Jim:)</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980023#M5697</link>
      <description>&lt;P&gt;Thanks Jim:)&lt;/P&gt;
&lt;P&gt;Your example provides a lot of information how to use that Win API function.&lt;/P&gt;</description>
      <pubDate>Tue, 24 Sep 2013 18:11:30 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980023#M5697</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-09-24T18:11:30Z</dc:date>
    </item>
    <item>
      <title>The above code was written</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980024#M5698</link>
      <description>&lt;P&gt;The above code was written before Window 7. Windows 7 and later have added a new feature for systems with .gt. 64 logical processors. You will likely have to extend the code to handle this capability.&lt;/P&gt;
&lt;P&gt;The other code uses CPUID/CPUIDX and APIC codes, this too may need revisions.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Wed, 25 Sep 2013 00:28:43 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980024#M5698</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-09-25T00:28:43Z</dc:date>
    </item>
    <item>
      <title>I am working on C++ library</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980025#M5699</link>
      <description>&lt;P&gt;I am working on C++ library wrapped around WinAPI and I will test your code on Win7 and Win8.&lt;/P&gt;</description>
      <pubDate>Wed, 25 Sep 2013 07:03:51 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980025#M5699</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-09-25T07:03:51Z</dc:date>
    </item>
    <item>
      <title>The code works on Windows 7</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980026#M5700</link>
      <description>&lt;P&gt;The code works on Windows 7 on systems with 1 Group. Pre-Windows 7 there was only one group (and no aggrigation of processors in groups). Pre-groups had a limitation of upto 64 logical processors (on x64 platform). On systems with groups, each group has an upper limit of 64 logical processors. Linux did not have this issue because they supported a variable length bitmask, depending on system 1024 to 65536 (though some may go beyond this).&lt;/P&gt;
&lt;P&gt;See: &lt;A href="http://archive.msdn.microsoft.com/64plusLP"&gt;http://archive.msdn.microsoft.com/64plusLP&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;for additional information.&lt;/P&gt;
&lt;P&gt;Jim Dempsey&lt;/P&gt;</description>
      <pubDate>Wed, 25 Sep 2013 12:09:21 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980026#M5700</guid>
      <dc:creator>jimdempseyatthecove</dc:creator>
      <dc:date>2013-09-25T12:09:21Z</dc:date>
    </item>
    <item>
      <title>The similar info is also</title>
      <link>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980027#M5701</link>
      <description>&lt;P&gt;The similar info is also contained in Windows Internals book the sixth edition.Here I mean processor groups.&lt;/P&gt;</description>
      <pubDate>Thu, 26 Sep 2013 08:23:07 GMT</pubDate>
      <guid>https://community.intel.com/t5/Intel-Moderncode-for-Parallel/cache-topology/m-p/980027#M5701</guid>
      <dc:creator>Bernard</dc:creator>
      <dc:date>2013-09-26T08:23:07Z</dc:date>
    </item>
  </channel>
</rss>

