Pytania otagowane jako performance

Pytania dotyczące szybkości wykonywania i wykorzystania pamięci przez algorytmy, struktury danych, języki i biblioteki.

10
Jakie są dobre strategie poprawy wydajności szeregowej mojego kodu?
Pracuję w nauce obliczeniowej, w wyniku czego spędzam nietrywialną ilość czasu próbując zwiększyć naukową przepustowość wielu kodów, a także zrozumieć ich efektywność. Załóżmy, że oceniłem wydajność w porównaniu do czytelności / możliwości ponownego użycia / konserwacji kompromisu oprogramowania, nad którym pracuję, i zdecydowałem, że nadszedł czas na wydajność. Załóżmy również, …

7
Czy analiza algorytmiczna polegająca na liczeniu flopów jest przestarzała?
Na moich kursach analizy numerycznej nauczyłem się analizować wydajność algorytmów, licząc liczbę wymaganych operacji zmiennoprzecinkowych (klap) w stosunku do wielkości problemu. Na przykład w tekście Trefethen & Bau na temat numerycznej algebry liniowej są nawet trójwymiarowe zdjęcia liczby flopów. Teraz modne jest stwierdzenie, że „flopy są bezpłatne”, ponieważ opóźnienie pamięci …

4
Co sprawia, że ​​Fortran jest szybki?
Fortran zajmuje szczególne miejsce w programowaniu numerycznym. Z pewnością możesz tworzyć dobre i szybkie oprogramowanie w innych językach, ale Fortran nadal działa bardzo dobrze pomimo swojego wieku. Co więcej, łatwiej jest tworzyć szybkie programy w Fortran. Robiłem szybkie programy w C ++, ale musisz bardziej uważać na takie rzeczy, jak …

4
Jak operator odwrotnego ukośnika MATLAB rozwiązuje dla macierzy kwadratowych?
Porównywałem kilka moich kodów z „zapasowymi” kodami MATLAB. Jestem zaskoczony wynikami. Uruchomiłem przykładowy kod (Sparse Matrix) n = 5000; a = diag(rand(n,1)); b = rand(n,1); disp('For a\b'); tic;a\b;toc; disp('For LU'); tic;LULU;toc; disp('For Conj Grad'); tic;conjgrad(a,b,1e-8);toc; disp('Inv(A)*B'); tic;inv(a)*b;toc; Wyniki: For a\b Elapsed time is 0.052838 seconds. For LU Elapsed time is …


4
Jakie narzędzia lub metody są dostępne, aby przyspieszyć kod napisany w Pythonie?
Tło: Myślę, że mógłbym chcieć przenieść część kodu, który oblicza macierzowe produkty wykładnicze-wektorowe za pomocą metody podprzestrzeni Kryłowa od MATLAB-a do Pythona. (W szczególności funkcja expmvp Jitse Niesen , która wykorzystuje algorytm opisany w tym artykule ). Wiem jednak, że chyba, że ​​intensywnie korzystam z funkcji modułów pochodzących ze skompilowanych …

4
Kiedy powinienem używać szablonów wyrażeń C ++ w informatyce, a kiedy * nie * powinienem ich używać?
Załóżmy, że pracuję nad kodem naukowym w C ++. W niedawnej dyskusji z kolegą argumentowano, że szablony wyrażeń mogą być bardzo złe, potencjalnie czyniąc oprogramowanie kompilowalnym tylko w niektórych wersjach gcc. Podobno problem ten wpłynął na kilka kodów naukowych, jak wspomniano w podtytułach tej parodii Downfall . (Są to jedyne …

1
Jakie jest preferowane i skuteczne podejście do interpolacji danych wielowymiarowych?
Jakie jest preferowane i skuteczne podejście do interpolacji danych wielowymiarowych? Rzeczy, o które się martwię: wydajność i pamięć do budowy, ocena pojedynczej partii / partii wymiary obsługi od 1 do 6 liniowy lub wyższego rzędu możliwość uzyskania gradientów (jeśli nie liniowych) regularna vs rozproszona siatka wykorzystując jako funkcję interpolacyjną, np. …


1
Jak skaluje się wydajność operacji tablicowych Python / Numpy wraz ze wzrostem wymiarów tablicy?
Jak skalują się tablice Python / Numpy wraz ze wzrostem wymiarów tablicy? Jest to oparte na niektórych zachowaniach, które zauważyłem podczas testowania kodu Python dla tego pytania: Jak wyrazić to skomplikowane wyrażenie za pomocą numpy Problem polegał głównie na indeksowaniu w celu zapełnienia tablicy. Odkryłem, że zalety używania (niezbyt dobrych) …

3
Czy można rozwiązywać ukośne i stałe symetryczne układy liniowe w czasie kwadratowym po wstępnym obliczeniu?
Czy istnieje metoda do rozwiązania układów liniowych formy gdzie jest stałą macierzą SPD, a są dodatnimi macierzami diagonalnymi?O(n3+n2k)O(n3+n2k)O(n^3+n^2 k)kkk(Di+A)xi=bi(Di+A)xi=bi(D_i + A) x_i = b_iAAADiDiD_i Na przykład, jeżeli każdy jest skalarem, wystarczy obliczyć SVD . Jest to jednak podział na ogólne powodu braku przemienności.DiDiD_iAAADDD Aktualizacja : Jak dotąd odpowiedzi są „nie”. …

4
Najważniejsze wskazówki dotyczące przenośnej wielordzeniowej / alokacji / inicjalizacji pamięci NUMA
Gdy obliczenia o ograniczonej przepustowości pamięci są wykonywane w środowiskach pamięci współużytkowanej (np. Wątkowych przez OpenMP, Pthreads lub TBB), pojawia się dylemat, jak zapewnić, aby pamięć była prawidłowo rozdzielona na pamięć fizyczną , tak aby każdy wątek w większości uzyskiwał dostęp do pamięci na „lokalna” magistrala pamięci. Chociaż interfejsy nie …

6
W jakim stopniu ogólne i metaprogramowanie przy użyciu szablonów C ++ jest przydatne w informatyce?
Język C ++ zapewnia ogólne programowanie i metaprogramowanie za pomocą szablonów. Techniki te znalazły zastosowanie w wielu dużych komputerowych pakietach naukowych (np. MPQC , LAMMPS , CGAL , Trilinos ). Ale co w rzeczywistości przyczynili się do obliczeń naukowych, które wykraczają poza nie-ogólne, niemetaliczne języki, takie jak C lub Fortran, …


3
Porównanie metod iteracji: liczba iteracji vs. czas procesora
Porównuję dwie iteracyjne metody odwracania losowych macierzy kwadratowych. Ponieważ macierze są losowe, każdy przypadek testowy wymaga zarówno różnych ilości iteracji, jak i różnych czasów, które upłynęły. Moje pytanie, oprócz średniego czasu procesora, to średnia wartość iteracji pobranych przez obie metody, przydatne informacje do porównania metod.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.