Upgrade to Pro — share decks privately, control downloads, hide ads and more …

プログラミング言語 Tlangの開発

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.

プログラミング言語 Tlangの開発

2020年のGWハッカソンで発表した内容です。

Avatar for tkclimb

tkclimb

May 05, 2020
Tweet

More Decks by tkclimb

Other Decks in Technology

Transcript

  1. Tlang (Tensor language) ͱ͸ • ΞϓϦέʔγϣϯࢥߟͳςϯιϧϕʔεɺϓϩάϥϛϯάݴޠ • ΞϧΰϦζϜͱεέδϡʔϦϯάΛ෼཭ͯ͠ॻ͚Δ • εέδϡʔϦϯάΛࣗಈͰߦ͑Δ

    (΋ͪΖΜखॻ͖΋Ͱ͖Δ) • ϔςϩδχΞεͳ؀ڥͰಈ͖ɺϢʔβ͸ࠩҟΛҙࣝ͠ͳͯ͘ྑ͍ • ϞμϯͳϓϩάϥϛϯάݴޠͰ࣮૷͢Δ͜ͱͰՄಡੑɺ։ൃޮ཰Λվળ • هड़ՄೳͳυϝΠϯΛը૾ॲཧ΍σΟʔϓϥʔχϯά͚ͩͰͳͯ͘ɺ
 HPC·Ͱ޿͍͛ͨ
  2. ࠩผԽ • Tlang:
 ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓ఻ൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL
 ΦʔτνϡʔχϯάΛ౥ࡌ
 ෼ࢄܭࢉ΍ܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ๬) • Tensorflow,

    Pytorch: 
 ։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLA͸Մೳ?) • Halide: 
 ։ൃݴޠ͕C++ɺϧʔϓ఻ൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ͸)ɺ
 Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺ෼ࢄܭࢉͰ͖ͳ͍ • TVM: 
 ։ൃݴޠ͕C++ͱPythonɺϧʔϓ఻ൖґଘ͕ॻ͚ͳ͍ɺ෼ࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍
  3. • Tlang:
 ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓ఻ൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL
 ΦʔτνϡʔχϯάΛ౥ࡌ
 ෼ࢄܭࢉ΍ܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ๬) • Tensorflow, Pytorch:

    
 ։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLA͸Մೳ?) • Halide: 
 ։ൃݴޠ͕C++ɺϧʔϓ఻ൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ͸)ɺ
 Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺ෼ࢄܭࢉͰ͖ͳ͍ • TVM: 
 ։ൃݴޠ͕C++ͱPythonɺϧʔϓ఻ൖґଘ͕ॻ͚ͳ͍ɺ෼ࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍ ࠩผԽ (স) ݸਓͰશͯΛ࣮૷͢Δ͜ͱ͸΄΅ෆՄೳ. ݁ہͷॴͳʹ͔࡞Γ͍͚ͨͩস
  4. ϥ ϯ λ Π Ϝ ߏ੒ ؔ਺ܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ੒ LLVM

    ݴޠ಺ϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 ௿Ϩϕϧ IR ࠷దԽػ 2 GPU CPU ෼ࢄ ୯Ұ ࣗಈ࠷దԽػ ϥ Π ϒ ϥ Ϧ
  5. ؔ਺ܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ੒ ݴޠ಺ϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 ௿Ϩϕϧ IR

    ࠷దԽػ 2 ࣗಈ࠷దԽػ ߏ੒ ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ LLVM GPU CPU ෼ࢄ ୯Ұ
  6. ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ

    ؔ਺ܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ੒ ݴޠ಺ϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 ௿Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͜͜Λ௥Ճ͍ͨ͠! ݟੵ΋Γ LLVM GPU CPU ෼ࢄ ୯Ұ
  7. ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ

    ؔ਺ܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ੒ ݴޠ಺ϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 ௿Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͕͜͜ݮͬͨ ݁Ռ LLVM GPU CPU ෼ࢄ ୯Ұ