Hi all,
we are using LogTM to run some transactional versions of various graph
algorithms.
More specifically we are simulating a 4-core machine using the
MESI_CMP_filter_directory protocol and we create 2 threads which we bind
on 2 of the processors. We don't config any of the chip/memory hierarchy
options, we just use the default values. When the code is executed, the
stats report 0 aborts and of course the products of the algorithms are
wrong.
After some tests, we found out that for our benchmarks to work
correctly, we need to set g_PROCS_PER_CHIP equal to the number of
processors. Which makes sense, since MESI_CMP_filter_directory is
described as a single-chip protocol. However, ti would be interesting to
know if the problem is caused by a limitation of the Transactional
Manager that it cannot check transactions across different chips? Or is
it something that has to do with this specific coherence protocol, in
which case if we used another protocol LogTM would work fine? And of
course can we use LogTM with the other protocols that are shipped with GEMS?
Kind regards,
Kostis
|