On 21/09/10 19:15, Samuel Thibault wrote:
What values should I use for property which is not present? cache_size = -1 and cache_line_size = -1 or what?+ /* Add L1 cache */ + /* Ignore Instruction caches */ + + /* d-cache-block-size - ignore */ + /* d-cache-line-size - to read, in bytes */ + /* d-cache-sets - ignore */ + /* d-cache-size - to read, in bytes */ + /* d-tlb-sets - ignore */ + /* d-tlb-size - ignore, always 0 on power6 */ + /* i-cache-* and i-tlb-* represent instruction cache, ignore */ + uint32_t d_cache_line_size = 0, d_cache_size = 0; + if ( (0 != hwloc_read_uint32(cpu, "d-cache-line-size",&d_cache_line_size, root_fd))&& + (0 != hwloc_read_uint32(cpu, "d-cache-size",&d_cache_size, root_fd)) ) { + struct hwloc_obj *cache = + hwloc_alloc_setup_object(HWLOC_OBJ_CACHE, -1); + cache->attr->cache.size = d_cache_size;. + cache->attr->cache.depth = 1; + cache->attr->cache.linesize = d_cache_line_size;I would rather create an L1 cache object as soon as any of the cache properties is there, and then fill the properties with what is actually available.What I mean is replace if ( (0 != hwloc_read_uint32(cpu, "d-cache-line-size",&d_cache_line_size, root_fd))&& (0 != hwloc_read_uint32(cpu, "d-cache-size",&d_cache_size, with if ( (0 != hwloc_read_uint32(cpu, "d-cache-line-size",&d_cache_line_size, root_fd))|| (0 != hwloc_read_uint32(cpu, "d-cache-size",&d_cache_size, (i.e. replace&& with ||) and fix the rest accordingly.
