SlideServe
Menu
Préférences
© SlideServe · v2026

Designing Type Systems for Distributed Data Structures

raven-good avatar
23 diapositives · 338 Views · Nov 18, 2014

This study explores language design options for distributed data structures, focusing on memory models, type grammar, and global/local distinctions. It discusses soundness, optimization, and real-world application of type systems in programming languages.

Designing Type Systems for Distributed Data Structures - slide 1
01 / 23Designing Type Systems for Distributed Data Structures
1 / 17

Télécharger la présentation

Designing Type Systems for Distributed Data Structures
Une image / un lien ci-dessous est fourni (tel quel) pour télécharger la présentation

Politique de téléchargement : le contenu du site vous est fourni TEL QUEL pour votre information et votre usage personnel ; il ne peut être vendu, concédé sous licence ni partagé sur d’autres sites sans l’accord de son auteur.Le contenu vous est fourni TEL QUEL, pour votre information et votre usage personnel uniquement. Téléchargez la présentation en cliquant sur ce lien. Lors du téléchargement, si vous ne parvenez pas à télécharger une présentation, l’éditeur a peut-être supprimé le fichier de son serveur.Pendant le téléchargement, si vous ne parvenez pas à obtenir une présentation, le fichier a peut-être été supprimé par l’éditeur.

F I N

Plus de contenu associé

Transcription de la présentation
  1. Type Systems ForDistributed Data Structures Ben Liblit & Alexander Aiken University of California, Berkeley

  2. Underlying Memory Model • Multiple machines, each with local memory • Global memory is union of local memories • Distinguish two types of pointers: • Local points to local memory only • Global points anywhere: machine, address • Different representations & operations

  3. Language Design Options • Make everything global? • Conservatively sound • Easy to use • Hides program structure • Needlessly slow

  4. Language Design Options • Expose local/global to programmer? • Explicit cost model • Faster execution • Naïve designs are unsound (as we will show) • Code becomes difficult to write and maintain • Conversion of sequential code is problematic

  5. A (Possibly) Gratuitous GlobalA (Potentially) Unsound Local 7 8 5

  6. Understand It First, Then Fix It • Study local/global in a simpler context • Design a sound type system for a tiny language • Move from type checking to type inference • Programmers see as much detail as they want • Apply findings to design of real languages • Type system detects & forbids “bad things” • Local qualification inference as optimization

  7. Type Grammar • Boxed and unboxed values • Integers, pointers, and pairs • Pairs are not assumed boxed • References to boxes are either local or global

  8. Global Dereferencing:Standard Approach Unsound x = 5 x =

  9. Global Dereferencing:Sound With Type Expansion x = 5 x =

  10. Global Dereferencing:Tuple Expansion • Type expansion for tuple components? • No: would change representation of tuple 8 x = 8 5 x =

  11. Global Dereferencing:Tuple Expansion • Solution: Invalidate local pointers in tuples • Other components remain valid, usable 8 x = 8 5 x =

  12. Global Tuple Selection • Starting at x, can we reach 5? • Yes, with a proper selection operator 8 x = 5

  13. Global Tuple Selection • Selection offsets pointer within tuple 8 x = @2 x = 5

  14. Global Tuple Selection • Selection offsets pointer within tuple • Global-to-local pointer works just as before 8 x = @2 x = 5  @2 x =

  15. Extended Type Grammar • Allow subtyping on validity qualifiers

  16. Global Assignment x = 3 5 y =

  17. Global Assignment x = 3 5 y =

  18. Type Qualifier Inference • Efficiently infer qualifiers in two passes: • Maximize number of “invalid” qualifiers • Maximize number of “local” qualifiers • Allows for a range of language designs • Complete inference • Allow explicit declarations as needed • On large codes, does better than humans!

  19. Titanium Implementation • Titanium = Java + SPMD parallelism • Focus is on scientific codes • Global is assumed; local is explicit • E.g., “Object local” or “double [] local [] local” • Local qualification inference in compiler • Conservative for valid/invalid qualifiers • Monomorphic

  20. Titanium Benchmarks: Speed

  21. Titanium Benchmarks: Code Size

  22. Summary and Conclusions • For top performance, local/global must be dealt with • Soundness issues are subtle, but tractable • Analysis core is surprisingly simple • Type qualifier inference is a double win: • Programming is easier • Optimized code is faster, smaller