1. 程式人生 > 實用技巧 >使用GPU計算時,單精度float32型別和半精度float16型別運算效率的區別

使用GPU計算時,單精度float32型別和半精度float16型別運算效率的區別

最近在看資料時發現寫著使用float16 半精度型別的資料計算速度要比float32的單精度型別資料計算要快,因為以前沒有考慮過資料型別對計算速度的影響,只知道這個會影響最終的計算結果精度。於是,好奇的使用TensorFlow寫了些程式碼,試試看看是否有很大的區別,具體程式碼如下:

import tensorflow as tf
import time

x = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float32))
y = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float32))
#x = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float16))
#y = tf.Variable(tf.random.normal([64,3000,3000], dtype=tf.float16))

init = tf.global_variables_initializer()

with tf.Session() as sess:
    sess.run(init)

    a = time.time()
    for _ in range(500):
        sess.run(tf.matmul(x,y))
    b = time.time()

    
print(b-a)

上述程式碼,分別使用單精度或半精度型別的x,y來進行計算。

分別使用RTX titan 和 RTX 2060super 兩個型別的顯示卡分別測試:

RTX titan 顯示卡環境下:

Float32 , 單精度資料型別的x, y:

RTX titan 顯示卡環境下:

Float16 , 半精度資料型別的x, y:

-------------------------------------------------------------------------