Realizacje naszych klientów

<b>Siedziba PEM</b>  - Francja

Siedziba PEM - Francja

Polecany film szkoleniowy

Integration with other Autodesk programs (RC)

AutoCAD Structural Detailing Rysunki Szalunkowe
Integration with other Autodesk programs (RC)

 

Obliczenia równoległe

Wstęp

Wprowadzenie komputerów do naszej codzienności z pewnością zrewolucjonizowało wiele aspektów naszego życia, zarówno osobistego jak i zawodowego. Nie rozwiązało to jednak wszystkich problemów – wręcz przeciwnie, postawiło nas przed nowymi wyzwaniami.

Skupiając swoją uwagę na dziedzinie projektowania konstrukcji inżynierskich łatwo możemy zauważyć, że obecne możliwości techniczne umożliwiają obliczenia konstrukcji składających się z setek tysięcy współpracujących ze sobą elementów.

Czynnikiem, który niewątpliwie ma bardzo istotny wpływ na komfort i wydajność pracy przy nietrywialnych projektach jest czas przetwarzania danych przez program. Jest to szczególnie ważne w obecnych czasach, gdzie praktycznie żadna poważniejsza konstrukcja nie może być zaprojektowana bez wspomagania komputerowego, a uwarunkowania ekonomiczne wymuszają krótkie terminy realizacji projektów konstrukcyjnych.

Co zatem można zrobić, by znacząco przyspieszyć przetwarzanie danych w kluczowych miejscach programu?

Optymalizacja algorytmów w tradycyjny sposób (oparty na obliczeniach sekwencyjnych) pod kątem szybkości ich działania dość szybko napotyka na barierę złożoności obliczeniowej, która wynika z ich natury i jest w wielu przypadkach niemożliwa do obejścia. W takiej sytuacji jedynym rozwiązaniem jest zwiększenie mocy obliczeniowej naszego komputera.

W tej dziedzinie postęp dokonuje się na dwóch płaszczyznach:

  • Z jednej strony śrubowane są parametry systemu, takie jak np. częstotliwość zegara czy modyfikacja wewnętrznej architektury, które zwiększają szybkość przetwarzania danych,
  • z drugiej strony coraz bardziej popularne stają się komputery wieloprocesorowe, na których skupimy tutaj naszą uwagę.

Komputery wieloprocesorowe

Jak sama nazwa wskazuje komputery takie zawierają więcej niż jeden procesor, czyli jądro odpowiedzialne za przetwarzanie danych. Można pomyśleć, iż skoro nasz komputer ma np. 2 procesory to automatycznie będzie 2 razy szybszy. Niestety tak nie jest. 

Wynika to ze wspomnianego już wcześniej sekwencyjnego przetwarzania danych, które praktycznie bez wyjątku jest stosowane w całym współczesnym oprogramowaniu. Aby to zobrazować wyobraźmy sobie, że mamy 100-elementową tablicę liczb i naszym zadaniem jest obliczenie ich sumy. Tradycyjny algorytm sekwencyjny wykona tę operację w pętli, która wykona się 100 razy. Obecność drugiego procesora w systemie nie przyspieszy tej operacji – procesor ten będzie bezczynny.

Rozwiązaniem jest zamiana algorytmu sekwencyjnego na algorytm równoległy. W dużym skrócie polega to na rozbiciu naszego zadania na mniejsze i uruchomieniu ich równocześnie na różnych wątkach (tyle zadań ile procesorów).

W naszym konkretnym przypadku będą to 2 odrębne tablice 50-elementowe, które mogą już teraz być sumowane jednocześnie przez 2 procesory, czyli teoretycznie zadanie wykona się w czasie dwukrotnie krótszym. 
W praktyce trzeba uwzględnić pewien narzut na synchronizację działania procesorów, szczególnie jeśli chodzi o dostęp w trybie zapisu do wspólnych zasobów. Takie miejsca to tzw. sekcje krytyczne, gdzie wymagany jest dostęp sekwencyjny, realizowany za pomocą skądinąd dobrze nam znanego z podróży pociągami mechanizmu semaforów.

Przetwarzanie równoległe w oprogramowaniu firmy Robobat

Idąc z duchem czasu firma Robobat rozpoczęła prace nad wykorzystaniem nowych możliwości sprzętowych w tworzonym przez nią oprogramowaniu. Sprowadza się to do analizy kluczowych pod względem czasu działania miejsc w programach pod kątem możliwości zamiany algorytmów sekwencyjnych na algorytmy równoległe.

Owocem tym prac w wersji 20.1 jest zastosowanie powyższych rozwiązań w kilku miejscach systemu ROBOT Office, a w szczególności:

  • Obliczenia teoretycznych powierzchni zbrojenia płyt i powłok (ROBOT Millennium oraz CBS Pro)
  • Tworzenie relacji między elementami, niezbędnych do generacji prawidłowego widoku architektonicznego 3D, w momencie otwierania pliku (CBS Pro)
  • Generacja widoku architektonicznego 3D (CBS Pro)

Przykładowo w przypadku teoretycznych powierzchni zbrojenia obliczenia wykonywane są w punktach wygenerowanych na podstawie elementów skończonych. Ponieważ obliczenia w jednym punkcie nie mają wpływu na obliczenia w innym punkcie jest to zatem odpowiednie miejsce na użycie algorytmu równoległego – każdy procesor otrzymuje swoją grupę punktów i obliczenia wykonują się jednocześnie z zapewnieniem wspomnianej już wcześniej synchronizacji dostępu do wspólnych danych.

We wszystkich powyższych sytuacjach zaobserwowano znaczne przyspieszenie działania      programu, rzędu 80% (gdzie 100% oznacza 2-krotne przyspieszenie), co w przypadku średnich i większych modeli, gdzie czasy niektórych operacji obliczeniowych sięgają kilkudziesięciu minut czy kilku godzin daje już istotne zyski czasowe.

Z punktu widzenia interfejsu użytkownika (przedstawiony jest on na rysunku poniżej dla programu CBS Pro) opcja ta sprowadza się do możliwości włączenia/wyłączenia przetwarzania równoległego (domyślnie opcja jest włączona). 

Wnioski

Analiza rynku komputerowego jak również rosnące potrzeby użytkowników naszego oprogramowania wskazują na sensowność i innowacyjność podjętych przez firmę Robobat (jako jednej z pierwszych w tej dziedzinie) działań zmierzających do poprawy wydajności oprogramowania dzięki wykorzystaniu najnowszych zdobyczy techniki.

Idea programowania równoległego jest już znana od dość dawna, niemniej jednak dopiero w tym momencie sprzęt komputerowy oferujący takie możliwości stał się ogólnie dostępny.

Należy jeszcze dodać, iż rozwiązanie to jest przyszłościowe, a co za tym idzie, warte inwestowania.

  • Po pierwsze, w przypadku pojawienia się komputerów o większej liczbie procesorów (model oparty o 4 procesory ma pojawić się już w tym roku) nasze algorytmy również przyspieszą – program rozpozna ilość procesorów obecnych w systemie i automatycznie rozdzieli zrównoleglone zadania na wszystkie z nich.
  • Po drugie, ścieżka postępu w zakresie sprzętu bazująca na zwiększaniu ilości procesorów wydaje się być zdecydowanie bardziej pewną i znacznie mniej skomplikowaną niż optymalizacja istniejących układów, gdzie postęp prędzej czy później zostanie zahamowany przez ograniczenia technologiczne wynikające z naturalnych barier.

Jak mówi znane powiedzenie, droga do sukcesu jest zawsze w budowie. Zatem w kolejnych wersjach naszego oprogramowania należy spodziewać się dalszego wykorzystania możliwości jakie daje architektura wieloprocesorowa, w szczególności jeśli chodzi o czas obliczeń konstrukcji, dostęp do rezultatów oraz kluczowe operacje edycyjne.