12.1.1 符号式编程

如果在一个GPU(甚至多个GPU)上执行这些命令,那么Python解释器产生的开销可能会非常大
这是因为每个 add 函数调用都是独立发生的,Python 不会知道这三个 add 调用之间有什么联系,也不会合并它们成一个更高效的计算流程;当你把 Python 的这些小操作映射到 GPU 上执行时,每次函数调用都要把数据从 CPU 内存传送到 GPU 显存,启动一次内核,等待结果返回;这些过程都需要上下文切换和同步等待 ,带来很大的通信和调度开销

符号式编程比如TensorFlow 1.x

import tensorflow as tf

a = tf.constant(2)
b = tf.constant(3)
c = a + b

with tf.Session() as sess:
    print(sess.run(c))  # 前面都不会执行,这里才真正执行

这个样子相当于就知道了整个计算图,然后对于fancy_func(a,b,c,d)这个函数,实际上就已经知道了最后的输出是a+b+c+d,所以根本就不用传进去,直接优化成结果,输出10即可

posted @ 2025-05-17 18:13  最爱丁珰  阅读(18)  评论(0)    收藏  举报