2017-01-23 3 views
2

Поскольку многие алгоритмы машинного обучения основаны на умножении матриц (или, по крайней мере, могут быть реализованы с использованием умножения матрицы), чтобы проверить мой GPU, я планирую создавать матрицы a, b, умножать их и записывать время, которое требуется для завершения вычислений.Тестирование GPU с умножением матрицы тензорного потока

Вот код, который будет генерировать две матрицы размерности 300000,20000 и умножать:

import tensorflow as tf 
import numpy as np 

init = tf.global_variables_initializer() 
sess = tf.Session() 
sess.run(init) 


#a = np.array([[1, 2, 3], [4, 5, 6]]) 
#b = np.array([1, 2, 3]) 

a = np.random.rand(300000,20000) 
b = np.random.rand(300000,20000) 

println("Init complete"); 

result = tf.mul(a , b) 
v = sess.run(result) 

print(v) 

Является ли это достаточный тест для сравнения производительности графического процессора? Какие еще факторы следует учитывать?

ответ

7

Вот example контрольной точки matmul, которая позволяет избежать общих ошибок и соответствует официальной отметке 11 TFLOP на Titan X Pascal.

import os 
import sys 
os.environ["CUDA_VISIBLE_DEVICES"]="1" 
import tensorflow as tf 
import time 

n = 8192 
dtype = tf.float32 
with tf.device("/gpu:0"): 
    matrix1 = tf.Variable(tf.ones((n, n), dtype=dtype)) 
    matrix2 = tf.Variable(tf.ones((n, n), dtype=dtype)) 
    product = tf.matmul(matrix1, matrix2) 


# avoid optimizing away redundant nodes 
config = tf.ConfigProto(graph_options=tf.GraphOptions(optimizer_options=tf.OptimizerOptions(opt_level=tf.OptimizerOptions.L0))) 
sess = tf.Session(config=config) 

sess.run(tf.global_variables_initializer()) 
iters = 10 

# pre-warming 
sess.run(product.op) 

start = time.time() 
for i in range(iters): 
    sess.run(product.op) 
end = time.time() 
ops = n**3 + (n-1)*n**2 # n^2*(n-1) additions, n^3 multiplications 
elapsed = (end - start) 
rate = iters*ops/elapsed/10**9 
print('\n %d x %d matmul took: %.2f sec, %.2f G ops/sec' % (n, n, 
                  elapsed/iters, 
                  rate,)) 
+0

классный, я думаю, должен опубликовать свой код в вашем ответе в дополнение к ссылке на код за пределами площадки. –

+0

GPU не был обнаружен, если не было указано «os.environ [« CUDA_VISIBLE_DEVICES »] =« 1 »'. Работает с Windows 10, tensorflow-gpu (1.4), cuda_8.0.61_win10 и cudnn-8.0-windows10-x64-v6.0. – BSalita

+0

Ошибка была «Невозможно назначить устройство для операции« Variable_1 »: операция была явно назначена/device: GPU: 0, но доступными устройствами являются [/ job: localhost/replica: 0/task: 0/device: CPU: 0]. Убедитесь, что спецификация устройства относится к допустимому устройству. ' – BSalita

Смежные вопросы