Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
プログラミング言語 Tlangの開発
Search
tkclimb
May 05, 2020
Technology
660
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
プログラミング言語 Tlangの開発
2020年のGWハッカソンで発表した内容です。
tkclimb
May 05, 2020
More Decks by tkclimb
See All by tkclimb
コンピューティングの基礎と高速化入門
tkclimb
17
9.5k
Other Decks in Technology
See All in Technology
システム思考で問題に対処する
yussak
0
190
[しろおび夏祭り2026] チャットするAIから、作業するAIへ - 使われ方の変化と、その裏側で起きていること
kk0n
0
1.6k
AIは実装を速くする。では、私たちは何を今作るべきか?-立場を越えてリリースに向き合ったチーム開発の実践 / 20260801 Hiromi Nakaya and Naoki Takahashi
shift_evolve
PRO
3
430
Eight Engineering Unit 紹介資料
sansan33
PRO
3
8.1k
Redmine 7.0 新機能・機能強化解説(OSC2026京都ダイジェスト版)
vividtone
1
200
SmartHR Engineering Team Deck
smarthr
0
560
Flutterをカメラで動かしたかった話
sony
1
130
AIエージェントを前提としたプラットフォーム エンジニアリング:GKEで作るAgent-Ready Golden Path
legalontechnologies
PRO
2
210
制約理論(ToC)入門 2026版
recruitengineers
PRO
6
2k
変化の早いClaude Codeを 書籍に落とし込む
oikon48
7
1.3k
QAエンジニア起点で進める、SmartHRにおける信頼性向上について
kaomi_wombat
1
120
個人OSSが、机の上から世界に広がるまでの話
shinyasaita
1
360
Featured
See All Featured
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
Stop Working from a Prison Cell
hatefulcrawdad
274
21k
KATA
mclloyd
PRO
35
15k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.9k
Ethics towards AI in product and experience design
skipperchong
2
340
Navigating Weather and Climate Data
rabernat
0
460
Unlocking the hidden potential of vector embeddings in international SEO
frankvandijk
0
890
The Art of Programming - Codeland 2020
erikaheidi
57
14k
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
1.2k
[SF Ruby Conf 2025] Rails X
palkan
2
1.2k
DBのスキルで生き残る技術 - AI時代におけるテーブル設計の勘所
soudai
PRO
68
56k
The World Runs on Bad Software
bkeepers
PRO
72
12k
Transcript
ϓϩάϥϛϯάݴޠ Tlangͷ։ൃ Takato Yamada
͍͖ͳΓͰ͕͢ɺ ϓϩάϥϜΛߴԽେมͰ͢
΅͔͠ॲཧ (ߴԽͳ͠)
΅͔͠ॲཧ (खͰߴԽ)
΅͔͠ॲཧ (HalideͰߴԽ)
΅͔͠ॲཧ (HalideͰߴԽ) ·ͩਓखͰߴԽ (εέδϡʔϦϯά)͕ඞཁ
Tlang (Tensor language) ͱ • ΞϓϦέʔγϣϯࢥߟͳςϯιϧϕʔεɺϓϩάϥϛϯάݴޠ • ΞϧΰϦζϜͱεέδϡʔϦϯάΛͯ͠ॻ͚Δ • εέδϡʔϦϯάΛࣗಈͰߦ͑Δ
(ͪΖΜखॻ͖Ͱ͖Δ) • ϔςϩδχΞεͳڥͰಈ͖ɺϢʔβࠩҟΛҙࣝ͠ͳͯ͘ྑ͍ • ϞμϯͳϓϩάϥϛϯάݴޠͰ࣮͢Δ͜ͱͰՄಡੑɺ։ൃޮΛվળ • هड़ՄೳͳυϝΠϯΛը૾ॲཧσΟʔϓϥʔχϯά͚ͩͰͳͯ͘ɺ HPC·Ͱ͍͛ͨ
ࠩผԽ • Tlang: ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL ΦʔτνϡʔχϯάΛࡌ ࢄܭࢉܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ) • Tensorflow,
Pytorch: ։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLAՄೳ?) • Halide: ։ൃݴޠ͕C++ɺϧʔϓൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ)ɺ Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • TVM: ։ൃݴޠ͕C++ͱPythonɺϧʔϓൖґଘ͕ॻ͚ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍
• Tlang: ։ൃݴޠ͕Ϟμϯ(Swift, Rust)ɺϧʔϓൖґଘ͕هड़ՄೳͳϧʔϓϨϕϧDSL ΦʔτνϡʔχϯάΛࡌ ࢄܭࢉܭࢉΧʔωϧͷඇಉظ࣮ߦʹରԠ͢Δ (શͯئ) • Tensorflow, Pytorch:
։ൃݴޠ͕C++ ɺϧʔϓϨϕϧهड़Ͱ͖ͳ͍ (XLAՄೳ?) • Halide: ։ൃݴޠ͕C++ɺϧʔϓൖґଘ͕ॻ͚ͳ͍(ϑϩϯτΤϯυͰ)ɺ Φʔτνϡʔχϯάͦ͜·Ͱڧ͘ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • TVM: ։ൃݴޠ͕C++ͱPythonɺϧʔϓൖґଘ͕ॻ͚ͳ͍ɺࢄܭࢉͰ͖ͳ͍ • Tiramisu: ։ൃݴޠ͕C++ɺΦʔτνϡʔχϯά͕ͳ͍ ࠩผԽ (স) ݸਓͰશͯΛ࣮͢Δ͜ͱ΄΅ෆՄೳ. ݁ہͷॴͳʹ͔࡞Γ͍͚ͨͩস
ϥ ϯ λ Π Ϝ ߏ ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ LLVM
ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 GPU CPU ࢄ ୯Ұ ࣗಈ࠷దԽػ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR
࠷దԽػ 2 ࣗಈ࠷దԽػ ߏ ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ LLVM GPU CPU ࢄ ୯Ұ
ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͜͜ΛՃ͍ͨ͠! ݟੵΓ LLVM GPU CPU ࢄ ୯Ұ
ϥ ϯ λ Π Ϝ ϥ Π ϒ ϥ Ϧ
ؔܕελΠϧ ϑϩϯτΤϯυ ίʔυੜ ݴޠϑϩϯτΤϯυ ߴϨϕϧ IR ࠷దԽػ 1 Ϩϕϧ IR ࠷దԽػ 2 ࣗಈ࠷దԽػ ͕͜͜ݮͬͨ ݁Ռ LLVM GPU CPU ࢄ ୯Ұ
• ࢀߟϓϩδΣΫτΛॻ͖͍ͯͨ͠ॴɺDeep copy͕Ͱ͖ͳ͍͜ͱ ͕͔ͬͨ →ίϯύΠϥͷIRϥϕϧ͖༗ޮάϥϑͰද͞Ε͍ͯΔ͕ɺάϥ ϑΛίϐʔ͢ΔͨΊʹɺઌߦΛશͯίϐʔ͠ͳ͍ͱ͍͚ͳ͍… • ϊʔυͷछྨ͕ଟ͍͠ɺࠓޙ૿͑Δͷख࣮େม ࣗಈͰੜͯ͠Ζ͏! ͑ͬͳʹͬͯͨͷʁ
• ࢀߟϓϩδΣΫτΛॻ͖͍ͯͨ͠ॴɺDeep copy͕Ͱ͖ͳ͍͜ͱ ͕͔ͬͨ →ίϯύΠϥͷIRϥϕϧ͖༗ޮάϥϑͰද͞Ε͍ͯΔ͕ɺάϥ ϑΛίϐʔ͢ΔͨΊʹɺઌߦΛશͯίϐʔ͠ͳ͍ͱ͍͚ͳ͍… • ϊʔυͷछྨ͕ଟ͍͠ɺࠓޙ૿͑Δͷख࣮େม ࣗಈͰੜͯ͠Ζ͏! ͑ͬͳʹͬͯͨͷʁ
ѱເͷ࢝·Γ
ͱΓ͋͑ͣਐḿ D {Add(C[Var(i), Var(j)], {C {Add(A[Var(i), Var(j)], {Input(A)}, B[Var(i), Var(j)],
{Input(B)})}}, IntConst(3))}
ίʔυΛੜ͢ΔͨΊͷίʔυ(ίϯύΠϥ)Λ ੜ͢ΔίʔυΛॻ͘৬ਓʹͳΓ·ͨ͠ ݁