
第八章 计算性能
影响计算性能的重要因子:命令式编程、符号式编程、异步计算、自动并行计算和多GPU计算。
一、命令式和符号式混合编程
之前我们用的全是命令式编程,使用编程语句改变程序状态。
import timeit
def add(a, b):
return a+b
def fancy_func(a, b, c, d):
e = add(a, b)
f = add(c, d)
g = add(e, f)
return g
t1 = timeit.Timer("fancy_func(1, 2, 3, 4)", "from __main__ import fancy_func")
print("time cost %.5f seconds \n" % t1.timeit(number=1000))
# time cost 0.00081 seconds
命令式编程很方便,但是运行速度慢:
- 函数add被多次重复调用。python 会逐一执行三条add命令。
- 需要保存变量e和f的值,直到整体执行结束。
符号式编程通常在计算流程完全定义好后才被执行。多个深度学习框架,如Theano和TensorFlow,都使用了符号式编程。
符号式编程的程序需要3个步骤:
1、定义计算流程;
2、把计算机流程编译成可执行的程序;
3、给定输入,调用编译好的程序执行。
下面使用符号式编程重新实现上面的命令式编程代码。
import timeit
def add_str():
return '''
def ad

本文探讨了命令式编程和符号式编程在计算性能上的差异,指出符号式编程通过编译优化能提高效率。此外,介绍了MXNet的异步计算如何提升性能,以及自动并行计算和多GPU计算在提升计算性能上的应用。最后提到了Gluon的HybridSequential类在混合式编程中的作用,允许在保持灵活性的同时优化模型计算。
最低0.47元/天 解锁文章
1542

被折叠的 条评论
为什么被折叠?



