20. 擬似コードで⽐比較する
define-and-run
# 構築
x = Variable(‘x’)
y = Variable(‘y’)
z = x + 2 * y
# 評価
for xi, yi in data:
eval(z, x=xi, y=yi))
define-by-run
# 構築と評価が同時
for xi, yi in data:
x = Variable(xi)
y = Variable(yi)
z = x + 2 * y
20
データを⾒見見ながら
違う処理理をしてもよい
21. 計算グラフで⽐比較する
21
s = 0
for x in [1, 2, 3]:
s += x
s
x
+
x
+
x
+ ss
x
+ s
define-and-runで
ループを作る
define-by-runでは
すべて展開される
33. CuPyとNumPyの⽐比較
import numpy
x = numpy.array([1,2,3], numpy.float32)
y = x * x
s = numpy.sum(y)
print(s)
import cupy
x = cupy.array([1,2,3], cupy.float32)
y = x * x
s = cupy.sum(y)
print(s)
33
34. CuPyはどのくらい早いの?
l 状況しだいですが、最⼤大数⼗十倍程度度速くなります
def test(xp):
a = xp.arange(1000000).reshape(1000, -1)
return a.T * 2
test(numpy)
t1 = datetime.datetime.now()
for i in range(1000):
test(numpy)
t2 = datetime.datetime.now()
print(t2 -t1)
test(cupy)
t1 = datetime.datetime.now()
for i in range(1000):
test(cupy)
t2 = datetime.datetime.now()
print(t2 -t1)
34
時間
[ms]
倍率率率
NumPy 2929 1.0
CuPy 585 5.0
CuPy +
Memory Pool
123 23.8
Intel Core i7-4790 @3.60GHz,
32GB, GeForce GTX 970