我有一个矩阵乘法测试来做[MxN] * [Nx1]
乘法。它在Windows中使用Numpy(和MKL):
import timeit
import numpy as np
from numpy.random import random_sample
NUMBER_OF_SAMPLES = 1000000
NUMBER_OF_DIMENSIONS = 128
dataset = random_sample((NUMBER_OF_SAMPLES, NUMBER_OF_DIMENSIONS)).astype(np.float32)
feature = random_sample((NUMBER_OF_DIMENSIONS, 1)).astype(np.float32)
print("Finished Generating the Data...")
numbers = 1000
total_time = timeit.timeit('np.dot(dataset, feature)', globals=globals(), number=numbers)
print("Average Time %.3f" % float(total_time / numbers))
我在Core i7 7700 CPU(4核/ 8线程)上对其进行了基准测试,并再次在Core i7 7820X(8核/ 8线程)上进行了基准测试,同时禁用和启用了HyperThreading(禁用Hyperthreading并没有真正改变基准) :
Core i7 7700 (4 Cores) || Data Count 1.000.000 || 128 Dimensional || Time 0.021 s
Core i7 7820X (8 Cores) || Data Count 1.000.000 || 128 Dimensional || Time 0.019 s
我希望增加CPU数量将使时间减少一半,但几乎什么也没做。
有什么办法可以提高这个速度?谢谢。