Я хочу запустить следующий скрипт:
#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
Я попробовал это на своем Macbook Air 2011 с OSX 10.9.4 и на 16-ядерной облачной виртуальной машине под управлением Ubuntu 12.0.4. По какой-то причине это занимает примерно 4 секунды на моем Macbook Air и около 15 секунд на моей виртуальной машине. Я проверил процессы, используя top
, и оказалось, что на моей виртуальной машине Ubuntu он не использует параллелизм, а на моем Macbook Air — использует.
Ниже приведен результат моего топа на MBA:
А вот на моей виртуальной машине Ubuntu:
Есть идеи, почему мой Macbook Air намного быстрее для SVD? В частности, при сравнении numpy облачная виртуальная машина была НАМНОГО быстрее и, похоже, использовала параллелизм (не делала 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
np.show_config()
? - person ali_m   schedule 17.08.2014