-
Data: 2020-03-26 12:40:47
Temat: Re: Wydajność OpenCL
Od: fir <p...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]W dniu czwartek, 26 marca 2020 12:37:39 UTC+1 użytkownik fir napisał:
> W dniu czwartek, 26 marca 2020 11:53:26 UTC+1 użytkownik M.M. napisał:
> > 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
>
> tez nie wiem (sam opencl uzywalem kilka lat temu przez pare dni jak wspominam
uznajac ze ciekawe ale mam pilniejsze sprawy)- o ile pamietam jednak w setupie opencl
mozna przydzielic chyba jakie
> sprzety maja wykonywac kod i pewnie cpu mozna wylaczyc (?)
>
> w sumie dobrze ze kolega ten temat postuje moze i kiedys bym sie w to troche
wkrecil
>
> jest tez opcja ze jest to jakis bug w kodzie i jednak ta liczba 20 mln cos
zmienia.. prosty wniosek ze np debugujac top trzeba eksperymentalnie pozmieniac pare
rzeczy i sprawdzic od czego to dokladniej zalezy
wogole to oopencl moglby chyab zwolnic kiedy zasoby by sie wyczerpaly (np ilosc
wewnetrznych kanalow/watkow lyb pamiec robiocza) wtedy pewnie mogloby spasc
do poziomu wykjonywania o klase wolniej
ale tutaj nie wiem czy to moze wystepowac
to co kolega nazywa "iloscia petli" to ilosc obrotow w zwyklej petli czyz nie?
(a na ilu jakby kanalach rownolegle to kolega zapuszcza?)
Następne wpisy z tego wątku
Najnowsze wątki z tej grupy
- NOWY: 2025-09-29 Alg., Strukt. Danych i Tech. Prog. - komentarz.pdf
- Na grupie comp.os.linux.advocacy CrudeSausage twierdzi, że Micro$lop używa SI do szyfrowania formatu dok. XML
- Błąd w Sofcie Powodem Wymiany 3 Duńskich Fregat Typu Iver Huitfeldt
- Grok zaczął nadużywać wulgaryzmów i wprost obrażać niektóre znane osoby
- 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ą."
Najnowsze wątki
- 2025-11-26 Policja się rozmysliła i zmieniła zdanie
- 2025-11-26 Chrzanów => Spedytor Międzynarodowy (handel ładunkami/prowadzenie f
- 2025-11-26 Czy publiczne "podpisywanie gaśnicy" może być karalne? [Braun]
- 2025-11-26 Warszawa => Solution Architect (Workday) - Legal Systems <=
- 2025-11-25 konfigurowanie androida a sklep play
- 2025-11-25 Dwie umowy dożywocia
- 2025-11-24 Domowy switch 1GBit/8 portów, ale lepszy niż najtańsze
- 2025-11-24 Kraków => Production Coordinator / Representant Product Dev <=
- 2025-11-24 Warszawa => Przedstawiciel handlowy / KAM (branża TSL) <=
- 2025-11-24 Białystok => Solution Architect (Workday) - Legal Systems <=
- 2025-11-24 Białystok => Konsultant ERP Microsoft Dynamics 365 Commerce <=
- 2025-11-24 Rzeszów => ERP Microsoft Dynamics 365 Commerce Consultant <=
- 2025-11-24 Białystok => Programista React ze znajomością C++ <=
- 2025-11-24 Gdańsk => Dynamics 365 Commerce/POS Developer <=
- 2025-11-24 Białystok => Microsoft Dynamics 365 Finance Consultant <=




Ile kosztują tanie mieszkania w polskich metropoliach?