-
Data: 2020-03-26 11:53:24
Temat: Re: Wydajność OpenCL
Od: "M.M." <m...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]On Tuesday, March 24, 2020 at 9:35:30 PM UTC+1, heby wrote:
> On 24/03/2020 21:19, M.M. wrote:
> > dojdzie - ale pewności nie mam. Szykuję się do napisania kilku
> > kolejnyhch mikro programików do dalszych testów.
>
> Zainteresuja się książkami do OpenCL i CUDA. Są dostępne w PL i dość
> jasno tłumaczą ograniczenia architektur obu technologii (w sumie są to
> ograniczenia identyczne).
>
> > Czy coś mniej lub bardziej ważnego zapomniałem?
>
> Najzwyczajniej poszukaj literatury. Algorytmika stosowana w OpenCL/Cuda
> jest inna niż w normalnym programowaniu imperatywnym na CPU. To jest od
> dawna rozpracowane, nie musisz szukać np. metody sortowania, są gotowe
> algorytmy które albo są optymalne dla tej organizacji albo są bliskie.
>
> >> A potrafisz napisać algorytm który poprawnie (tzn blisko optymalnego)
> >> syntezuje się na FPGA? Co prawda prawie każdy kod w języka HDL można
> >> zsyntezować, ale zdecydowanie nie każdy powinno się syntezować.
> > Jestem laikiem w tej dziedzinie, przeczytałem na wyrywki jedną przypadkową
> > pracę znalezioną w internecie na ten temat. Ktoś opisywał, że poniższy
> > algorytm (SHIFT) na FPGA/ASIC można zrobić w jednym takcie:
> > for( i=256 ; i>0 ; i-- ) {
> > tab[i] = tab[i-1];
> > }
>
> Taka pętla na FPGA nie istnieje. Zostaje zsyntezowana do "czegoś" co
> dalece odbiega od pętli. I niekoniecznie wyrazi to co chciał uzyskać
> autor. Być może zostanie rozbita na 256*x przerzutników a być może wcale
> nic nie jest potrzebne bo można zastosować multipleksery wiec wychodzi
> układ kombinacyjny. To czy syntezer dobrze to zrozumie i dobrze
> zsyntezuje jest kłopotliwe i języki C-like niespecjalnie nadają się do
> wyrażenia tego przez programistę. W FPGA sekwencyjność wyrażana jest w
> inny sposób niż linia po lini kodu źródłowego, preferuje się
> programowanie eventowe, podaje hinty jak coś ma działać, niektóre
> konstrukcje równoleglają się same mimo że nie widać tego w kodzie itd itp.
>
> > Na GPU i na CPU (chyba) taka optymalizacja nie jest możliwa, i to bez względu
> > na ilość rdzeni. Czy kompilatory OpenCL potrafią takie algorytmy efektywnie
> > skompilować na FPGA/ASIC - nie mam pojęcia.
>
> Z róznych opisów tu i tam wynika że nie potrafią w tej chwili
> optymalizować tego typu rzeczy w sposób bliski optymalnemu. Nie oznacza
> to że robią złą robotę, ale programista HDL jest w stanie wyrazić
> sensowniej co chce bo ma do dyspozycji niższe poziomy abstrakcji do
> sprzętu. Wygląda na to że technologia jest jeszcze nie do końca sensowna
> i jest wątpliwość czy pisanie na FPGA w jakimś dialekcie C z OpenCL jest
> prawidłowym kierunkiem. Być może pojawi się jakiś inny język w OpenCL
> który pozwoli na detaliczność opisu taką jak daje VHDL czy Verilog.
Chyba naprawdę będę musiał coś poczytać o OpenCL, czasami widzę dziwne
zachowanie w prostych programach. Gdy na GPU są wykonywane jakieś proste
obliczenia w pętli, np. suma losowych liczb:
__kernel void OpenCLPi(__global struct Worker const* workers, const ulong n_loops) {
struct Worker *const worker = workers + get_global_id(0);
struct Rnd4Lin rnd;
seed( &rnd, worker->seed );
ulong count = 0;
for( ulong i=0 ; i<n_loops ; i++ ) {
count += getRnd( &rnd ) & 0xFF;
}
worker->count = count;
}
To po zwiększeniu ilości pętli (parametr n_loops) z 1mln do 2mln czas
obliczeń wzrasta liniowo dwa razy. Gdy zwiększam do 4 mln to też
zgodnie z oczekiwaniami czas obliczeń wzrasta 4 razy. I to się
sprawdza gdzieś do około 10mln. Gdy ilość pętli jest równa 10mln to
czas wydłuża się 10-krotnie. Natomiast gdy zwiększam do 20mln to w
ogóle nie mogę doczekać się końca obliczeń, a gdy przerwę program po
długim czasie, to w statystykach widzę, że dużo obliczeń było
wykonywanych na CPU. Nie wiem z czego to wynika, czas powinien wzrastać
liniowo, bo liniowo wzrasta ilość pętli.
Pozdrawiam
Następne wpisy z tego wątku
- 26.03.20 12:12 Mateusz Viste
- 26.03.20 12:37 fir
- 26.03.20 12:40 fir
- 26.03.20 13:57 M.M.
- 26.03.20 14:22 fir
- 26.03.20 18:24 heby
- 26.03.20 18:57 M.M.
Najnowsze wątki z tej grupy
- Can you activate BMW 48V 10Ah Li-Ion battery, connecting to CAN-USB laptop interface ?
- We Wrocławiu ruszyła Odra 5, pierwszy w Polsce komputer kwantowy z nadprzewodzącymi kubitami
- Ada-Europe - AEiC 2025 early registration deadline imminent
- John Carmack twierdzi, że gdyby gry były optymalizowane, to wystarczyły by stare kompy
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2025
- Linuks od wer. 6.15 przestanie wspierać procesory 486 i będzie wymagać min. Pentium
- ,,Polski przemysł jest w stanie agonalnym" - podkreślił dobitnie, wskazując na brak zamówień.
- Rewolucja w debugowaniu!!! SI analizuje zrzuty pamięci systemu M$ Windows!!!
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
Najnowsze wątki
- 2025-07-03 Trybik
- 2025-07-04 Renault Symbioz
- 2025-07-04 Architektura IIIRP: Wyjątkowa, a prymitywniejsza niż stodoła pod zaborami
- 2025-07-04 Warszawa => International Freight Forwarder <=
- 2025-07-04 Wrocław => SAP ABAP Developer <=
- 2025-07-04 Warszawa => Mid/Senior IT Recruiter <=
- 2025-07-04 Białystok => Kotlin Developer <=
- 2025-07-04 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo
- 2025-07-04 Warszawa => Specjalista wsparcia IT - analiza techniczna sprzętu IT <
- 2025-07-04 Zakrzewo => Konsultant SAP HCM <=
- 2025-07-04 Łódź => Programista Mainframe (z/OS, Assembler) <=
- 2025-07-04 Szczecin => Key Account Manager IT <=
- 2025-07-04 Warszawa => Technik IT - Konfiguracja i Wsparcie Sprzętowe <=
- 2025-07-04 Warszawa => Technique IT - Hardware Configuration and Support <=
- 2025-07-04 Warszawa => Specjalista ds. Sprzętu IT i Wsparcia Technicznego <=