AutoCAD Structural Detailing Rysunki Szalunkowe
Integration with other Autodesk programs (RC)
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:
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:
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.
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.