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
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
tkclimb
May 05, 2020
Technology
650
0
Share
プログラミング言語 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
AI와 협업하는 조직으로의 여정
arawn
0
570
20260423_執筆の工夫と裏側 技術書の企画から刊行まで / From the planning to the publication of technical book
nash_efp
3
690
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
390
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
190
Good Enough Types: Heuristic Type Inference for Ruby
riseshia
1
400
Percolatorを廃止し、マルチ検索サービスへ刷新した話 / Search Engineering Tech Talk 2026 Spring
visional_engineering_and_design
0
220
「QA=テスト」「シフトレフト=スクラムイベントの参加者の一員」の呪縛を解く。アジャイルな開発を止めないために、10Xで挑んだ「右側のしわ寄せ」解消記 #scrumniigata
nihonbuson
PRO
1
140
20260428_Product Management Summit_Loglass_JoeHirose
loglassjoe
4
6.1k
生成AIはソフトウェア開発の革命か、ソフトウェア工学の宿題再提出なのか -ソフトウェア品質特性の追加提案-
kyonmm
PRO
1
660
M5Stack CoreS3とZephyr(RTOS)で Edge AIっぽいことしてみた
iotengineer22
0
400
社内エンジニア勉強会の醍醐味と苦しみ/tamadev
nishiuma
0
270
AIが書いたコードを信じられない問題 〜レビュー負荷を下げるために変えたこと〜 / The AI Code Trust Gap: Reducing the Review Burden
bitkey
PRO
8
1.4k
Featured
See All Featured
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.8k
The Curious Case for Waylosing
cassininazir
0
330
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
270
Design and Strategy: How to Deal with People Who Don’t "Get" Design
morganepeng
133
19k
GraphQLの誤解/rethinking-graphql
sonatard
75
12k
How to make the Groovebox
asonas
2
2.1k
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
500
Building Flexible Design Systems
yeseniaperezcruz
330
40k
The Mindset for Success: Future Career Progression
greggifford
PRO
0
320
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.2k
How to Talk to Developers About Accessibility
jct
2
190
Speed Design
sergeychernyshev
33
1.6k
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))}
ίʔυΛੜ͢ΔͨΊͷίʔυ(ίϯύΠϥ)Λ ੜ͢ΔίʔυΛॻ͘৬ਓʹͳΓ·ͨ͠ ݁