🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #216830

Re: Wydajność OpenCL

#216830
From: M.M.
Date: Tue, 24 Mar 2020 20:19
82 lines
5237 bytes
On Tuesday, March 24, 2020 at 6:58:47 PM UTC+1, heby wrote:
> On 22/03/2020 20:34, M.M. wrote:
> > producenta) 75W mocy, a procesor nawet 200. Wniosek z tego taki, że jeśli
> > jakieś obliczenia w ogóle można przeprowadzić na GPU, to przyspieszenie
> > może być kolosalne.
> 
> Ale tylko jeśli alorytm dzieli się na rdzenie i nie komunikuje się 
> pomiędzy. Nie każdy da się łatwo podzielić. Spróbuj też korzystać z 
> pamięci karty, przyśpieszenie nie będzie aż takie imponujące. Sprawdź 
> też jakie masz transfery CPU z i do pamięci karty, ogólnie wyjmowanie 
> czegoś z karty jest bolesne.

Generalnie mam podobny pogląd na ten temat co Ty.  Piszesz o
korzystaniu z pamięci karty, rozumiem, że masz na myśli sytuację, w
której N wątków pracuje na karcie i N odczytuje (zapisuje) jakieś 
dane z tej karty. Myślę, że jeśli każdy wątek będzie miał dostęp do 
pamięci karty w sposób w miarę sekwencyjny to do spowolnienia nie 
dojdzie - ale pewności nie mam. Szykuję się do napisania kilku 
kolejnyhch mikro programików do dalszych testów. Gdzieś czytałem że
proste algorytmy do problemu komiwojażera przyspieszają na 
GPU do 300 razy (względem wszystkich rdzeni jednego CPU w podobnej
klasie cenowej), a wątki mają wspólną pamięć (rozmiaru N^2) do 
odczytu i każdy ma mały (rozmiaru N) obszar do zapisu i odczytu.
Chyba to zakoduję do testów, podzielę się wynikami.

Częste transfery pomiędzy pamięci karty a pamięcią komputera na
pewno spowolnią obliczenia. 

By się przydało gdzieś zebrać kompletny(!) zetaw warunków koniecznych, 
przyspieszenie było możliwe. Słyszałem że jest kilka pułapek, nie wiem o
jakie pułapki chodzi. Na razie do głowy przychodzą mi takie warunki:
1) Zadanie musi być paralelizowalne algorytmicznie, mało sekcji
   krytycznych, mało synchronizachi.
2) Stosunek transferów RAM<->GPU do obliczeń musi być mały.
3) Stosunek obliczeń do odczytów sekwencyjnych (w pamięci karty) musi 
   być...  no właśnie, nie wiem jaki musi być.
4) Stosunek obliczeń do zapisów sekwencyjnych (w pamięci karty) musi 
   być... też nie wiem jaki.
5) Stosunek obliczeń do odczytów/zapisów NIE-sekwencyjnych musi
   być... chyba bardzo mały, ale pewności nie mam, może niektóre 
   GPU radzą sobie z czymś takim?
6) Gdy są obliczenia na grafice to przyspieszenie jest jeszcze
   większe, bo karty mają funkcje wbudowane do grafiki.

Czy coś mniej lub bardziej ważnego zapomniałem?


> 
> > I kolejna sprawa, jeśli na procesorze (GPU) przeznaczonym do ogólnych obliczeń
> > można uzyskać przyspieszenie 260 razy, to jakiego przyspieszenia
> > można się spodziewać na układach FPGA i ASIC?
> 
> 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];
}
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.

 
> OpenCL stara się co prawda to FPGA chować za abstrakcją, ale układy 
> programowalne nie współpracują dobrzez z językami imperatywnymi, 

Właśnie tego się obawiałem :/


> dlatego 
> isnieje do ich programowania zupełnie inny zbiór języków z innymi 
> pojęciami. No i karty FPGA w zasosowaniach programowania OpenCL to 
> ciągle ciekawostka, bardzo droga.

Po wygooglaniu faktycznie znalazłem jakieś karty za 40-50tys PLN :/


Pozdrawiam 
Technical Details
Message-ID: <34b7a503-d78e-4b34-bf45-38868903b659@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin2!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
References: <c474307f-ba6b-4c59-9d5e-a289203ec68e@googlegroups.com> <3d171e03-6864-4baf-acb7-519173a49f25@googlegroups.com> <r5dhol$h0v$1@dont-email.me>

Show Full Headers
Complete Article Headers
X-Received: by 2002:a05:6214:12cf:: with SMTP id s15mr27384874qvv.241.1585081151981;        Tue, 24 Mar 2020 13:19:11 -0700 (PDT)
X-Received: by 2002:a05:620a:702:: with SMTP id 2mr20972783qkc.248.1585081151384; Tue, 24 Mar 2020 13:19:11 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!wsisiz.edu.pl!goblin2!goblin1!goblin.stu.neva.ru!news-out.google.com!nntp.google.com!postnews.google.com!google-groups.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Tue, 24 Mar 2020 13:19:11 -0700 (PDT)
In-Reply-To: <r5dhol$h0v$1@dont-email.me>
Complaints-To: groups-abuse@google.com
Injection-Info: google-groups.googlegroups.com; posting-host=159.205.157.75; posting-account=xjvq9QoAAAATMPC2X3btlHd_LkaJo_rj
NNTP-Posting-Host: 159.205.157.75
References: <c474307f-ba6b-4c59-9d5e-a289203ec68e@googlegroups.com> <3d171e03-6864-4baf-acb7-519173a49f25@googlegroups.com> <r5dhol$h0v$1@dont-email.me>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <34b7a503-d78e-4b34-bf45-38868903b659@googlegroups.com>
Subject: Re: Wydajność OpenCL
From: "M.M." <mmarszik@gmail.com>
Injection-Date: Tue, 24 Mar 2020 20:19:11 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit