<?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 Cache Identifier in Software Tuning, Performance Optimization &amp; Platform Monitoring</title>
    <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782412#M384</link>
    <description>The affinity masks are used to just get the cpuid information from each cpu.&lt;BR /&gt;We have to read the cpuid info from all the cpus.&lt;BR /&gt;What are you trying to accomplish? &lt;BR /&gt;An OS independent way of figuring out cache sharing? &lt;BR /&gt;You can't really get a method that doesn't use some aspect ofan OS.&lt;BR /&gt;Or do you wanta way that works on multiple OS's?&lt;BR /&gt;Pat</description>
    <pubDate>Wed, 28 Mar 2012 15:43:22 GMT</pubDate>
    <dc:creator>Patrick_F_Intel1</dc:creator>
    <dc:date>2012-03-28T15:43:22Z</dc:date>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782409#M381</link>
      <description>Hi everyone!&lt;BR /&gt;&lt;BR /&gt;I'd like to find out which cores share a particular cache. With the 'cpuid' command I found lots of useful information, but I still need some sort of unique cache identifier to really determine which cores use which cache. &lt;BR /&gt;&lt;BR /&gt;Does anyone know how to get this information? Or is there another way to get the information?&lt;BR /&gt;&lt;BR /&gt;Thanks in advance!&lt;BR /&gt;Robert</description>
      <pubDate>Wed, 28 Mar 2012 14:42:53 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782409#M381</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-03-28T14:42:53Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782410#M382</link>
      <description>Robert,&lt;BR /&gt;&lt;BR /&gt;did you try&lt;A href="http://software.intel.com/en-us/articles/intel-64-architecture-processor-topology-enumeration/"&gt;the cache topology enumeration algorithm/utility&lt;/A&gt; described in the article about "Intel 64 Architecture Processor Topology Enumeration".&lt;BR /&gt;&lt;BR /&gt;Roman</description>
      <pubDate>Wed, 28 Mar 2012 15:11:18 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782410#M382</guid>
      <dc:creator>Roman_D_Intel</dc:creator>
      <dc:date>2012-03-28T15:11:18Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782411#M383</link>
      <description>Hey Roman&lt;BR /&gt;&lt;BR /&gt;Yes I quickly looked at it, but I stumbled over these 'affinity masks'. As far as I understood it, this information is from the operating system, right? (or can this information be obtained from the hardware?)&lt;BR /&gt;&lt;BR /&gt;The problem with this is, that I cannot rely on an operating system to do the work, since the code is for an operating system :)</description>
      <pubDate>Wed, 28 Mar 2012 15:18:59 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782411#M383</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-03-28T15:18:59Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782412#M384</link>
      <description>The affinity masks are used to just get the cpuid information from each cpu.&lt;BR /&gt;We have to read the cpuid info from all the cpus.&lt;BR /&gt;What are you trying to accomplish? &lt;BR /&gt;An OS independent way of figuring out cache sharing? &lt;BR /&gt;You can't really get a method that doesn't use some aspect ofan OS.&lt;BR /&gt;Or do you wanta way that works on multiple OS's?&lt;BR /&gt;Pat</description>
      <pubDate>Wed, 28 Mar 2012 15:43:22 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782412#M384</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-03-28T15:43:22Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782413#M385</link>
      <description>Yes, it should be an OS independent way of figuring out cache sharing. Because this code is the part of the operating system that gathers this information...&lt;BR /&gt;&lt;BR /&gt;So there is no way to get this information from the hardware directly? ... Then I guess I have to come up with another technique to determine which caches belong to which core ...&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;</description>
      <pubDate>Wed, 28 Mar 2012 15:59:45 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782413#M385</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-03-28T15:59:45Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782414#M386</link>
      <description>&lt;P&gt;I would say it like this:&lt;BR /&gt;I don't see how you can get the cpuid information fromall thecpus without using some facility of the OS to switch your software fromone cpu to another cpu.&lt;BR /&gt;Certainly you can get the cpuid info from the cpu you are currently running on without the OS but you need the cpuid info from ALL the cpus.&lt;BR /&gt;&lt;BR /&gt;Most of the enumeration library is windows &amp;amp; linux OS independent and the OS specific code is in util_os.c.&lt;BR /&gt;The library code is not "part of the operating system" but util_os.c does call OS routines to move the thread from 1 cpu to the next.&lt;BR /&gt;Hope this helps,&lt;BR /&gt;Pat&lt;/P&gt;</description>
      <pubDate>Wed, 28 Mar 2012 16:47:37 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782414#M386</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-03-28T16:47:37Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782415#M387</link>
      <description>Also, on Windows, system routines like GetLogicalProcessorInformationEx() will detail which cpus share a cache. See &lt;A href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd405488%28v=vs.85%29.aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/desktop/dd405488%28v=vs.85%29.aspx&lt;/A&gt;</description>
      <pubDate>Wed, 28 Mar 2012 18:30:39 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782415#M387</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-03-28T18:30:39Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782416#M388</link>
      <description>Yes the switching is necessary and this is already done!&lt;BR /&gt;&lt;BR /&gt;Edit:&lt;BR /&gt;Thanks, then I'll have a closer look at the enumeration algorithm since it can be executed independently!&lt;BR /&gt;</description>
      <pubDate>Wed, 28 Mar 2012 19:03:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782416#M388</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-03-28T19:03:09Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782417#M389</link>
      <description>Hi again&lt;BR /&gt;&lt;BR /&gt;I looked at the topology enumeration algorithm provided by Intel. I think I understood the basic concept, but there are still some things that work incorrectly. &lt;BR /&gt;For example I wrote some lines to gather the information about a cache at a specific level (see below). &lt;BR /&gt;The log_roundToNearestPof2 performs the same operation as described in the documentation (and cpuid just calls CPUID and stores the values of all registers in the parameters).&lt;BR /&gt;This piece of code is then executed on all levels (subLevelIndex) and on all processors.&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt; [cpp]uint32_t eax, ebx, ecx, edx;

	eax = 1;
	ecx = 0;
	cpuid(&amp;amp;eax, &amp;amp;ebx, &amp;amp;ecx, &amp;amp;edx);
	const uint8_t initialAPICID = 0xff &amp;amp; (ebx &amp;gt;&amp;gt; 24);

	eax = 4;
	ecx = subLevelIndex;
	cpuid(&amp;amp;eax, &amp;amp;ebx, &amp;amp;ecx, &amp;amp;edx);

	const uint8_t levelType = 0xf &amp;amp; eax;
	const char* levelName[] = {"Invalid", "Data Cache      ", "Instruction Cache", "Unified Cache"};

	const uint16_t cacheMaskWidth = log_roundToNearestPof2(((eax &amp;gt;&amp;gt; 14) &amp;amp; 0xfff) + 1);
	const uint32_t mask = ~((-1) &amp;lt;&amp;lt; cacheMaskWidth);
	const uint8_t threadsSharingCache = ((eax &amp;gt;&amp;gt; 14) &amp;amp; 0xfff) + 1;
	const uint32_t cacheID = mask &amp;amp; initialAPICID;

	printf("Level: %d (%s),t %d threads/cache, tCache ID = %dn",
			levelType, levelName[levelType], threadsSharingCache, cacheID);[/cpp] &lt;BR /&gt;&lt;BR /&gt;Does anyone see the where the problem lies in this code? &lt;BR /&gt;&lt;BR /&gt;Thanks in advance!&lt;BR /&gt;Robert</description>
      <pubDate>Fri, 06 Apr 2012 12:28:08 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782417#M389</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-04-06T12:28:08Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782418#M390</link>
      <description>&lt;P&gt;Hello Robert,&lt;BR /&gt;Can you give us a clue?&lt;BR /&gt;Perhaps include the output?&lt;BR /&gt;Thanks,&lt;BR /&gt;Pat&lt;/P&gt;</description>
      <pubDate>Fri, 06 Apr 2012 15:59:35 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782418#M390</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-04-06T15:59:35Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782419#M391</link>
      <description>Sorry forgot all about that. &lt;BR /&gt;I executed the code on all 8 cores (with taskset) on my linux system. On Each core the code was executed for the subLevelIndex's 0 .. 3.&lt;BR /&gt;&lt;BR /&gt;This is the output&lt;BR /&gt;&lt;BR /&gt;[bash]Running on core 0
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 0
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 1
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 1
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 2
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 0
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 3
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 1
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 4
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 0
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 5
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 1
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 6
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 0
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 0
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 7
Level: 1 (Data Cache      ),	 2 threads/cache, 	Cache ID = 1
Level: 2 (Instruction Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 2 threads/cache, 	Cache ID = 1
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 7
[/bash] &lt;BR /&gt;&lt;BR /&gt;&lt;BR /&gt;When I execute cpu_topology (the enumeration algorithm provided by intel), I get the following output:&lt;BR /&gt;&lt;BR /&gt;[bash]	Software visible enumeration in the system: 
Number of logical processors visible to the OS: 8 
Number of logical processors visible to this process: 8 
Number of processor cores visible to this process: 4 
Number of physical packages visible to this process: 1 


	Hierarchical counts by levels of processor topology: 
 # of cores in package  0 visible to this process: 4 .
	 # of logical processors in Core 0 visible to this process: 2 .
	 # of logical processors in Core  1 visible to this process: 2 .
	 # of logical processors in Core  2 visible to this process: 2 .
	 # of logical processors in Core  3 visible to this process: 2 .


	Affinity masks per SMT thread, per core, per package: 
Individual:
	P:0, C:0, T:0 --&amp;gt; 1
	P:0, C:0, T:1 --&amp;gt; 2

Core-aggregated:
	P:0, C:0 --&amp;gt; 3
Individual:
	P:0, C:1, T:0 --&amp;gt; 4
	P:0, C:1, T:1 --&amp;gt; 8

Core-aggregated:
	P:0, C:1 --&amp;gt; c
Individual:
	P:0, C:2, T:0 --&amp;gt; 10
	P:0, C:2, T:1 --&amp;gt; 20

Core-aggregated:
	P:0, C:2 --&amp;gt; 30
Individual:
	P:0, C:3, T:0 --&amp;gt; 40
	P:0, C:3, T:1 --&amp;gt; 80

Core-aggregated:
	P:0, C:3 --&amp;gt; c0

Pkg-aggregated:
	P:0 --&amp;gt; ff


	APIC ID listings from affinity masks
Affinity mask 00000001 - apic id 0
Affinity mask 00000002 - apic id 1
Affinity mask 00000004 - apic id 2
Affinity mask 00000008 - apic id 3
Affinity mask 00000010 - apic id 4
Affinity mask 00000020 - apic id 5
Affinity mask 00000040 - apic id 6
Affinity mask 00000080 - apic id 7


Package 0 Cache and Thread details


Box Description:
Cache  is cache level designator
Size   is cache size
OScpu# is cpu # as seen by OS
Core   is core#[_thread# if &amp;gt; 1 thread/core] inside socket
AffMsk is AffinityMask(extended hex) for core and thread
CmbMsk is Combined AffinityMask(extended hex) for hw threads sharing cache
       CmbMsk will differ from AffMsk if &amp;gt; 1 hw_thread/cache
Extended Hex replaces trailing zeroes with 'z#'
       where # is number of zeroes (so '8z5' is '0x800000')
L1D is Level 1 Data cache, size(KBytes)= 32,  Cores/cache= 2, Caches/package= 4
L1I is Level 1 Instruction cache, size(KBytes)= 32,  Cores/cache= 2, Caches/package= 4
L2 is Level 2 Unified cache, size(KBytes)= 256,  Cores/cache= 2, Caches/package= 4
L3 is Level 3 Unified cache, size(KBytes)= 6144,  Cores/cache= 8, Caches/package= 1
      +-----------+-----------+-----------+-----------+
Cache |  L1D      |  L1D      |  L1D      |  L1D      |
Size  |  32K      |  32K      |  32K      |  32K      |
OScpu#|    0     1|    2     3|    4     5|    6     7|
Core  |c0_t0 c0_t1|c1_t0 c1_t1|c2_t0 c2_t1|c3_t0 c3_t1|
AffMsk|    1     2|    4     8|   10    20|   40    80|
CmbMsk|    3      |    c      |   30      |   c0      |
      +-----------+-----------+-----------+-----------+

Cache |  L1I      |  L1I      |  L1I      |  L1I      |
Size  |  32K      |  32K      |  32K      |  32K      |
      +-----------+-----------+-----------+-----------+

Cache |   L2      |   L2      |   L2      |   L2      |
Size  | 256K      | 256K      | 256K      | 256K      |
      +-----------+-----------+-----------+-----------+

Cache |   L3                                          |
Size  |   6M                                          |
CmbMsk|   ff                                          |
      +-----------------------------------------------+
[/bash] &lt;BR /&gt;&lt;BR /&gt;I hope this helps!&lt;BR /&gt;</description>
      <pubDate>Sat, 07 Apr 2012 12:40:09 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782419#M391</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-04-07T12:40:09Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782420#M392</link>
      <description>Thanks Robchip,&lt;BR /&gt;Your output looks reasonable.&lt;BR /&gt;But, as to whetherthe code will work on allIntel chips, I would have to go through the cpu_topology code, extract out the relevant lines, and compare it to what you've done.&lt;BR /&gt;I don't have the time to go through the code like this right now.&lt;BR /&gt;If you've extracted out the relevant code from the library correctly then it should work.&lt;BR /&gt;Sorry to not be more helpful,&lt;BR /&gt;Pat</description>
      <pubDate>Sat, 07 Apr 2012 17:39:50 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782420#M392</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-04-07T17:39:50Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782421#M393</link>
      <description>Hey Pat&lt;BR /&gt;&lt;BR /&gt;thanks for the answer!&lt;BR /&gt;You said, that the output looks reasonable - but then I have trouble understanding it: &lt;BR /&gt;&lt;BR /&gt;how do I have to interpret the last line of each core:&lt;BR /&gt;&lt;BR /&gt;[bash]Running on core 0
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 0
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 1
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 2
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 2
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 3
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 3
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 4
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 4
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 5
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 5
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 6
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 6
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
Running on core 7
...
Level: 3 (Unified Cache),	 16 threads/cache, 	Cache ID = 7

[/bash] &lt;BR /&gt;shouldn't this cache ID always be the same since there is only one L3 cache shared by all threads?</description>
      <pubDate>Sun, 08 Apr 2012 09:49:57 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782421#M393</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-04-08T09:49:57Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782422#M394</link>
      <description>Yourcache IDprobably should be the same.&lt;BR /&gt;Are you doing the same code method as in the cpu_topology library?&lt;BR /&gt;If not, why not just use the library?&lt;BR /&gt;Pat&lt;BR /&gt;</description>
      <pubDate>Sun, 08 Apr 2012 17:37:47 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782422#M394</guid>
      <dc:creator>Patrick_F_Intel1</dc:creator>
      <dc:date>2012-04-08T17:37:47Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782423#M395</link>
      <description>Hmm, I looked at the code but I'm only querying the hardware not interpreting the information.&lt;BR /&gt;Yeah - using the library is a good idea, of course - but at the moment I'd just like to find the bug in the code :)&lt;BR /&gt;&lt;BR /&gt;Thanks a lot for your help!&lt;BR /&gt;</description>
      <pubDate>Sun, 08 Apr 2012 22:07:03 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782423#M395</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-04-08T22:07:03Z</dc:date>
    </item>
    <item>
      <title>Cache Identifier</title>
      <link>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782424#M396</link>
      <description>Hey everyone&lt;BR /&gt;
&lt;BR /&gt;
just for completeness I'd like to post the solution to the problem:&lt;BR /&gt;
the bug was in line 18 of the original code. The cacheId is calculated differently:&lt;BR /&gt;
&lt;BR /&gt;
[cpp]const uint32_t cacheID = initialAPICID &amp;amp; (-1 ^ mask)[/cpp] &lt;BR /&gt;
that way every cacheID is unique.&lt;BR /&gt;
&lt;BR /&gt;
Thanks everyone for the help!&lt;BR /&gt;
Robert&lt;BR /&gt;</description>
      <pubDate>Tue, 10 Apr 2012 15:57:00 GMT</pubDate>
      <guid>https://community.intel.com/t5/Software-Tuning-Performance/Cache-Identifier/m-p/782424#M396</guid>
      <dc:creator>robchip</dc:creator>
      <dc:date>2012-04-10T15:57:00Z</dc:date>
    </item>
  </channel>
</rss>

