【发布时间】:2025-12-17 03:15:03
【问题描述】:
我想运行以下脚本:
#python imports
import time
#3rd party imports
import numpy as np
import pandas as pd
def pd_svd(pd_dataframe):
np_dataframe = pd_dataframe.values
return np.linalg.svd(pd_dataframe)
if __name__ == '__main__':
li_times = []
for i in range(1, 3):
start = time.time()
pd_dataframe = pd.DataFrame(np.random.random((3000, 252 * i)))
pd_svd(pd_dataframe)
li_times.append(str(time.time() - start))
print li_times
我在装有 OSX 10.9.4 的 Macbook Air 2011 和运行 Ubuntu 12.0.4 的 16 核云 VM 上试用它。出于某种原因,这在我的 Macbook Air 上大约需要 4 秒,在我的 VM 上大约需要 15 秒。我使用top 检查了这些进程,似乎在我的 Ubuntu VM 上,它没有使用并行性,而在我的 Macbook Air 上,它是。
以下是我的 MBA 上顶的结果:
在我的 ubuntu 虚拟机上:
知道为什么我的 Macbook Air 的 SVD 速度要快得多吗?特别是,在进行 numpy 比较时,云 VM 速度要快得多,而且似乎使用了并行性(没有做 top,但速度是原来的几倍)。
编辑:
这是np.show_config() 在云虚拟机上的输出:
blas_info:
libraries = ['blas']
library_dirs = ['/usr/lib']
language = f77
lapack_info:
libraries = ['lapack']
library_dirs = ['/usr/lib']
language = f77
atlas_threads_info:
NOT AVAILABLE
blas_opt_info:
libraries = ['blas']
library_dirs = ['/usr/lib']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
atlas_blas_threads_info:
NOT AVAILABLE
lapack_opt_info:
libraries = ['lapack', 'blas']
library_dirs = ['/usr/lib']
language = f77
define_macros = [('NO_ATLAS_INFO', 1)]
atlas_info:
NOT AVAILABLE
lapack_mkl_info:
NOT AVAILABLE
blas_mkl_info:
NOT AVAILABLE
atlas_blas_info:
NOT AVAILABLE
mkl_info:
NOT AVAILABLE
【问题讨论】:
-
您的云 VM 中的 numpy 版本可能未链接到多线程 BLAS 库。
np.show_config()的输出是什么? -
您好,感谢您的帮助。我更新了。
标签: python numpy virtual-machine linear-algebra blas