日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

(一)tensorflow-gpu2.0学习笔记之开篇(cpu和gpu计算速度比较)

發布時間:2023/12/13 综合教程 27 生活家
生活随笔 收集整理的這篇文章主要介紹了 (一)tensorflow-gpu2.0学习笔记之开篇(cpu和gpu计算速度比较) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

摘要:

1.以動態圖形式計算一個簡單的加法

2.cpu和gpu計算力比較(包括如何指定cpu和gpu)

3.關于gpu版本的tensorflow安裝問題,可以參考另一篇博文:https://www.cnblogs.com/liuhuacai/p/11684666.html

正文:

1.在tensorflow中計算3.+4.

##1.創建輸入張量
a = tf.constant(2.)
b = tf.constant(4.)
##2.計算結果
print('a+b=',a+b)

輸出:a+b= tf.Tensor(7.0, shape=(), dtype=float32)

總結:20版本在加法實現過程中簡單了不少,所見即所得。(1.x的實現過程相對復雜)據說動態的實現也是后端轉化成靜態圖實現的。

2.cpu和gpu計算力比較

說明:通過計算不同大小的矩陣乘法,獲得計算時間。

  1.指定cpu或gpu通過 with tf.device('/cpu:0'):或 with tf.device('/gpu:0'):指定,在需要加速的操作前添加即可(此處生成隨機     數和矩陣乘法都加速)

  2.統計計算時間的函數timeit.timeit需要導入import timeit【timeit.timeit(需計時的函數或語句,計算次數)】

  3.計算量的大小與cpu和gpu計算時間的關系,計算量通過改變矩陣大小實現

import tensorflow as tf
import timeit
以矩陣A[10,n]和矩陣B[n,10]的乘法運算(分別在cpu和gpu上運行)來測試,
'''
with tf.device('/cpu:0'):                    ##指定操作用cpu計算
    cpu_a = tf.random.normal([10,n])        ##生成符合高斯分布的隨機數矩陣,通過改變n大小,增減計算量
    cpu_b = tf.random.normal([n,10])
print(cpu_a.device,cpu_b.device)
with tf.device('/gpu:0'):
    gpu_a = tf.random.normal([100n])
    gpu_b = tf.random.normal([n,10])
print(gpu_a.device,gpu_b.device)
def cpu_run():
    with tf.device('/cpu:0'):               ##矩陣乘法,此操作采用cpu計算
        c = tf.matmul(cpu_a,cpu_b)
    return c
def gpu_run():
    with tf.device('/gpu:0'):              ##矩陣乘法,此操作采用gpu計算
        c = tf.matmul(gpu_a,gpu_b)
    return c
##第一次計算需要熱身,避免將初始化時間計算在內
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)
print('warmup:',cpu_time,gpu_time)
##正式計算10次,取平均值
cpu_time = timeit.timeit(cpu_run,number=10)
gpu_time = timeit.timeit(gpu_run,number=10)
print('run_time:',cpu_time,gpu_time)

  通過改變矩陣大小,增加矩陣乘法的計算量:計算結果如下

  結論:1.在計算量較小的情況下,cpu的計算速度比gpu計算速度快,但是都是微量級別的差異

     2.隨著計算量的增加,cpu的計算時間逐步增加,而gpu的計算時間相對平緩,在計算量達到一定程度之后,gpu的優勢就出來了。

  實現過程的完整代碼:

  

import tensorflow as tf
import timeit
import matplotlib.pyplot as plt
'''
以矩陣A[10,n]和矩陣B[n,10]的乘法運算(分別在cpu和gpu上運行)來測試,
'''
def cpu_gpu_compare(n):
    with tf.device('/cpu:0'):                    ##指定操作用cpu計算
        cpu_a = tf.random.normal([10,n])        ##生成符合高斯分布的隨機數矩陣,通過改變n大小,增減計算量
        cpu_b = tf.random.normal([n,10])
    print(cpu_a.device,cpu_b.device)
    with tf.device('/gpu:0'):
        gpu_a = tf.random.normal([10,n])
        gpu_b = tf.random.normal([n,10])
    print(gpu_a.device,gpu_b.device)
    def cpu_run():
        with tf.device('/cpu:0'):               ##矩陣乘法,此操作采用cpu計算
            c = tf.matmul(cpu_a,cpu_b)
        return c
    def gpu_run():
        with tf.device('/gpu:0'):              ##矩陣乘法,此操作采用gpu計算
            c = tf.matmul(gpu_a,gpu_b)
        return c
    ##第一次計算需要熱身,避免將初始化時間計算在內
    cpu_time = timeit.timeit(cpu_run,number=10)
    gpu_time = timeit.timeit(gpu_run,number=10)
    print('warmup:',cpu_time,gpu_time)
    ##正式計算10次,取平均值
    cpu_time = timeit.timeit(cpu_run,number=10)
    gpu_time = timeit.timeit(gpu_run,number=10)
    print('run_time:',cpu_time,gpu_time)
    return cpu_time,gpu_time
n_list1 = range(1,2000,5)
n_list2 = range(2001,10000,100)
n_list = list(n_list1)+list(n_list2)
time_cpu =[]
time_gpu =[]
for n in n_list:
    t=cpu_gpu_compare(n)
    time_cpu.append(t[0])
    time_gpu.append(t[1])
plt.plot(n_list,time_cpu,color = 'red',label='cpu')
plt.plot(n_list,time_gpu,color='green',linewidth=1.0,linestyle='--',label='gpu')
plt.ylabel('耗時',fontproperties = 'SimHei',fontsize = 20)
plt.xlabel('計算量',fontproperties = 'SimHei',fontsize = 20)
plt.title('cpu和gpu計算力比較',fontproperties = 'SimHei',fontsize = 30)
plt.legend(loc='upper right')
plt.show()

總結

以上是生活随笔為你收集整理的(一)tensorflow-gpu2.0学习笔记之开篇(cpu和gpu计算速度比较)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。