Slide 1

Slide 1 text

ۙະདྷతฒྻ LL @mootoh

Slide 2

Slide 2 text

@mootoh ߴࢁ ੐େ ฒྺ 5೥ ࠷ۙ͸ ݚڀऀ : ΤϯδχΞ = 7:3 http://deadbeaf.org ݸਓͷҙݟɺݟղͰ͢

Slide 3

Slide 3 text

Molatomium CELL REGZA

Slide 4

Slide 4 text

ฒΧϯ

Slide 5

Slide 5 text

http://bit.ly/namikan

Slide 6

Slide 6 text

͸͡Ίʹ mootoh ฒྻϓϩάϥϛϯάͷೖ໳ˍ͓͞Β͍తͳ࿩ wraith13 ϩʔϨΠϠʔͰͷฒྻॲཧͷઃܭ goyoki STM hayamiz ฒྻ HPU ݴޠ MUDA syoyo ϚϧνίΞ࣌୅ͷ Lock-free ೖ໳ yamasa Haskell पΓ shelarcy ͦͷଞ ???

Slide 7

Slide 7 text

໨తͩͬͨ΋ͷ •ݚڀऀ͚ͩ͡Όͳͯ͘ •;ͭ͏ͷΤϯδχΞ΋ฒྻॲཧΛ ͦͯ͠ LL tiger 100ਓ!

Slide 8

Slide 8 text

ۙະདྷతฒྻ LL

Slide 9

Slide 9 text

ͦ΋ͦ΋ ͳͥฒྻͳͷ͔

Slide 10

Slide 10 text

λμ൧ ऴྃͷ ͓஌Βͤ CC by-nc-sa : http://www.flickr.com/photos/carrapatoso/3467673411/ ʘ(^o^)ʗ ʘ(^o^)ʗ ʘ(^o^)ʗ ʘ(^o^)ʗ ʘ(^o^)ʗ ʘ(^o^)ʗ ʘ(^o^)ʗ

Slide 11

Slide 11 text

“The Free Lunch is Over”, by Herb Sutter http://www.gotw.ca/publications/concurrency-ddj.htm λμ൧ ऴྃͷ ͓஌Βͤ

Slide 12

Slide 12 text

Ͳ͏͍͏͜ͱ͔ •͜Ε·Ͱ • ৽͍͠ CPU ങͬͯ͘Ε͹উखʹ଎͘ͳͬͨ •͜Ε͔Β (ϚϧνίΞ࣌୅) • ͦͷ··͡Ό଎͘ͳΒͳ͍ ʘ(^o^)ʗ • ฒྻʹॻ͔͘͠ͳ͍

Slide 13

Slide 13 text

http://edry.jp/a/2009/02/21_210347.xhtml

Slide 14

Slide 14 text

ͦ΋ͦ΋଎͘͢Δ ඞཁ͕͋Δͷ?

Slide 15

Slide 15 text

͜͜Ͱ ೿खͳσϞ CC by-nc : http://www.flickr.com/photos/b-tal/407402521/

Slide 16

Slide 16 text

௿ϨΠςϯγʔ ιϑτ΢ΣΞ

Slide 17

Slide 17 text

଴ͪ࣌ؒ •ྫ: Eclipse.app Λىಈ͢Δ࣌ؒ • on iMac Core 2 Duo 3GHz 4GB RAM • ॳճ: 33s, 2ճ໨Ҏ߱: 7s (628,702ਓ * 33s * 365೔) / (60 * 60 * 24 * 30) => 2,921 ਓ݄/೥

Slide 18

Slide 18 text

଴ͪ࣌ؒΛݮΒ͢ •21ੈل: ͕࣌ؒ࠷΋وॏͳࢿݯ •଴ͨͤͳ͍ • ࠃຽ૯޾෱ྔ (GNH) ͕޲্ •ϞόΠϧͰ͸ΑΓॏཁ

Slide 19

Slide 19 text

എܠ·ͱΊ •ϓϩηοαͷ޲্: प೾਺ →ίΞ਺ •ฒྻʹॻ͔͘͠ͳ͍ •଎͞ → ਓྨͷ GNH ޲্

Slide 20

Slide 20 text

ۙະདྷ LL

Slide 21

Slide 21 text

ۙະདྷ Timeline 2010 2015 2020

Slide 22

Slide 22 text

ݱঢ়ೝࣝ

Slide 23

Slide 23 text

2010 2015 2020 ͍·͜͜

Slide 24

Slide 24 text

ؾʹ͢Δ͜ͱ •ฒྻʹಈ͔͘ •≠ ฒߦ •Native thread Ͱ૸Δ͔ •ͲΜͳϞσϧɺύϥμΠϜΛ࣮૷͍ͯ͠Δ͔

Slide 25

Slide 25 text

•Native thread • 5.6 ͔Β ithread • thread ͝ͱʹ VM • default Ͱ shared nothing •6.0 ͔Β STMͳͲͨ͘͞Μ •ϥΠϒϥϦ • POE, AnyEvent, Coro, ...

Slide 26

Slide 26 text

•Native & green thread (࣮૷ʹΑΔ) • ruby1.8: green • ruby1.9: native, GIL ͋Γ • JRuby, MacRuby: native, GIL ͳ͠ \o/ •ϥΠϒϥϦ • Revactor, EventMachine, NeverBlock, ...

Slide 27

Slide 27 text

•Thread • CPython: GVL ͋Γ • Jython, IronPython : ͳ͛͞ • Jython: system 216% cpu 12.285 total

Slide 28

Slide 28 text

•no threads, fork it

Slide 29

Slide 29 text

Haskell •࠷ऴฌث ൴ঁ Haskell •ͳΜ͔͍Ζ͍Ζ͍͋ͬͯ͢͝ •Parallel Haskell •Concurrent Haskell •STM •Native thread?

Slide 30

Slide 30 text

•Actor Ϟσϧͷϝοηʔδύογϯά •Native thread • beam.smp 193.2% •Ϛγϯͷத/֎͕ಁաత

Slide 31

Slide 31 text

•͍͍ͱ͜ͲΓ •JVM ϕʔε •Native thread •Actor Ϟσϧͷϝοηʔδύογϯά

Slide 32

Slide 32 text

•goroutine •Native thread • runtime.GOMAXPROCS(NCPU) •Channel •ϝοηʔδύογϯά

Slide 33

Slide 33 text

Javascript •HTML5 Ͱ WebWorkers ͕ ! •ϝοηʔδύογϯά •Native thread ͬΆ͍? • WebKit ͷιʔεʹΑΔͱ •ࣝऀʹฉ͘

Slide 34

Slide 34 text

ݱঢ়·ͱΊ Perl Ruby Python PHP Haskell Erlang Scala go Javascript Native thread ˕ ˚ ˚ × ̋? ˕ ˕ ˕ ̋? Model, Paradigm Thread, STM Thread, Fiber Thread Process STM ͍͢͝Կ͔ Message Passing Thread, Message Passing Message Passing Message Passing ಛهࣄ߲ shared- nothing by default ݚڀ೤৺ ϚϧνίΞ Ͱ΋ Ϋϥελ Ͱ΋ ͍͍ͱ͜ ͲΓ goroutine Web Workers

Slide 35

Slide 35 text

2010-2015

Slide 36

Slide 36 text

Timeline 2010 2015 2020 ͜ͷ΁Μ

Slide 37

Slide 37 text

ిྗ͕΍͹͍ ↓

Slide 38

Slide 38 text

JVM ϕʔεॲཧܥͷ࣌୅ •Native thread, ϚϧνεϨουͷੑೳ •ϙʔλϒϧ •ྫ: • JRuby, Jython, Scala, Clojure, ...

Slide 39

Slide 39 text

Ͱ΋଴ͬͯ http://www.flickr.com/photos/johnkay/3331613033/

Slide 40

Slide 40 text

Ͱ΋଴ͬͯ •ϚϧνεϨουϓϩάϥϛϯά͸ࢮ͵ • σουϩοΫ, Ϩʔε, ࠶ݱੑͷͳ͍όά, ... •ఱ࠽ʹͱͬͯ͑͞೉͍͠ •εϨου͸ϓϦϛςΟϒ͗͢Δ • ΞηϯϒϦͰॻ͘Α͏ͳ΋ͷ

Slide 41

Slide 41 text

ந৅͕ඞཁ •ඇಉظ I/O •λεΫΩϡʔ •σʔλϑϩʔ •ϝοηʔδύογϯά • Πϕϯτۦಈ

Slide 42

Slide 42 text

ඇಉظ I/O •C10k ໰୊ •Event • AnyEvent (Perl) • EventMachine (Ruby)

Slide 43

Slide 43 text

λεΫΩϡʔ •ฒྻʹ࣮ߦ͍ͨ͠λεΫΛ ͲΜͲΜΩϡʔʹͭͬ͜Ή • :) ෼͔Γ΍͍͢ • :( ґଘؔ܎͕͋Δͱ...? •ྫ: • Grand Central Dispatch → Mac • Java 7 → JVM ϕʔεͷॲཧܥ • OpenCL http://en.wikipedia.org/wiki/File:Gcd_icon20090608.jpg http://www.khronos.org/opencl/ http://images.apple.com/macosx/technology/docs/ GrandCentral_TB_brief_20090903.pdf

Slide 44

Slide 44 text

σʔλϑϩʔ • ґଘؔ܎Λͭͳ͙ • ඞཁͳσʔλ͕ͦΖͬͨΒɺࣗಈతʹ࣍ͷॲཧʹਐΉ • Out of Order • Future ύλʔϯ • ౤͛ͬͺͳ͠δϟʔϚϯ • ผεϨουʹܭࢉͤ͞ͱ͍ͯɺࣗ෼͸ͦͷ··࣮ߦΛܧଓ • ผεϨου͕ऴΘͬͨΒ௨஌Λ΋Β͏ : value resolved : value not resolved yet : executable Atom : pending Atom

Slide 45

Slide 45 text

Molatomium

Slide 46

Slide 46 text

Runtime Atom Mol ϙʔλϏϦςΟ ฒྻ DSL ௚ྻ C

Slide 47

Slide 47 text

Mol • એݴతɺσʔλϑϩʔ • ͍͍ͪͪಉظॻ͔ͳ͍ • Atom (௚ྻίʔυ) Λ஗Ԇฒྻ࣮ߦɺϝϞԽ • C Έ͍ͨͳ Haskell Έ͍ͨͳ ฒྻ DSL main() { frame(frame_no, input) { local loop; local edge[-1..9] outside(0); local pocs[-1..9] outside(0); local ccr [-1..9] outside(0); loop = loop_count(); edge[i] := edge_atom(input, i); ccr [i] := ccr_atom(edge[i-1], edge[i], edge[i+1], i); pocs[i] := i % 2 == 0 ? pocs_even_atom(ccr [i-1], ccr[i], ccr [i+1], loop, i) : pocs_odd_atom (pocs[i-1], ccr[i], pocs[i+1], loop, i); return &pocs; } sync for (i in [0..30]) put_frame_atom(frame(i, get_frame_atom())); }

Slide 48

Slide 48 text

Runtime •֤ίΞʹ VM ͕͍Δ •͕͜͜ΩϞ Runtime Atom Waiting Atom Shared Memory Global Lock Runtime Context waiting for runtime lock arguments, return value update runtime context Mol Atom Wait ଓ͖͸࿦จͰ

Slide 49

Slide 49 text

2010-2015 ·ͱΊ •ϚϧνίΞظ • JVM ϕʔεͷॲཧܥ͕ྲྀߦΓͦ͏ •ੜͰεϨου࢖͏ͷ͸ແཧήʔ • ந৅Λ࢖͓͏ (ඇಉظ I/O, λεΫΩϡʔɺσʔλ ϑϩʔɺϝοηʔδύογϯά)

Slide 50

Slide 50 text

2015-2020

Slide 51

Slide 51 text

Timeline 2010 2015 2020 ͜ͷ΁Μ

Slide 52

Slide 52 text

ϝχʔίΞظ

Slide 53

Slide 53 text

Ϛϧν | ϝχʔ 8 Ϛϧν ϝχʔ

Slide 54

Slide 54 text

FAQ •ͦΜͳͨ͘͞Μ͋ͬͯԿʹ࢖͏ͷ? P = f V^2 1MHz ͕ 1000 ίΞ → 1GHz ฒͷੑೳ͕! ిݯ೉ຽ໰୊Λղܾ http://www.speedia.co.jp/~namisato/2008_05.html

Slide 55

Slide 55 text

Memory Wall CC-by : http://www.flickr.com/photos/afagen/4145629623/ ϝϞϦ͕΍͹͍

Slide 56

Slide 56 text

Memory Wall •༰ྔ͕૿͑ͳ͍ •ిؾΛ৯͏ •ଳҬ͕଍Γͳ͍ • 100ίΞΛ௒͑Δͱμϝ͛ • by “Can Manycores Support the Memory Requirements of Scientific Applications?” / A4MMC 2010

Slide 57

Slide 57 text

Memory Wall •ڞ༗ϝϞϦ → ෼ࢄϝϞϦ •ྫ: Intel SCC • ڞ༗ϝϞϦ஗͍ • ϝοηʔδύογϯά ͷ HW ͕͋Δ http://techresearch.intel.com/articles/Tera-Scale/1826.htm

Slide 58

Slide 58 text

ϝοηʔδύογϯά •Actor Ϟσϧ • Erlang, Scala, go, Javascript (HTML5, WebWorkers) • ଞͷ LL Ͱ΋ϥΠϒϥϦ͕͋Δ CC-by : http://www.flickr.com/photos/punkscrapper/4276443469/

Slide 59

Slide 59 text

͍͖ͳΓ...? •͍͖ͳΓͷύϥμΠϜγϑτ͸ ͖͍͔ͭ΋ •ॲཧܥ͸ϝοηʔδύογϯάɺ Ϣʔβ͸׳ΕͨύϥμΠϜ • εϨουɺΠϕϯτɺλεΫΩϡʔ

Slide 60

Slide 60 text

޾ͤͳະདྷ http://dragon-quest.jp/five/monster/11kingusuraimu.html ͨ͘͞ΜͷίΞ ↓ ͻͱͭͷίΞʹݟ͑Δ ฒྻԽͯ͠ͳ͍ίʔυ͕଎͘!

Slide 61

Slide 61 text

2015-2020 ·ͱΊ •ϝχʔίΞظ •ϝϞϦ͕΍͹͍ → ෼ࢄϝϞϦʹ •ϝοηʔδύογϯά͕ओྲྀʹͳΓ͛

Slide 62

Slide 62 text

2020 ->

Slide 63

Slide 63 text

Timeline 2010 2015 2020 ͜ͷ͋ͱ

Slide 64

Slide 64 text

ਖ਼௚ະདྷ͗ͯ͢૝૾͔ͭͳ͍ http://www.fastcursor.com/computers/quantum-computer-photo-gallery.asp ྔࢠίϯϐϡʔλ http://karlnordstrom.ca/ideas/?p=6

Slide 65

Slide 65 text

͜͜·Ͱͷ ·ͱΊ

Slide 66

Slide 66 text

ۙະདྷ Timeline 2010 2015 2020 ϚϧνίΞ ϝχʔίΞ ྔࢠίϯϐϡʔλ JVM ϕʔε Α͛Μͷॻ λεΫΩϡʔ εϨου Πϕϯτ Message passing

Slide 67

Slide 67 text

ະདྷͷฒྻ LL Λໝ૝

Slide 68

Slide 68 text

ཧ૝ͷฒྻ LL P •ͲΜͳߏ੒Ͱ΋ OK (Portable) • ϚϧνίΞɺϝχʔίΞɺϔςϩ •ίΞ਺ʹԠͯ͡εέʔϧ͢Δ (Performance) •ϥΫ (Productivity) • ฒྻΛҙࣝͤͣॻ͍ͯ OK

Slide 69

Slide 69 text

ݱ࣮తʹ ͳΖ͏

Slide 70

Slide 70 text

ݱ࣮తͳฒྻ LL •ͲΜͳߏ੒Ͱ΋ OK (Portable) • ϚϧνίΞɺϝχʔίΞɺϔςϩ •ίΞ਺ʹԠͯ͡εέʔϧ͢Δ (Performance) •ϥΫ (Productivity) • ฒྻΛҙࣝͤͣॻ͍ͯ OK

Slide 71

Slide 71 text

LL ͬͯ? •ϓϩάϥϚͷෛ୲͕ Light •ݱ࣮ɺݱ৔త • ඞཁʹഭΒΕͯͭ͘ΒΕΔ΋ͷ • ΞϓϦ࣍ୈɺ DSL

Slide 72

Slide 72 text

ํ޲ੑ: ฒྻ DSL •௚ྻίʔυΛͭͳ͙ฒྻ LL • ௚ྻίʔυ: C, Ruby, Perl, PHP, ... • Communicating Sequential Process •LL ޲͖ͷฒྻੑ • ཻ౓͓͓͖Ί •Glue ͱͯ͠ͷ LL, ϝλ LL

Slide 73

Slide 73 text

࢖͍΍ͬͯ͢͞? •ਓ͕ཧղͰ͖Δ͜ͱ • ෳࡶͳϞσϧ͸࢖ΘΕͳ͍ • ݟ͑ͳ͍΋ͷΛ૝૾͢Δͷ͸Ή͍ͣ (ଳҬͳͲ) •ਓ͸ෳ਺ͷ͜ͱΛಉ࣌ʹߟ͑ΒΕͳ͍ • ϚϧνλεΫ͸ੜ࢈ੑΛ 40% Լ͛Δ (by Harvard Business Review http://blogs.hbr.org/bregman/2010/05/how-and-why-to-stop-multitaski.html )

Slide 74

Slide 74 text

ະղܾ໰୊ •ہॴੑ •ଳҬ •λεΫͱσʔλసૹͷΦʔόʔϥοϓ •λεΫͷཻ౓ௐ੔ •ϔςϩ http://dragon-quest.jp/five/

Slide 75

Slide 75 text

ࠓ͕νϟϯε •ΞʔΩςΫνϟܹมͷ·ͬ࠷த •σϑΝΫτΛͱΕΔ͔΋ •͍ͭʹ C ͕...

Slide 76

Slide 76 text

੍໿ •ຊ౰ͷ੍໿͸Կ͔ • ෺ཧతͳ΋ͷ (νοϓ໘ੵɺফඅిྗ) •͕͠ΒΈͱ͔࣮૷্ͷ੍໿͸ਓ޻త

Slide 77

Slide 77 text

Re-Discover •ੲɺݟ੾ΓΛ͚ٕͭͨज़͕ࠓͦ͜࢖͑ͨΓ͢Δ •ྫ: • GC • Javascript • ϝοηʔδύογϯά • σʔλϑϩʔ

Slide 78

Slide 78 text

͜͜·Ͱ·ͱΊ •ݱ࣮తۙະདྷฒྻ LL • ੜ࢈ੑͱੑೳ͸ཉ͍͠ •͍·͕νϟϯε •ΞϓϦ࣍ୈ

Slide 79

Slide 79 text

Application

Slide 80

Slide 80 text

Application •ΞϓϦ͕ݴޠɺϞσϧΛυϥΠϒ͢Δ •ݴޠɺϞσϧ͕ϋʔυ΢ΣΞΛυϥΠϒ͢Δ

Slide 81

Slide 81 text

ͲΜͳ?

Slide 82

Slide 82 text

1. ͕͔͔࣌ؒΓ͗ͯ͢ ͖͋ΒΊ͍ͯͨ͜ͱ http://lucille.sourceforge.net/gallery/0_1_3/index.html ྫ: Ray Tracing

Slide 83

Slide 83 text

εϐʔυ͕࣭ʹస׵͢Δ •଎͘ͳΔ͚ͩͰੈք͕มΘΔ͜ͱ͕͋Δ •ྫ: • खज़γϛϡϨʔγϣϯ • ձ࿩ೝࣝ • Ұ೔͔͔͍ͬͯͨॲཧ͕ϦΞϧλΠϜʹ

Slide 84

Slide 84 text

2. ͭ͘Δܥ http://blogs.itmedia.co.jp/yasusasaki/2010/07/ipad-ab70.html “͋ͳͨ͸ফඅऀʹͳͬͯ͸͍͚ͳ͍ɻ ੜ࢈͢ΔऀʹͳΓͳ͍͞ɻ”

Slide 85

Slide 85 text

2. ͭ͘Δܥ •try-error ͷαΠΫϧ͕ ܶతʹ୹ॖ͞ΕΔͱ...? •ྫ • Pixelmator • ಈըฤू

Slide 86

Slide 86 text

3. ߹Θٕͤ http://www.flickr.com/photos/overig/4639331740/ ܭࢉྔυΧ৯͍ΞϓϦΛϚογϡΞοϓ http://commons.wikimedia.org/wiki/File:Box2d-screenshot.png http://www.flickr.com/photos/nh567/1406671607/

Slide 87

Slide 87 text

4. ֦ுܥ •ϓϥάΠϯɺϘοτɺ֦ுͱ͍ΘΕΔ΋ͷ •ฒྻͰಈ͘΋ͷ͕ର৅ • AIɺ೴Έͦ • ϩϘοτ

Slide 88

Slide 88 text

ͦͷଞ •3࣍ݩө૾Λฤू •2࣍ݩ → 3࣍ݩ

Slide 89

Slide 89 text

Ҏ্·ͱΊ

Slide 90

Slide 90 text

ۙະདྷฒྻ LL •ฒྻϓϩάϥϛϯάͰշదͳੈքΛͭ͘Ζ͏ •ฒྻ LL • ੜ࢈ੑͱੑೳΛཱ྆΍ʂ •ࠓ͙͢Ͱ͖Δ͜ͱ • ϝοηʔδύογϯάʹ׳Εͱ͘ͱΑ͛͞ •ΞϓϦέʔγϣϯ • ଎͘ͳͬͨΒੈք͕มΘΔ΋ͷͬͯ?

Slide 91

Slide 91 text

No content