Przyspieszanie skryptów – Wykorzystaj swój PROCESOR (future.apply)

Większość z nas posiada sprzęt komputerowy umożliwiający przyspieszenie naszych skyptów w R. W pierwszej kolejności powinniśmy przyjrzeć się naszym procesorom i wykorzystać je do zrównoleglenia wykonywanych operacji (przetwarzanie wielowątkowe). W dzisiejszym poście pokażemy Wam jak przyspieszyć nasze skrypty korzystając z biblioteki future.apply. Załadujemy bibliotekę:

Wbudowana w bibliotekę funkcja availableCores wyświetli nam ile rdzeni ma nasz procesor:

Mój komputer ma 8 rdzeni, które mogę wykorzystać do równoległego przetwarzania danych.

Wczytajmy też dane, których używaliśmy już w poprzednim poście o przyspieszaniu skryptów:

Tym razem nasza siatka jest większa i ma 1000 poligonów.

Napiszmy funkcję, którą będziemy chcieli wykonać w pętli. Funkcja ta będzie:

  • wybierać konkretny poligon z warstwy grid, 
  • wycinać z rastra r fragment leżący w zakresie wybranego poligonu,
  • wyliczać średnią wartość pikseli z wyciętego kawałka zawierających się w poligonie.

Nasza funkcja wygląda tak:

Wykonajmy funkcję w pętli używając bazowej funkcji R sapply() i sprawdźmy ile nam to zajmie z użyciem system.time():

Funkcja sapply wykonała działanie w 155,4 s.

Teraz wykorzystamy możliwości naszego procesora do przyspieszenia naszych obliczeń. Najpierw musimy zdefiniować plan dla funkcji future:

I zastąpić sapply funkcją future_apply:

Funkcja sapply_future wykonała działanie w 39,3 s. Prawie 4 x szybciej.

Bibliotek future.apply ma wiele innych funkcji które możemy wykorzystać do przyspieszenia naszych skryptów. Polecamy zapoznać się z jej dokumentacją.

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Translate using Google Translate»
Social media & sharing icons powered by UltimatelySocial

Podoba Ci się nasza strona? Odwiedź nasz profil