degibson
Golden Member
This post is a little unusual in that I don't actually have a problem, but I'd like to poll the users here to see what their experience, opinion, and gripes are regarding parallel programming in general and memory models in particular.
Basically, I have been 'accused' of having an unrealistic vision of parallel coding, as I do it quite a bit... but it remains an important problem, and I want to gain some intuition as to how others reason about it. That said, any on-topic comments would be appreciated... or if you like, comment on these (canned) questions.
1) In what language(s) have you written parallel applications or toy programs? What abstractions (MPI, threads, TBB, Map/Reduce... something else)? I'm especially interested in hearing about non-POSIX platform parallelism, and parallelism in languages 'higher' than C++, as my expertise is limited in those cases.
2) What parallelization strategies are popular? Data-parallel, control-parallel, pipeline-parallel, something else?
3) What about synchronization? Locks, STM, non-blocking wait-free...?
4) Here is one I am particularly curious: How many folks have been burned by either a language-level memory model (like Java) or a hardware-level memory model (e.g. x86/Processor Consistency or SPARC/TSO,RMO)? My intuition suggests that most folks will have nothing to say in this category... am I wrong?
PS -- I'll be away for a week, so I won't be reading replies right away...
Basically, I have been 'accused' of having an unrealistic vision of parallel coding, as I do it quite a bit... but it remains an important problem, and I want to gain some intuition as to how others reason about it. That said, any on-topic comments would be appreciated... or if you like, comment on these (canned) questions.
1) In what language(s) have you written parallel applications or toy programs? What abstractions (MPI, threads, TBB, Map/Reduce... something else)? I'm especially interested in hearing about non-POSIX platform parallelism, and parallelism in languages 'higher' than C++, as my expertise is limited in those cases.
2) What parallelization strategies are popular? Data-parallel, control-parallel, pipeline-parallel, something else?
3) What about synchronization? Locks, STM, non-blocking wait-free...?
4) Here is one I am particularly curious: How many folks have been burned by either a language-level memory model (like Java) or a hardware-level memory model (e.g. x86/Processor Consistency or SPARC/TSO,RMO)? My intuition suggests that most folks will have nothing to say in this category... am I wrong?
PS -- I'll be away for a week, so I won't be reading replies right away...