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

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

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

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

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 ෼ࢄ ୯Ұ