Slides

advertisement
Declarative Programming Languages
for Multicore Architecures
Workshop
15 January 2006
Welcome…
…to the first workshop on Declarative Programming
Languages for Multicore Architectures!
Multicores are coming
• We need to program them
• Correctly!
• Implicit parallelism is promising
• But can it be made effective
Declarative Programming Languages for Multicore Architectures
Logistics
Workshop, breakfast, and breaks here in Cypress
Lunch in suite J2 – buffet style
Informal style
– Ask questions
– Discuss
– Mixture of retrospective, work in progress, and speculation
on the future
Name tags at the back if you don’t have one
No wireless 
Declarative Programming Languages for Multicore Architectures
Programme
8:40
1:00
Panel
9:40
Keynote: The Evolution of
Computing Architectures
Break
2:00
Break
9:55
pH: Lessons Learned
2:20
Now you C it. Now you Don’t.
10:20
Nesl
2:45
10:45
Break
3:10
11:00
The Next Generation of Logic
Languages
A Look Back and Forward at
Parallel Logic Programming
Lunch
3:35
Hume and Multicore
Architectures
Automatic Parallelization and
Granularity Control of Logic
and Constraint Programs
Break
11:25
11:50
3:55
4:20
4:45
5:10
Declarative Programming Languages for Multicore Architectures
Design and Implementation
Issues for Atomicity
Stabilizers
Nested Data Parallelism in
Haskell
Wrap Up
Panel:
Lessons from the Past and
What it Means for Multicores
Questions to ponder:
• What worked and what did not work in the
research of the 80s and 90s?
• What are the remaining hard problems from
previous research?
• Which hard problems are relevant to multicores,
and which are mitigated?
• What does the experience of 80s and 90s suggest
for multicore design/architecture?
Declarative Programming Languages for Multicore Architectures
Thanks
To all of you for attending
To all the presenters
To Anwar Ghuloum, Leaf Petersen, and Jesse Fang
for helping me to organise the workshop
To Intel’s PSL for sponsoring the workshop
To Margarida Strickland for administrative support
Declarative Programming Languages for Multicore Architectures
Keynote
The Evolution of Computing Architectures
Douglas Carmean
Senior Principal Architect
Intel Corporation
Declarative Programming Languages for Multicore Architectures
Panel:
Lessons from the Past and
What it Means for Multicores
• What worked and what did not work in the
research of the 80s and 90s?
• What are the remaining hard problems from
previous research?
• Which hard problems are relevant to
multicores, and which are mitigated?
• What does the experience of 80s and 90s
suggest for multicore design/architecture?
Declarative Programming Languages for Multicore Architectures
Summary
Hardware
Implicit parallelism
Language design
Key problems
Cross fertilisation
Hardware ideas
Intel
Next steps
Declarative Programming Languages for Multicore Architectures
Hardware Summary
Three types of parallelism:
• Vector units – floating point, but integer too
• SMT – multiple register sets in single core
• SMP – multiple cores on chip
Declarative Programming Languages for Multicore Architectures
Implicit Parallelism Summary
Over promised, under delivered
Easy to generate lots of parallelism
• Problem is to schedule
• Cactus stacks, thunks worked well
Sequential (deterministic) semantics is important
• Easier to debug
Cost models are important
Communication was a problem
• Not with multicores
Declarative Programming Languages for Multicore Architectures
Language Design Thoughts
Don’t commit to specific hardware
Don’t base the language on the implementation
Exact reduction operations are important (see Nesl)
Domain specific languages
• Bad idea, use libraries instead
Atomic great for when you have effects
Declarative Programming Languages for Multicore Architectures
More Language Design Thoughts
Control of effects is very beneficial
• Fewer writes
• TM logs
Three layers of language:
• Explicit – transactional memory, atomicity
• Implicit – declarative and sequential
• Data parallelism – especially vector
Declarative Programming Languages for Multicore Architectures
Controversy
Are annotations needed?
•
•
•
•
No
Minimal (and vs or parallelism)
Strategies
Manuel’s ideas
Message Passing – good or bad?
• MPI bad
• Perhaps a good programming abstraction exists for certain
applications
Cost models
Declarative Programming Languages for Multicore Architectures
Key Problems
Memory management
• Concurrent GC is an important problem
Data locality
• How to place data
• Shared vs non-shared memory
• Memory Models
Cost Models
Debugging
Put the models together
Thread packages and good low-level libraries
Declarative Programming Languages for Multicore Architectures
Cross Fertilisation
Or-parallelism for search
• What is the equivalent in FP?
Nesl good at Vector, SMT, and SMP
• Can LP do this too?
What are the similarities between the communities
and can they exchange results?
Declarative Programming Languages for Multicore Architectures
Hardware Ideas - General
General purpose mechanisms, language specific bad
Memory bandwidth is fundamental issue
• Latency solved?
Dataflow?
Programmable hardware?
Declarative Programming Languages for Multicore Architectures
Hardware Ideas - Specific
Hardware support for Transactional Memory
Read and/or write barriers for GC, TM, I-structs
Fast context switching, lightweight spawn & sched
No glass-jaws in synchronisation instructions
Non-shared memory
NUMA caches
Allocate in cache
Declarative Programming Languages for Multicore Architectures
Intel
Feel free to talk to us:
• Anwar, David, Leaf, Neal, and Rob
PSL is working on:
• McRT – threading, scheduling, and synchronisation
• Pillar – target language (a la C--) for parallel
languages
Intel Research:
• Jekyll, Autolocker, Lockbend, …
Declarative Programming Languages for Multicore Architectures
This Workshop Follow On
Feel free to give me feedback at:
• neal.glew@intel.com
A website will be constructed if presenters are willing
to give me their slides
• I’ll send a message when ready
Declarative Programming Languages for Multicore Architectures
The Future
• A once off?
• Repeat again next year and then see?
– Open?
– Associated with what? Or by itself?
• Something else?
• Follow on for the hardware ideas?
Declarative Programming Languages for Multicore Architectures
Download