Re: [Gems-users] Failed assertion in DirectoryMemory.C


Date: Tue, 30 May 2006 11:18:05 +0200 (CEST)
From: Enric Herrero <enricherrero@xxxxxxxx>
Subject: Re: [Gems-users] Failed assertion in DirectoryMemory.C
Ok, we have seen that:
g_MEMORY_MODULE_BITS = g_MEMORY_SIZE_BITS - g_DATA_BLOCK_BITS -
g_NUM_MEMORIES_BITS;
and that g_MEMORY_SIZE_BYTES is the installed memory.

Probably in the mapping function memoryBits() is g_NUM_MEMORIES_BITS. In this case our system should work but we still have a failed assertion.

Maybe the problem is that we use a large number of memories since in configurations with 4,8,16 and 32 memories we don't have problems. We have 4096 Mb of main memory divided in 64 memories, so 64Mb/memory

ruby0.setparam g_NUM_PROCESSORS 64
ruby0.setparam g_NUM_L2_BANKS 64
ruby0.setparam g_NUM_MEMORIES 64
ruby0.setparam g_PROCS_PER_CHIP 64
ruby0.setparam L1_CACHE_NUM_SETS_BITS 8
ruby0.setparam DIR_CACHE_NUM_SETS_BITS 10
ruby0.setparam L2_CACHE_NUM_SETS_BITS 18
ruby0.setparam g_DATA_BLOCK_BYTES 32
ruby0.setparam g_MEMORY_SIZE_BYTES 4294967296

If we understand well all the memories in ruby can access all positions in dram memory. It is the mapping function that determines which memory has access to each position. In this case a failed assertion when looking an address may not be a problem of the mapping function. Is it right?

Any help is highly appreciated,
Thanks

/Marco and Enric

Enric Herrero <enricherrero@xxxxxxxx> escribió:
Hi,
We have checked the L2->Dir mapping function and it's like that:

if (RubyConfig::memoryBits() > 0) {
    dirNode = addr.bitSelect(RubyConfig::dataBlockBits(),
                        RubyConfig::dataBlockBits()+RubyConfig::memoryBits()-1);
}

We would like to know which variable in ruby config is related with memoryBits(). We want to use interleaved memory so we would like to have a number of bits according to the number of memories.

Also we would like to know better what some config parameters mean:

g_MEMORY_SIZE_BYTES: 4294967296
(This means we have 4096 Mb of RAM)

We have an address space size of 64 bits since we are working with Sarek

g_MEMORY_MODULE_BITS: 0
How is this parameter calculated?

Thank you,

/Marco and Enric

Mike Marty <mikem@xxxxxxxxxxx> escribió:
This error appears when the mapping functions in Slicc don't agree with
what the individual DirectoryMemory's range of memory.

See the map_Address_to_Directory and map_Address_to_DirectoryNode
functions in ruby/slicc_interface/RubySlicc_ComponentMapping.h

--Mike


Enric Herrero wrote:

>Hi,
>
>We are running simulations with a new protocol we have
>written. It worked in the tester and also while
>running SPLASH2 Water-Spatial with 4,8,16 and 32
>processors. But we have the following error when
>simulating with 64 processors:
>
>Processors: 64
>Creating system done
>Ruby initialization complete
>failed assertion 'isPresent(address)' at fn
>Directory_Entry& DirectoryMemory::lookup(PhysAddress)
>in system/DirectoryMemory.C:132
>failed assertion 'isPresent(address)' at fn
>Directory_Entry& DirectoryMemory::lookup(PhysAddress)
>in system/DirectoryMemory.C:132
>
>We think that maybe it is a problem of how we
>configure the simulation since the protocol worked
>with the other configurations. The problem appears
>only when we load ruby. We have defined the following
>parameters:
>
>@boards = {0 : [[0, 4, 4096],[1, 4, 0],[2, 4, 0],[3,
>4, 0],[4, 4, 0],[5, 4, 0]],
> 1 : [[0, 4, 0],[1, 4, 0],[2, 4, 0],[3, 4,
>0],[4, 4, 0],[5, 4, 0]],
> 2 : [[0, 4, 0],[1, 4, 0],[2, 4, 0],[3, 4,
>0]]} #4096 Mb of main memory
>
>@sarek_disk_size = 4256972800L
>
>ruby0.setparam L2_CACHE_NUM_SETS_BITS 18 #512kB/proc
>ruby0.setparam g_MEMORY_SIZE_BYTES 4294967296 #32 bits
>
>We would be very grateful if someone knows why this
>error appears. Thank you.
>
>/Marco and Enric



LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
[← Prev in Thread] Current Thread [Next in Thread→]