Plan pracy magisterskiej

Wstęp

  • o czym jest praca?
  • algorytmy genetyczne
    • historia
    • zasada działania
      • funkcja dopasowania
    • zastosowania:
      • symulacja skomplikowanych procesów
      • szukanie optymalnych (lub przybliżonych) rozwiązań złożonych systemów
  • zastosowanie procesora graficznego

Motywacja

  • problem:
    • optymalizacja funkcji wielu zmiennych
    • ( ilość danych >> moc sprzętu ) -> długi czas obliczeń
  • charakterystyka algorytmów genetycznych:
    • symulacja populacji osobników - setki, tysiące, miliony
    • duża niezależność osobnika względem populacji - działanie równoległe
  • proponowane podejście:
    • wykorzystanie architektury procesora graficznego
    • wykorzystanie natury algorytmów genetycznych
    • wspólny mianownik - działanie równoległe

Program ewolucyjny

Sposób opisu populacji i działań na niej

  • reprezentacja zmiennoprzecinkowa (dostosowana do problemu)
  • tablice: osobniki + ich oceny
    • n osobników po dim zmiennych każdy
    • n ocen po jednej zmiennej każda
  • działania na populacji
    • ocena (ewaluacja)
      • funkcja Griewanka jako funkcja dopasowania
      • przeliczenie wartości funkcji tak, aby dla lepszych dopasowań zwracała większą wartość
        • optimum - współrzędne optimum globalnego funkcji, random - dowolne współrzędne niebędące optimum
        • fit(optimum) > fit(random)
        • griewank(optimum) < griewank(random)
    • selekcja
      • wybór nowej populacji na podstawie ocen starej
      • metoda ruletki
        • działanie losowe
        • najlepiej dopasowany ma największe szanse
      • zachowanie najlepszego osobnika ze starej populacji (elitaryzm)
    • krzyżowanie
      • działanie probabilistyczne: c - stała wartość prawdopodobieństwa krzyżowania, e - wartość losowa (0, 1)
        • e >= c: krzyżowanie liniowe (linear crossover)
          • z dwóch starych osobników “rodzi się” trzech potomków
          • wybór dwóch najlepszych potomków do nowej populacji
        • e < c: stare osobniki przechodzą do nowej populacji
    • mutacja
      • działanie probabilistyczne: m - stała wartość prawdopodobieństwa mutacji, e - wartość losowa (0, 1)
        • e >= m: osobnik jest poddawany mutacji
        • e < m: osobnik pozostaje niezmieniony
  • warunek zatrzymania
    • populacja osiągnęła założoną ilość g pokoleń (timeout)
    • z populacji wyłonił się osobnik o dopasowaniu zbliżonym (z dokładnością eps) do optimum globalnego
    • populacja jest jednolita - zawiera osobniki różniące się względem siebie o pewna stałą eps

Założenia projektowe

  • program dla CPU - referencyjny (punkt odniesienia)
    • kod źródłowy w C++ (preferowany standard C++11)
    • działanie szeregowe + ewentualne rozszerzenie o wielowątkowość na bazie biblioteki Thrust
  • program dla GPU - badany
    • wykorzystanie biblioteki Thrust bazującej na NVIDIA CUDA
    • kod źródłowy w C++ zgodny ze standardem C++11 (ze względu na kompatybilność z Thrust)
    • podział kodu programu dla GPU na część host i device
      • GPU realizuje zlecone działania przez wykonywanie tzw. rdzeni obliczeniowych (ang. “compute kernels”)
      • rdzenie obliczeniowe:
        • uruchamiane są przez procesor CPU - część host
        • wymagają dostępu do pamięci i podprocedur alokowanych na procesorze GPU - część device
    • wektoryzacja działań
      • wynika z natury budowy procesora GPU - równoległość danych, SIMD wg. taksonomii Flynna

Implementacja

Uwagi ogólne

  • podział algorytmu na etapy odpowiadające operatorom genetycznym
    • operatory:
      • selekcji
      • krzyżowania
      • mutacji
      • oceny
    • sposób na drobnoziarniste zbadanie czasu działania poszczególnych części algorytmu

Program dla CPU

Program dla GPU

  • przeniesienie danych do pamięci GPU w celu uniknięcia niepotrzebnych transferów z/do CPU
  • (pozostałe punkty z notatek uszeregowane wg. przynależonści do operatorów genetycznych)

Analiza eksperymentalna

Specyfikacja techniczna platformy sprzętowej

  • ocena platformy na podstawie współczynnika Compute Capability
    • słaby sprzęt: laptop HP z CC 1.1
    • średni sprzęt: laptop dr G. z CC 3.0
    • silny sprzęt: PC z CC 5.0
    • ? sprzęt: PC wydziałowe z CC ?.?
  • odnośnik do strony developer.nvidia.com z opisem rozwoju kolejnych generacji sprzętu

Metoda badawcza

  • uruchomienie programów CPU i GPU na wskazanych platformach sprzętowych
    • pomiar czasu t działania programów względem:
      • liczebności populacji n
      • ilości wymiarów przestrzeni poszukiwań dim
    • pomiar jakości osobników końcowej populacji po upływie g pokoleń

Wnioski

  • porównanie wyników działania programów