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ż, …
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 …
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 …
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 …
ATLAS to darmowy zamiennik BLAS / LAPACK, który po skompilowaniu dostosowuje się do komputera. MKL to biblioteka komercyjna dostarczana przez firmę Intel. Czy te dwie biblioteki są porównywalne pod względem wydajności, czy też MKL ma przewagę w niektórych zadaniach? Jeśli tak, które?
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 …
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 …
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. …
Zacznę od mojego osobistego doświadczenia w naszym laboratorium. W ciągu 9 i 10 dni w ifort byliśmy dość agresywni w zakresie optymalizacji, kompilując z flagami -O3 i specyficznymi dla procesora (na przykład -xW -xSSE4.2). Ale zaczynając od ifort 11, zaczęliśmy zauważać: 1. pewne niespójności w wynikach (ponieważ semantyka nie została …
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) …
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”. …
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 …
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, …
Szukam implementacji typu open source (dowolne z Python, C, C ++, Fortran jest w porządku) racjonalnego zbliżenia do funkcji. Coś w tym artykule [1]. Daję mu funkcję i zwraca mi dwa wielomiany, których stosunek jest przybliżeniem dla danego interwału, a błąd oscyluje z tą samą amplitudą i jest to optymalne …
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.
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.