Próbuję wykonywać modułową potęgowanie liczb całkowitych o bardzo dużym module przez powtarzalne dzielenie kwadratu (moc zawsze wynosi 2 w moim przypadku, więc uważam, że jest to najbardziej efektywny sposób). Dzięki miłej właściwości mojego modułu, pozostała część obliczeniowa jest tania; najtrudniejszą częścią jest mnożenie.Równoległa arytmetyczna biblioteka arytmetyczna dokładności
Obecnie uruchamiam GMP na Intel Core 2 Quad. Chciałbym sprawnie korzystać z czterech rdzeni procesora, ale GMP nie skaluje się w środowiskach SMP, dlatego szukam zastępczej arytmetycznej biblioteki arytmetycznej. Znalazłem kilka bibliotek do obliczeń równoległych na macierzach, ale potrzebuję biblioteki dla liczb całkowitych.
Czy to, czego szukam, istnieje?
Jak duże są twoje liczby (cyfry, bity)? Nawet przy taniej rozwidlaniu czas przełączania kontekstu, aby umożliwić wielordzeniowym procesorom pracę z pojedynczą operacją arytmetyczną, może zdominować wszelkie oszczędności. Jeśli liczby są wystarczająco duże, powinieneś zrobić rekursywny podział i podbijać przy dodawaniu/odejmowaniu [dzielenie liczby na lewą i prawą część, werbalnie dodawaj części, propaguj przenoszenie], ale oczekiwałbym wygranej zrównoleglenie wielokrotności i dzielenie, jeśli istnieje wygrana. –
Moje moduły mogą mieć wielkość 2^10000000 (!). – Pteromys