Есть ли способ распараллелить функцию scipy.integrate по всему набору значений? ⇐ Python
Есть ли способ распараллелить функцию scipy.integrate по всему набору значений?
Я вычисляю апостериорную вероятность некоторых параметров $\theta$ с помощью функции правдоподобия, которая вычисляется медленно, и мне интересно, есть ли способ ускорить процесс. медленная часть моего кода — это вычисление хи-квадрата, который представляет собой интеграл, который необходимо вычислить для каждой выборки в z_sn
импортировать scipy.constants как cte из scipy.integrate четырехъядерный импорт def luminosity_integrand(z, omgM): Ez = np.sqrt((1 - omgM) + omgM * np.power(1 + z, 3)) возврат 1. / Эз def luminosity_distance(z, h, omgM): интеграл, _ = quad(luminosity_integrand, 0, z, epsrel=1e-8, args=(omgM)) возврат (cte.c/10.**5)/h*(1+z)*целое def distance_modulus(z, h, omgM): возврат 5. * np.log10(luminosity_distance(z, h, omgM)) + 25. защита chisq_sn(h, omgM): m_model = np.array([distance_modulus(z, h, omgM) для z в z_sn]) различия = m_obs-m_model maha_distances = np.dot(np.dot(diffs,inv_cov_plus),diffs) #mahalanobis distance вернуть maha_distances Я использовал понимание списка, но не уверен, что это самый быстрый путь. Я также читал несколько редких комментариев об использовании cython, но никогда его не использовал. Я использую ведущего для расчета задней части, если это имеет значение
Я вычисляю апостериорную вероятность некоторых параметров $\theta$ с помощью функции правдоподобия, которая вычисляется медленно, и мне интересно, есть ли способ ускорить процесс. медленная часть моего кода — это вычисление хи-квадрата, который представляет собой интеграл, который необходимо вычислить для каждой выборки в z_sn
импортировать scipy.constants как cte из scipy.integrate четырехъядерный импорт def luminosity_integrand(z, omgM): Ez = np.sqrt((1 - omgM) + omgM * np.power(1 + z, 3)) возврат 1. / Эз def luminosity_distance(z, h, omgM): интеграл, _ = quad(luminosity_integrand, 0, z, epsrel=1e-8, args=(omgM)) возврат (cte.c/10.**5)/h*(1+z)*целое def distance_modulus(z, h, omgM): возврат 5. * np.log10(luminosity_distance(z, h, omgM)) + 25. защита chisq_sn(h, omgM): m_model = np.array([distance_modulus(z, h, omgM) для z в z_sn]) различия = m_obs-m_model maha_distances = np.dot(np.dot(diffs,inv_cov_plus),diffs) #mahalanobis distance вернуть maha_distances Я использовал понимание списка, но не уверен, что это самый быстрый путь. Я также читал несколько редких комментариев об использовании cython, но никогда его не использовал. Я использую ведущего для расчета задней части, если это имеет значение
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Как векторизовать scipy.integrate.quad для вычисления поэлементного интеграла матрицы
Anonymous » » в форуме Python - 0 Ответы
- 70 Просмотры
-
Последнее сообщение Anonymous
-