-
Data: 2020-02-11 21:21:41
Temat: Re: Jak najszybciej obliczyć wieloskładnikową sumę potęg?
Od: Wojciech Muła <w...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Tuesday, February 11, 2020 at 8:19:59 PM UTC+1, osobliwy nick wrote:
> Ogólnie algorytm szybkiego potęgowania jest mi znany. Chodzi mi natomiast o coś
innego. Ten algorytm trzeba wykonać dla wielu potęg, które wchodzą w skład sumy.
Jeśli wykonamy po kolei:
>
> a^1
> a^2
> a^3
> ...
> a^64
>
> To zajmie nam to t1+t2+t3+...+t64 czasu. Niezależnie, czy użyjemy algorytmu
szybkiego potęgowania. Natomiast ja chciałbym, aby program zaczął liczyć niezależnie
w tym samym momencie a^1, a^2, ..., a^64. Wówczas powinno to zająć co najwyżej tyle
ile czas potęgowania największego wykładnika. Czy coś takiego jest możliwe? Co więcej
chciałbym, aby w międzyczasie program liczył jeszcze inne, niezależne rzeczy, które
przydadzą się później. Wszystko po to, aby oszczędzić czas i nie wykonywać tych
operacji po kolei, zwłaszcza, że ich wyniki są od siebie niezależne. Dopiero po ich
uzyskaniu trzeba policzyć sumę, ale liczenie ich po kolei jest trochę stratą czasu,
zakładając, że można uruchomić kilka procesów jednocześnie. Czy ma to sens?
Ma sens i odpowiedź to operacje SIMD, a więc wektorowe. Możesz równocześnie liczyć
kilka (4/8/16/32/64) niezależnych par działań matematycznych. Ale to nie jest
trywialne.
Dlatego zachęcam w pierwszej kolejności do sięgnięcia po proste rozwiązania. Jako
ciekawostkę podam, że żeby policzyć dla jednej liczby 64 potęgi dla wykładników od 1
do 64 przyzwoity kompilator C++ (czyli GCC) wygeneruje dokładnie 63 instrukcje
mnożenia.
w.
Następne wpisy z tego wątku
- 12.02.20 00:48 osobliwy nick
Najnowsze wątki z tej grupy
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
- Ada-Europe Conference - 6 March Extended Final Deadline
- Szybkie pytanko do fachowców od Bourne shella
Najnowsze wątki
- 2024-04-18 driver led ?
- 2024-04-17 Odzyskiwanie konta Google'a po utracie telefonu
- 2024-04-17 Domek na działce, zabezpieczenie tynku
- 2024-04-17 Zdalna rejestracja SIM
- 2024-04-17 Kraków => Regular - .Net Programmer <=
- 2024-04-17 Kraków => Senior PHP Developer (Symfony) <=
- 2024-04-17 Gdańsk => Technical Leader (Java Background) <=
- 2024-04-17 Warszawa => Sales Development Representative (SDR) <=
- 2024-04-17 Chrzanów => Administrator i wdrożeniowiec Lotus Notes/Domino <=
- 2024-04-17 Długość wtyku zasilającego ?5.5mm
- 2024-04-17 Warszawa => International freight forwarder <=
- 2024-04-17 Re: BOUKUN
- 2024-04-17 Warszawa => Frontend (Vue.js) Developer ze znajomością Java <=
- 2024-04-17 Postanowienie o odmowie wszczęcia dochodzenia
- 2024-04-17 Re: BOUKUN