170 похожих чатов

Ребят, очень нужна ваша точка зрения по одному заданию У меня

задание "Эффективно использовать векторные расширение (SIMD) микропроцессоров на примере алгоритма метода сопряженных градиентов"
Для решение задачи я поступил таким образом№
Нашел готовый код алгоритма метода сопряженных градиентов написанный на numpy (я уточнил что numpy по умолчанию использует векторные расширение SEE). То есть у меня есть уже векторизованный код, теперь осталось переписать данный код на чистом питоне, чтобы получить разницу в производительности.
Я думаю сделать так: Переписать только те участки кода , где используется функция numpy.dot на чистом питоне , чтобы замедлить выполнения кода.
Как думаете я правильно делаю? МОжете пожалуйста дать советы или сделать замечания по моим ошибкам (Код не я написал, скопипастил с гит)
import numpy as np
import time
def conjGrad(A,x,b,tol,N):
r = b - A.dot(x)
p = r.copy()
for i in range(N):
Ap = A.dot(p)
alpha = np.dot(p,r)/np.dot(p,Ap)
x = x + alpha*p
r = b - A.dot(x)
if np.sqrt(np.sum((r**2))) <tol:
print('Itr:', i)
break
else:
beta = -np.dot(r,Ap)/np.dot(p,Ap)
p = r + beta*p
return x
n = 1000
P = np.random.normal(size=[n, n])
A = np.dot(P.T, P)
b = np.ones(n)
tol=1e-5
N=1000
x =np.ones(n)
print('start')
t1=time.time()
x=conjGrad(A,x,b,tol,N)
t2=time.time()
print('время выполнения',t2-t1,'секунд')
print(' конечное значение х равно',x)
print(' количество элементов в х равно',len(x))
print('размерность массива',np.shape(x))

3 ответов

13 просмотров

Вижу слово simd и спрашиваю: а при чем тут питон?

name-s Автор вопроса
name s
numpy использует вроде SIMD

Она вроде процессорная

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта