Hi Ismail!
My study mainly focuses on integration of transactional memory support
into data-flow extension of OpenMP that is
aiming increased expressiveness and performance while preserving the
paradigms' properties.
I am really happy to see people working with transactional memory. I
will try to follow your work.
My project combines development and research components and can be
decomposed into 5 phases.
1. Study the compatibility of the transactional memory and OpenMP
constructs in the
transmem development branch of GCC and propose solutions to the possible
technical
difficulties.
In the Velox project, one application named QuakeTM was using TM and
OpenMP without problem but I know that the OpenMP was not used
extensively. So probably you will find some problems.
2. Study the desgin and implementation of both data-flow (streaming) and
transmem branches
of GCC, interacting with their maintainers.
I am not a maintainer (not yet at least) of the trans-mem branch but I
know quite well TM and some part of implementation details in gcc. So if
you post questions, I will try to answer them.
Note : Just an example code from LeeTM for compatibility research of
OpenMP and trans-mem .
#define MEMSET _ITM_memsetW
#define MEMCPY _ITM_memcpyRtWt
#define BEGIN_TRANSACTION \
_ITM_beginTransaction (pr_instrumentedCode | pr_hasNoIrrevocable\
| pr_hasNoAbort)
#define END_TRANSACTION \
_ITM_commitTransaction ()
Why did you use explicit calls to _ITM_* functions? why not using the
__transaction semantic?
// transaction body
lee->layNextTrack(track, targ->private_buffer);
Did you transactify accesses in this function? or does it use only
MEMSET and MEMCPY?
(I have tried LeeTM only one time and I can't remember implementation
details.)
There is not a big performance difference between our approach (OpenMP +
trans-mem) and (pthreads + tinySTM).
Interesting. Actually I am one of the developers of TinySTM and I am
quite interested to see exact results.
Good luck and feel free to ask questions.
Patrick Marlier.