SlideShare ist ein Scribd-Unternehmen logo
1 von 76
Downloaden Sie, um offline zu lesen
1 KYOTO UNIVERSITY
KYOTO UNIVERSITY
キャッシュオブリビアスアルゴリズム
Ryoma Sato
2 KYOTO UNIVERSITY
CO はキャッシュの構造を知らなくてもキャッシュ活用する

キャッシュオブリビアス (Cache Oblivious) アルゴリズムとは、キャッシュの
構造を知らない状態で、キャッシュの恩恵を得るアルゴリズムのこと

好きな理由:

問題設定を聞いたときの、そんなことできるんだ感

パラメータを含まない万能手法が存在するという理論の綺麗さ

解法のアイデアのシンプルさ
Matteo Frigo, Charles E. Leiserson, Harald Prokop, Sridhar Ramachandran. Cache-Oblivious Algorithms. FOCS 1999.
3 KYOTO UNIVERSITY
メモリやディスクへのアクセスは圧倒的に遅い

キャッシュの常識 1:
メモリやディスクへのアクセスはキャッシュへのアクセスよりも圧倒的に遅い

メモリ 1 回アクセスするくらいならキャッシュに 30 回アクセスした方がマシ
多少演算が増えようが 1 回でもメモリアクセスを少なくした方がトク
アクセス時間
SRAM(キャッシュ) 1ns
DRAM(メモリ) 100ns
磁気ディスク(HDD) 10000000ns
4 KYOTO UNIVERSITY
キャッシュにはブロック単位で読み込む

キャッシュの常識 2:
ディスクからの読み込みはブロック単位で行う
この番地にアクセスしたいとき
キャッシュ
ディスク
5 KYOTO UNIVERSITY
キャッシュにはブロック単位で読み込む

キャッシュの常識 2:
ディスクからの読み込みはブロック単位で行う
この番地にアクセスしたいとき
キャッシュ
ディスク
キャッシュ内にデータがなければ
6 KYOTO UNIVERSITY
キャッシュにはブロック単位で読み込む
この番地にアクセスしたいとき
キャッシュ
ディスク
ブロック単位でキャッシュに読み込み

キャッシュの常識 2:
ディスクからの読み込みはブロック単位で行う
7 KYOTO UNIVERSITY
キャッシュにはブロック単位で読み込む
この番地にアクセスしたいとき
キャッシュ
ディスク
ブロック単位でキャッシュに読み込み

キャッシュの常識 2:
ディスクからの読み込みはブロック単位で行う
ブロックのサイズ(ブロックに含まれるデータ数)を B
キャッシュのサイズを M とする
キャッシュ内のブロックの数は M/B 個
8 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
9 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
MISS MISS MISS
B = 3 要素ずつキャッシュに
読み込まれることに注意
10 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT HIT
MISS
11 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT HIT
MISS
12 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
MISS
13 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
14 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
15 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
MISS
キャッシュがいっぱいに
なったので排出
16 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
17 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
18 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT MISS
HIT
19 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
20 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
21 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
22 KYOTO UNIVERSITY
行列積の例

例:9x9 行列積(B = 3, M = 27)
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
MISS
HIT
右側の行列がめちゃくちゃ MISS する
解決策:
1. ループの順序交換(今回は省略)
2. 行列のブロック化
23 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
24 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
MISS
MISS
MISS
25 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
MISS
HIT
HIT
26 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
MISS
HIT
HIT
27 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
28 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
29 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
30 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
31 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
32 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
33 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
MISS
MISS HIT
34 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
35 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT HIT
36 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT
HIT
37 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT
HIT
38 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT
HIT
39 KYOTO UNIVERSITY
行列をブロックに区切り部分行列の積を計算する

例:9x9 行列積(B = 3, M = 27) with ブロック化
×
=
キャッシュ上のデータ
ディスク上のデータ
アクセスしたデータ
HIT
HIT
HIT
小分けにしたことで作業中のデータが全てキャッシュに
収まるので、MISS がほぼない!
40 KYOTO UNIVERSITY
ブロックのサイズを決めるのは難しい

問題点:行列ブロックのサイズをどう決めればよい?
ある種のパラメータチューニング問題

理想的にはブロックの一辺は とするのが良い
(作業サイズである がキャッシュサイズ M となるように)

理想のブロックサイズは M に依存するが M はコンピュータに依存する

ライブラリの作者は R をハードコードすると、移植性が下がる

R をプログラムの入力として受け取るようにすると、ユーザーは自分の
コンピュータのキャッシュサイズを調べて使わなければいけなくなる……
41 KYOTO UNIVERSITY
階層構造のために、ブロックのサイズ決めはより困難に

より悪いお知らせ:キャッシュは階層構造をなしている

M と B はどこに合わせればよい?

どこに合わせるのが理想かは先験的には
分からない

どこがボトルネックになっているかは
ユーザーがチューニングで発見するしかない

上の層がボトルネックなら領域は小さく
下の層がボトルネックなら領域は大きく取るべき
クラウド(インターネット)
ディスク
メインメモリ
L3
L2
L1
42 KYOTO UNIVERSITY
キャッシュオブリビアスアルゴリズム
43 KYOTO UNIVERSITY
CO はキャッシュの構造を知らなくてもキャッシュ活用する

Cache-Conscious: キャッシュの存在を意識して設計する
Cache-Aware(普通)
キャッシュの構造を知った上で設計する
先程のブロックサイズ R を M に合わせる例
↕
Cache-Oblivious(縛りプレイ)
キャッシュの構造を知らずに設計する
知らないなりに頑張る
B, M がどのような値でもいい感じになるように頑張る

Cache-Oblivious アルゴリズムができたら、そもそも B, M を使って
いないので、どんなコンピュータでも、どのキャッシュ階層でも早くなる
このページは https://www.slideshare.net/iwiwi/cacheoblivious-dsirnlp5 の表現をお借りしました。
One Fits All
44 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
45 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
基本アイデアは分割統治法
大抵の cache-oblivious アルゴリズムは分割統治法
46 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
各行列を 2x2 の部分行列に分ける
各部分行列の積が分割統治の部分問題
47 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
それぞれの部分行列の積は再帰的に処理する
つまりさらに 2x2 に区切って、2x2 に区切って、...とする
1x1 の行列積になれば普通に積を計算
48 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
ポイント:どこかの再帰のタイミングで全作業領域がキャッシュに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく
どこかの段階で収まることになる
49 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
ポイント:どこかの再帰のタイミングで全作業領域がキャッシュに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく
どこかの段階で収まることになる
キャッシュの大きさが
このくらいなら
再帰 4 段階目で
50 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
ポイント:どこかの再帰のタイミングで全作業領域がキャッシュに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく
どこかの段階で収まることになる
キャッシュの大きさが
このくらいなら
再帰 2 段階目で
51 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
収まったときの問題サイズ R は を満たす
サイズは半々になっていって、収まる直前では R > √M/3 なので
52 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
収まったときの問題サイズ R は を満たす
→ M を知っていた場合と高々定数倍(1/2 倍)しか変わらない
53 KYOTO UNIVERSITY
キャッシュオブリビアスな行列積の例

例:行列積(行列サイズ n, B, M は不明)
×
=
アルゴリズムは (Cache-conscious っぽくない)普通の分割統治
分割統治で書いたら勝手に cache-oblivious になっている
54 KYOTO UNIVERSITY
分割統治行列積は最適

Cache-Oblivious アルゴリズムのキャッシュミス回数が、
最適な Cache-Aware アルゴリズムのキャッシュミス回数の定数倍で
抑えられるとき、その Cache-Oblivious アルゴリズムは最適という

前述の分割統治行列積は最適

行列積問題はここでゴール
55 KYOTO UNIVERSITY
集合を管理するデータ構造

次はもう少し解決が難しい問題を紹介

問題(集合を管理するデータ構造、あるいは探索木):
入力として整数集合 が与えられます。
前処理にはいくら時間をかけてもよいです。
続いてクエリ が与えられます。
が集合中に含まれているかをできるだけ少ないキャッシュミスで判定し
てください。

つまり、普通に集合を管理するデータ構造を作ってください。

更新は無いのでかなり簡単版
56 KYOTO UNIVERSITY
二分探索は最適ではない

分割統治すれば良い?
→ つまりは二分探索?
→ 実は二分探索は遅い

二分探索のアルゴリズム:
前処理:集合の要素をソートする
クエリ処理:属する可能性のある範囲を半分ずつに絞っていく

候補範囲が B より小さくなったら、あとは全てキャッシュ内で処理できる
→ キャッシュミス回数は Θ(log2 n - log2 B) 回
(大抵 n >> B なのでこれはだいたい log2 n 回)

これは最適ではない
57 KYOTO UNIVERSITY
Cache-Aware な B-tree は log B 倍速い

Cache-Aware なら?

B-tree を使えばよい

B-tree は B 分岐の探索木
ここで B はキャッシュブロックサイズの B

観察 1: 大きさ O(B) の B-tree のノードが O(1) 回のキャッシュミスで読
み込める

観察 2: B-tree の深さは Θ(logB n)

よってキャッシュミス回数は Θ(logB n) = Θ(log n / log B)
→ Θ(log n) より log B 倍速い
58 KYOTO UNIVERSITY
Cache-Oblivious では分岐数の決定が難しい

この問題の難しさ:
分割統治の分岐を B を用いて決定したいが、
Cache-Oblivious 設定では B が利用できない

分岐数 2 にすると最適でなくなってしまう……
59 KYOTO UNIVERSITY
Cache-Oblivious では分岐数の決定が難しい

この問題の難しさ:
分割統治の分岐を B を用いて決定したいが、
Cache-Oblivious 設定では B が利用できない

分岐数 2 にすると最適でなくなってしまう……

もう一つの強力な道具 van Emde Boas 配置の登場
(これも実質分割統治)
60 KYOTO UNIVERSITY
van Emde Boas 配置
(平方分割)
61 KYOTO UNIVERSITY
van Emde Boas 配置

集合を完全二分木で管理する
論理的なデータ構造上の分岐は 2 であることに注意
完全二分木の模式図
この説明は https://www.slideshare.net/iwiwi/cacheoblivious-dsirnlp5 の表現をお借りしました。
62 KYOTO UNIVERSITY
van Emde Boas 配置

完全二分木を高さ半分に分ける
63 KYOTO UNIVERSITY
van Emde Boas 配置

完全二分木を高さ半分に分ける
ここのレベルのノード数は
2log n / 2
= √n 個
64 KYOTO UNIVERSITY
van Emde Boas 配置

完全二分木を高さ半分に分ける
...
サイズ √n
サイズ √n
サイズ √n
65 KYOTO UNIVERSITY
van Emde Boas 配置

それぞれの部分木ごとにディスク上に配置
...
サイズ √n
サイズ √n
サイズ √n
...
ディスク
66 KYOTO UNIVERSITY
van Emde Boas 配置

この分割を再帰的に行う
...
サイズ √n
サイズ √n
...
ディスク
...
...
ごちゃごちゃするので省略
しているが、▲たちも
▲や▲で分割されている
67 KYOTO UNIVERSITY
van Emde Boas 配置

どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
68 KYOTO UNIVERSITY
van Emde Boas 配置

どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
69 KYOTO UNIVERSITY
van Emde Boas 配置

どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
70 KYOTO UNIVERSITY
van Emde Boas 配置

どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
71 KYOTO UNIVERSITY
van Emde Boas 配置

どこかの再帰のタイミングで全部分木がキャッシュブロックに収まる
どこで収まったかはプログラム自身は気づいていないが、とにかく収まる
...
サイズ √n
サイズ √n
...
ディスク
...
...
1 ブロック (B) が
このくらいなら
▲のサイズは
√B 以上 B 以下
高さは Θ(log B)
このノードにアクセスした瞬間▲が
1 miss で全て読み込まれる
72 KYOTO UNIVERSITY
van Emde Boas 配置は最適

●にアクセスするとき、訪れる▲の個数は log n / log B 個
→ キャッシュミスは O(log n / log B) 回 → 最適!
...
ディスク
1 ブロック (B) が
このくらいなら
▲のサイズは
√B 以上 B 以下
高さは Θ(log B)
log
n
log
B
73 KYOTO UNIVERSITY
van Emde Boas はディスクを平方分割して解決

(復習)この問題の難しさ:
分割統治の分岐を B を用いて決定したいが、
Cache-Oblivious 設定では B が利用できない

van Emde Boas 配置では論理的なデータ構造は分岐数 2 を用いる
(これで時間計算量は従来のデータ構造と同じになる)

一方、ディスクの配置の上では √n 分岐を行う
これにより Cache-Oblivious 最適性を達成
なぜ? → log√B n = O(logB n) だから
大胆にサイズ減らすので問題サイズが √B まで小さくなりうるが
log の底にかかる限り問題ない
cf. 行列積のときは半々にしてたので問題サイズは最適の半分以上
74 KYOTO UNIVERSITY

Cache-Oblivious Algorithms. FOCS 1999 (Trans. Alg. 2012).
元論文。行列積・FFT・ソートなどこの時点で既に充実している。

Cache-Oblivious Algorithms. Master Thesis 1999.
考案者の一人 Harald Prokop の修士論文。
より豊富な問題と解説が載っている。

Cache-Oblivious Algorithms and Data Structures. BRICS 2002.
Erik Demaine による Cache-Oblivious の解説。

6.851: Advanced Data Structures
Erik Demaine の大学講義。L07-L09 が Cache-Oblivious について。
http://courses.csail.mit.edu/6.851/spring21/lectures/

アルゴリズムの解析ではマスター定理を多用するので、
馴染みのない人は先に勉強しておくことをおすすめします。
https://en.wikipedia.org/wiki/Master_theorem_(analysis_of_algorithms)
さらに詳しく知りたい人へ
75 KYOTO UNIVERSITY
まとめ
76 KYOTO UNIVERSITY

キャッシュオブリビアス (Cache Oblivious) アルゴリズムとは、キャッシュの
構造を知らない状態で、キャッシュの恩恵を得るアルゴリズムのこと

好きな理由:

問題設定を聞いたときの、そんなことできるんだ感

パラメータを含まない万能手法が存在するという理論の綺麗さ

解法のアイデアのシンプルさ(分割統治で常勝)
CO はキャッシュの構造を知らなくてもキャッシュ活用する
キャッシュ構造を知らなくてもキャッシュは最大限活用できる
Take Home Message

Weitere ähnliche Inhalte

Empfohlen

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by HubspotMarius Sescu
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTExpeed Software
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsPixeldarts
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthThinkNow
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfmarketingartwork
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024Neil Kimberley
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)contently
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024Albert Qian
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsKurio // The Social Media Age(ncy)
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Search Engine Journal
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summarySpeakerHub
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next Tessa Mero
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentLily Ray
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best PracticesVit Horky
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project managementMindGenius
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...RachelPearson36
 

Empfohlen (20)

2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot2024 State of Marketing Report – by Hubspot
2024 State of Marketing Report – by Hubspot
 
Everything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPTEverything You Need To Know About ChatGPT
Everything You Need To Know About ChatGPT
 
Product Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage EngineeringsProduct Design Trends in 2024 | Teenage Engineerings
Product Design Trends in 2024 | Teenage Engineerings
 
How Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental HealthHow Race, Age and Gender Shape Attitudes Towards Mental Health
How Race, Age and Gender Shape Attitudes Towards Mental Health
 
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdfAI Trends in Creative Operations 2024 by Artwork Flow.pdf
AI Trends in Creative Operations 2024 by Artwork Flow.pdf
 
Skeleton Culture Code
Skeleton Culture CodeSkeleton Culture Code
Skeleton Culture Code
 
PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024PEPSICO Presentation to CAGNY Conference Feb 2024
PEPSICO Presentation to CAGNY Conference Feb 2024
 
Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)Content Methodology: A Best Practices Report (Webinar)
Content Methodology: A Best Practices Report (Webinar)
 
How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024How to Prepare For a Successful Job Search for 2024
How to Prepare For a Successful Job Search for 2024
 
Social Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie InsightsSocial Media Marketing Trends 2024 // The Global Indie Insights
Social Media Marketing Trends 2024 // The Global Indie Insights
 
Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024Trends In Paid Search: Navigating The Digital Landscape In 2024
Trends In Paid Search: Navigating The Digital Landscape In 2024
 
5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary5 Public speaking tips from TED - Visualized summary
5 Public speaking tips from TED - Visualized summary
 
ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd ChatGPT and the Future of Work - Clark Boyd
ChatGPT and the Future of Work - Clark Boyd
 
Getting into the tech field. what next
Getting into the tech field. what next Getting into the tech field. what next
Getting into the tech field. what next
 
Google's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search IntentGoogle's Just Not That Into You: Understanding Core Updates & Search Intent
Google's Just Not That Into You: Understanding Core Updates & Search Intent
 
How to have difficult conversations
How to have difficult conversations How to have difficult conversations
How to have difficult conversations
 
Introduction to Data Science
Introduction to Data ScienceIntroduction to Data Science
Introduction to Data Science
 
Time Management & Productivity - Best Practices
Time Management & Productivity -  Best PracticesTime Management & Productivity -  Best Practices
Time Management & Productivity - Best Practices
 
The six step guide to practical project management
The six step guide to practical project managementThe six step guide to practical project management
The six step guide to practical project management
 
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
Beginners Guide to TikTok for Search - Rachel Pearson - We are Tilt __ Bright...
 

キャッシュオブリビアスアルゴリズム