20分くらいでわかった気分になれるC++20コルーチン

yohhoy
1
20分くらいで
わかった気分になれる†
C++20コルーチン
2019/9/4
C++MIX #5
†効果には個人差があります。C++20コルーチン 完全理解™️を保証するものではありません。
2
はじめに
誰?
twitter @yohhoy / hatena id:yohhoy
何を?
C++20導入予定の コルーチン 概要を紹介
どうして?
勉強会駆動 C++20コルーチン調査
 本日のディスカッション ネタ提供
Coroutines
3
Question: コルーチン?
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
4
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
Answer: C++20コルーチン
5
Answer: C++20コルーチン
並行タスク(Concurrency task)
非同期I/O(Asynchronous I/O)
ジェネレータ(Generator)
エラー伝搬(Error propagation)
ハイレベル機能の
実装に利用する
低レベル言語仕様 と
新しい構文 を定義
6
C++20コルーチンのユーザは誰?
並行タスク
ライブラリ
ジェネレータ,
etc.
非同期I/O
ライブラリ
アプリケーション
プログラマ
ライブラリ
プログラマ
co_await
co_yield
co_return
co_await
co_yield
co_return
コルーチン
言語仕様
コルーチン
言語仕様
7
C++23, C++26, or someday
並行タスク
ライブラリ
ジェネレータ,
etc.
非同期I/O
ライブラリ
アプリケーション
プログラマ
Parallel Algorithm
Ranges Library
std::expected
Executors TS
Networking TS
8
C++20コルーチン
新キーワード
  co_await
  co_yield
  co_return
標準ヘッダ<coroutine>
  coroutine_traits<R,Args...>
  coroutine_handle<Promise>
  suspend_never
  suspend_always
  noop_coroutine()
カスタマイズポイント
 Promise type
 Awaitable type
 operator co_await
9
C++20コルーチン
10
C++20コルーチン
11
If you are
12
関数とコルーチン
C++コルーチンは関数を拡張したもの
関数(function)
 呼出(call)により処理開始/呼出元へ復帰(return)
コルーチン(coroutine)
 呼出(call)により処理開始/呼出元へ復帰(return)
 途中での中断(suspend)と再開(resume)をサポート
13
関数(サブルーチン)
コルーチン
関数とコルーチン
call return
call return
suspend suspend
resume resume
caller
function
caller
coroutine
14
コルーチンを途中破棄
別スレッドから再開
関数とコルーチン
caller
coroutine
destroy
caller
thread#1
coroutine
caller
thread#2
coroutine_handle移動
15
関数とコルーチン
本体部にコルーチン構文が登場したらコルーチン
関数シグネチャからは区別しない/できない
future<int> c1() {
co_yield 42;
}
future<int> f1() {
return make_future(42);
}
task<void> c2() {
co_await read();
co_await write();
}
task<void> f2() {
return []{
read(); write(); };
}
※上記コード片は説明用のイメージです。
coroutine function
16
Asymmetric vs. Symmetric
非対称(Asymmetric)/対称(Symmetric)コルーチンの
両方をサポートする
非対称コルーチン
 現コルーチンを中断=再開元(resumer)に戻る
 大抵のケースでは非対称コルーチンが使われる
対称コルーチン
 任意のコルーチンへと制御を移す(control transfer)
 相手コルーチンを”知っている”ケースでのみ利用
17
Asymmetric
Symmetric
Asymmetric vs. Symmetric
coroutine#1
coroutine#3
coroutine#2
coroutine#1
coroutine#3
coroutine#2
Bookkeeping code
18
Stackless vs. Stackful
C++コルーチンはスタックレス(Stackless)
 コルーチンでのみ co_await/co_yield を利用可能
 ネストしたラムダ式や呼出先の関数では利用不可
 中断/再開用のコールスタック保持不要のため軽量
【参考:スタックフル(Stackful)コルーチン】
任意のタイミングでコルーチン中断/再開が可能
Go言語のgoroutineや協調的ファイバ(Fiber)など
中断/再開用のコールスタックを保持するため高コスト
19
Stackless vs. Stackful
void f() {
// suspend
}
task<void> g()
// suspend
f();
}
コルーチン g
フレーム
void f() {
// suspend
}
task<void> g()
// suspend
f();
}
関数 f
フレーム
コルーチン g
フレーム
Stackless
(C++コルーチン)
Stackful
20
C++20コルーチン (再掲)
新キーワード
  co_await
  co_yield
  co_return
標準ヘッダ<coroutine>
  coroutine_traits<R,Args...>
  coroutine_handle<Promise>
  suspend_never
  suspend_always
  noop_coroutine()
カスタマイズポイント
 Promise type
 Awaitable type
 operator co_await
21
C++コルーチンの実例
〜 アプリケーションプログラマ視点 〜
generator iota(int end)
{
for (int n = 0; n < end; ++n)
co_yield n;
}
int main()
{
auto g = iota(10);
for (auto e : g)
std::cout << e << " ";
}
$ clang++ src.cpp -std=c++2a
$ ./a.out
0 1 2 3 4 5 6 7 8 9
22
C++コルーチンの実例
〜 ライブラリプログラマ視点 〜
https://wandbox.org/permlink/IpSC8my6j0A1gT0I
struct generator {
struct promise_type {
int value_;
auto get_return_object()
{ return generator{*this}; }
auto initial_suspend()
{ return std::suspend_always{}; }
auto final_suspend()
{ return std::suspend_always{}; }
auto yield_value(int v)
{
value_ = v;
return std::suspend_always{};
}
void return_void() {}
void unhandled_exception()
{ throw; }
};
using coro_handle =
std::coroutine_handle<promise_type>;
struct iterator {
coro_handle coro_;
bool done_;
iterator& operator++()
{
coro_.resume();
done_ = coro_.done();
return *this;
}
bool operator!=(const iterator& rhs) const
{ return done_ != rhs.done_; }
int operator*() const
{ return coro_.promise().value_; }
};
// (cont.)
// (cont.)
~generator()
{
if (coro_)
coro_.destroy();
}
generator(generator const&) = delete;
generator(generator&& rhs)
: coro_{std::exchange(rhs.coro_, nullptr)}
{}
iterator begin()
{
coro_.resume();
return {coro_, coro_.done()};
}
iterator end()
{ return {{}, true}; }
private:
explicit generator(promise_type& p)
: coro_{coro_handle::from_promise(p)}
{}
coro_handle coro_;
};
23
C++コルーチン At-a-Glance
generator iota(int end) {
for(int n=0; n<end; ++n)
co_yield n;
}
coroutine_handle
引数, ローカル変数
再開位置情報
Promise object
Promise type
Return object
Return type
取得
コルーチン開始時に
オブジェクト生成
Coroutine state
中断時の
動作記述
Awaiter object
Awaitable type
コルーチン
中断処理
コルーチン開始時に
動的メモリ確保
型を導出
コルーチン
再開要求
24
コルーチンハンドル
std::coroutine_handle<Promise>
コルーチン再開用のハンドル型
 Promise object経由でハンドルを取得する
 コルーチンの実行に対してハンドルが1:1対応
co_await式
co_yield式
コルーチン コルーチン
ハンドル
中断(suspend)
再開(resume)
取得
from_promise
呼出(call)
25
Promise
コルーチン動作仕様を記述するユーザ定義クラス
 Promise typeはコルーチン戻り値型から導出
 Promise objectはコルーチン実行と1:1対応
 動作のカスタマイズポイントを規定
(constructor)
get_return_object
yield_value
await_transform
unhandled_exception
operator new/delete
get_return_object_on_allocation_failure
initial_suspend
final_suspend
return_value
return_void
26
Awaitable
中断/再開の動作仕様を記述するユーザ定義クラス
 コルーチン本体のco_await/co_yield動作を制御
 コルーチン開始直後/終了直前の動作を制御
 動作のカスタマイズポイントを規定
await_ready
await_suspend
await_resume Trivial Awaitable
std::always_suspend
std::never_suspend
<coroutine>提供クラス
27
その他
std::coroutine_traitsトレイツ特殊化
コルーチン引数とPromise typeコンストラクタ
co_yield式とyield_value
co_return式とreturn_value/return_void
co_await演算子オーバーロード
unhandled_exceptionと例外処理
型消去(Type Erasure)されたstd::coroutine_handle<>
std::coroutine_handleとvoidポインタ相互運用
ヒープメモリ確保省略最適化(“Halo”)
...
28
C++20コルーチン対応状況
コンパイラサポート状況
 Clang, MSVC :部分的にサポート
 GCC, etc. :未対応
対応ライブラリ
 CppCoro - A coroutine library for C++
  https://github.com/lewissbaker/cppcoro
 Boost.ASIO [Experimental]
  https://github.com/boostorg/asio
 Facebook Folly [Experimental]
  https://github.com/facebook/folly
29
まとめ
C++20コルーチンは
 処理の中断/再開をサポートする関数 
 軽量なスタックレスコルーチン
 ライブラリ実装用の低レベル部品のみ提供
 多数のカスタマイズポイントを規定
C++20以後のコルーチン・ライブラリ発展に期待
君だけの
最強ライブラリを
作れるぞ!
30
[おまけ] More information
Working Draft, Standard for Programming Language C++
 http://eel.is/c++draft/
Halo: coroutine Heap Allocation eLision Optimization
 https://wg21.link/p0981r0
Impact of coroutines on current and upcoming library facilities
 https://wg21.link/p0975r0
Coroutine Theory
 https://lewissbaker.github.io/2017/09/25/coroutine-theory
How C++ coroutines work
 https://kirit.com/How%20C%2B%2B%20coroutines%20work
luncliff/coroutine
 https://luncliff.github.io/coroutine/Home/
C++コルーチン拡張メモ
 https://qiita.com/yohhoy/items/aeb3c01d02d0f640c067
31
[おまけ] Stackless vs. Stackful
Stackful Coroutines(Fiber)
 fiber_context - fibers without scheduler [Oliver K., Nat G.]
  https://wg21.link/p0876r8
Fibers under the magnifying glass [Gor N.]
 https://wg21.link/p1364r0
Response to “Fibers under the magnifying glass” [Nat G., Oliver K.]
 https://wg21.link/p0866r0
Response to response to “Fibers under the magnifying glass” [Gor N.]
 https://wg21.link/p1520r0
Gorさん = C++20に統合されたCoroutines TS提案者
Oliverさん = Boost.Coroutine, Coroutine2, Fiber, Contextライブラリ作者
1 of 31

Recommended

コルーチンでC++でも楽々ゲーム作成! by
コルーチンでC++でも楽々ゲーム作成!コルーチンでC++でも楽々ゲーム作成!
コルーチンでC++でも楽々ゲーム作成!amusementcreators
7.5K views15 slides
ネットワーク ゲームにおけるTCPとUDPの使い分け by
ネットワーク ゲームにおけるTCPとUDPの使い分けネットワーク ゲームにおけるTCPとUDPの使い分け
ネットワーク ゲームにおけるTCPとUDPの使い分けモノビット エンジン
61.4K views63 slides
目grep入門 +解説 by
目grep入門 +解説目grep入門 +解説
目grep入門 +解説murachue
89.4K views83 slides
すごい constexpr たのしくレイトレ! by
すごい constexpr たのしくレイトレ!すごい constexpr たのしくレイトレ!
すごい constexpr たのしくレイトレ!Genya Murakami
25.6K views206 slides
組み込み関数(intrinsic)によるSIMD入門 by
組み込み関数(intrinsic)によるSIMD入門組み込み関数(intrinsic)によるSIMD入門
組み込み関数(intrinsic)によるSIMD入門Norishige Fukushima
47.6K views122 slides
ELFの動的リンク by
ELFの動的リンクELFの動的リンク
ELFの動的リンク7shi
18K views52 slides

More Related Content

What's hot

プログラムを高速化する話 by
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話京大 マイコンクラブ
242.4K views120 slides
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計 by
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計UnityTechnologiesJapan002
21.6K views84 slides
オブジェクト指向できていますか? by
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?Moriharu Ohzu
237.5K views129 slides
Glibc malloc internal by
Glibc malloc internalGlibc malloc internal
Glibc malloc internalMotohiro KOSAKI
62.1K views86 slides
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する by
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するYoshifumi Kawai
74.7K views94 slides
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法 by
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法MITSUNARI Shigeo
4K views69 slides

What's hot(20)

【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計 by UnityTechnologiesJapan002
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
【Unite 2018 Tokyo】60fpsのその先へ!スマホの物量限界に挑んだSTG「アカとブルー」の開発設計
オブジェクト指向できていますか? by Moriharu Ohzu
オブジェクト指向できていますか?オブジェクト指向できていますか?
オブジェクト指向できていますか?
Moriharu Ohzu237.5K views
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する by Yoshifumi Kawai
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭するCEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
CEDEC 2018 最速のC#の書き方 - C#大統一理論へ向けて性能的課題を払拭する
Yoshifumi Kawai74.7K views
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法 by MITSUNARI Shigeo
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
深層学習フレームワークにおけるIntel CPU/富岳向け最適化法
MITSUNARI Shigeo4K views
いまさら聞けないarmを使ったNEONの基礎と活用事例 by Fixstars Corporation
いまさら聞けないarmを使ったNEONの基礎と活用事例いまさら聞けないarmを使ったNEONの基礎と活用事例
いまさら聞けないarmを使ったNEONの基礎と活用事例
ARM CPUにおけるSIMDを用いた高速計算入門 by Fixstars Corporation
ARM CPUにおけるSIMDを用いた高速計算入門ARM CPUにおけるSIMDを用いた高速計算入門
ARM CPUにおけるSIMDを用いた高速計算入門
C++のビルド高速化について by AimingStudy
C++のビルド高速化についてC++のビルド高速化について
C++のビルド高速化について
AimingStudy6.7K views
Constexpr 中3女子テクニック by Genya Murakami
Constexpr 中3女子テクニックConstexpr 中3女子テクニック
Constexpr 中3女子テクニック
Genya Murakami33K views
きつねさんでもわかるLlvm読書会 第2回 by Tomoya Kawanishi
きつねさんでもわかるLlvm読書会 第2回きつねさんでもわかるLlvm読書会 第2回
きつねさんでもわかるLlvm読書会 第2回
Tomoya Kawanishi9.7K views
async/await のしくみ by 信之 岩永
async/await のしくみasync/await のしくみ
async/await のしくみ
信之 岩永19.8K views
不遇の標準ライブラリ - valarray by Ryosuke839
不遇の標準ライブラリ - valarray不遇の標準ライブラリ - valarray
不遇の標準ライブラリ - valarray
Ryosuke8397.4K views
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方 by Yoshifumi Kawai
Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方Observable Everywhere  - Rxの原則とUniRxにみるデータソースの見つけ方
Observable Everywhere - Rxの原則とUniRxにみるデータソースの見つけ方
Yoshifumi Kawai75.1K views
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説 by Takateru Yamagishi
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
CUDAのアセンブリ言語基礎のまとめ PTXとSASSの概説
Takateru Yamagishi2.3K views
Deep Dive async/await in Unity with UniTask(UniRx.Async) by Yoshifumi Kawai
Deep Dive async/await in Unity with UniTask(UniRx.Async)Deep Dive async/await in Unity with UniTask(UniRx.Async)
Deep Dive async/await in Unity with UniTask(UniRx.Async)
Yoshifumi Kawai105.7K views
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう by Unity Technologies Japan K.K.
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
【Unite Tokyo 2018】さては非同期だなオメー!async/await完全に理解しよう
3D描画基礎知識 by AimingStudy
3D描画基礎知識3D描画基礎知識
3D描画基礎知識
AimingStudy19.3K views

Similar to 20分くらいでわかった気分になれるC++20コルーチン

C++11 by
C++11C++11
C++11京大 マイコンクラブ
2.6K views52 slides
競技プログラミングのためのC++入門 by
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門natrium11321
32.9K views63 slides
Boost.Coroutine by
Boost.CoroutineBoost.Coroutine
Boost.Coroutinemelpon
23.8K views44 slides
C++ tips4 cv修飾編 by
C++ tips4 cv修飾編C++ tips4 cv修飾編
C++ tips4 cv修飾編道化師 堂華
4K views48 slides
GoらしいAPIを求める旅路 (Go Conference 2018 Spring) by
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)lestrrat
21K views77 slides
C#6.0の新機能紹介 by
C#6.0の新機能紹介C#6.0の新機能紹介
C#6.0の新機能紹介Kazunori Hamamoto
3.4K views32 slides

Similar to 20分くらいでわかった気分になれるC++20コルーチン(20)

競技プログラミングのためのC++入門 by natrium11321
競技プログラミングのためのC++入門競技プログラミングのためのC++入門
競技プログラミングのためのC++入門
natrium11321 32.9K views
Boost.Coroutine by melpon
Boost.CoroutineBoost.Coroutine
Boost.Coroutine
melpon23.8K views
GoらしいAPIを求める旅路 (Go Conference 2018 Spring) by lestrrat
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
GoらしいAPIを求める旅路 (Go Conference 2018 Spring)
lestrrat21K views
C++コンパイラ GCCとClangからのメッセージをお読みください by digitalghost
C++コンパイラ GCCとClangからのメッセージをお読みくださいC++コンパイラ GCCとClangからのメッセージをお読みください
C++コンパイラ GCCとClangからのメッセージをお読みください
digitalghost4.7K views
Brief introduction of Boost.ICL by yak1ex
Brief introduction of Boost.ICLBrief introduction of Boost.ICL
Brief introduction of Boost.ICL
yak1ex692 views
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目 by hecomi
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
Node.js × 音声認識 - 東京Node学園 2012 LT枠 6番目
hecomi 10.3K views
Scalaの限定継続の応用と基本 by Kota Mizushima
Scalaの限定継続の応用と基本Scalaの限定継続の応用と基本
Scalaの限定継続の応用と基本
Kota Mizushima1.6K views
Scalaの限定継続の応用と基本(改訂版) by Kota Mizushima
Scalaの限定継続の応用と基本(改訂版)Scalaの限定継続の応用と基本(改訂版)
Scalaの限定継続の応用と基本(改訂版)
Kota Mizushima885 views
組み込みでこそC++を使う10の理由 by kikairoya
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
kikairoya27K views
超LINQ入門 by yone64
超LINQ入門超LINQ入門
超LINQ入門
yone648K views
UniRx - Reactive Extensions for Unity by Yoshifumi Kawai
UniRx - Reactive Extensions for UnityUniRx - Reactive Extensions for Unity
UniRx - Reactive Extensions for Unity
Yoshifumi Kawai68.7K views
Replace Output Iterator and Extend Range JP by Akira Takahashi
Replace Output Iterator and Extend Range JPReplace Output Iterator and Extend Range JP
Replace Output Iterator and Extend Range JP
Akira Takahashi1.6K views
yieldとreturnの話 by bleis tift
yieldとreturnの話yieldとreturnの話
yieldとreturnの話
bleis tift7.4K views
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~ by Unity Technologies Japan K.K.
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
【Unite Tokyo 2018 Training Day】C#JobSystem & ECSでCPUを極限まで使い倒そう ~C# JobSystem 編~
C++0x in programming competition by yak1ex
C++0x in programming competitionC++0x in programming competition
C++0x in programming competition
yak1ex1K views

Recently uploaded

光コラボは契約してはいけない by
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけないTakuya Matsunaga
28 views17 slides
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可 by
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可
パスキーでリードする: NGINXとKeycloakによる効率的な認証・認可Hitachi, Ltd. OSS Solution Center.
10 views22 slides
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向 by
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向
Keycloakの全体像: 基本概念、ユースケース、そして最新の開発動向Hitachi, Ltd. OSS Solution Center.
109 views26 slides
定例会スライド_キャチs 公開用.pdf by
定例会スライド_キャチs 公開用.pdf定例会スライド_キャチs 公開用.pdf
定例会スライド_キャチs 公開用.pdfKeio Robotics Association
146 views64 slides
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PC Cluster Consortium
66 views12 slides
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PC Cluster Consortium
28 views36 slides

Recently uploaded(7)

光コラボは契約してはいけない by Takuya Matsunaga
光コラボは契約してはいけない光コラボは契約してはいけない
光コラボは契約してはいけない
Takuya Matsunaga28 views
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」 by PC Cluster Consortium
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:富士通株式会社 テーマ1「次世代高性能・省電力プロセッサ『FUJITSU-MONAKA』」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」 by PC Cluster Consortium
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」
PCCC23:東京大学情報基盤センター 「Society5.0の実現を目指す『計算・データ・学習』の融合による革新的スーパーコンピューティング」

20分くらいでわかった気分になれるC++20コルーチン