# GCC i Opencl - jak to ożenić?

## Jacekalex

Aktualizacja Gentoo, na procku 100% na obu rdzeniach,  a Nvidia z dość mocnym ukladem obliczeniowym ziewa i  dłubie w nosie  :Wink: 

Włączanie CUDA czy Vdpau w gcc nie miałoby sensu - nie tylko Nvidia jest w kompach, ale zarówno Nvidia, jak i ATI czy Intel, mają wsparcie dla interfejsu Opencl.

Sznurek:

http://pl.wikipedia.org/wiki/OpenCL

Czy da się jakoś wykorzystać Opencl przy kompilacji z użyciem GCC?

Pozdrawiam

 :Cool: 

----------

## Crenshaw

Nie.

----------

## one_and_only

Jeszcze nie

http://code.google.com/p/kgpu/

----------

## Crenshaw

Autor watku pytal o przyspieszanie gcc a nie kernela.

----------

## Jacekalex

Kgpu jest nawet ciekawe.

A ja ogólnie szukam sposobu, żeby zaprząc GPU do roboty, kiedy umiera z nudów.

Najczęściej coś takiego wychodzi przy kompilacji, szyfrowaniu, itp.

Dlatego opencl jest mile widziany w gcc, openssl i  gnutls, a vaapi/vdpau w xine-lib i gstreamerze  (np do kaffeiny, na której mam dvb, totem bardzo dobrze obsługuje streaming w formacie WMP - nawet lepiej od vlc).

Z xine sprawa o tyle prosta - że xine-lib 1.2 ma obsługiwać vdpau, gstreamer-vaapi już jest - na razie nie działa, ale to kwestia czasu, żeby ruszył.

Co do opencl i gcc - to tutaj już conieco na ten temat było.

----------

## Crenshaw

 *Jacekalex wrote:*   

> Kgpu jest nawet ciekawe.
> 
> A ja ogólnie szukam sposobu, żeby zaprząc GPU do roboty, kiedy umiera z nudów.
> 
> Najczęściej coś takiego wychodzi przy kompilacji, szyfrowaniu, itp.
> ...

 

Kod generowany przez gcc to nie to samo co kod gcc. Jak najbardziej mozliwe jest aby na podstawie zwyklego kodu generowac kawalki OpenCL'owe. Jednak ze wzgledu na to w jaki sposob dziala przyspieszanie na gpu uzywanie tego do przyspieszania procesu kompilacji jest bez sensu.  :Smile: 

----------

## Jacekalex

 *Crenshaw wrote:*   

> 
> 
> Kod generowany przez gcc to nie to samo co kod gcc. Jak najbardziej mozliwe jest aby na podstawie zwyklego kodu generowac kawalki OpenCL'owe. Jednak ze wzgledu na to w jaki sposob dziala przyspieszanie na gpu uzywanie tego do przyspieszania procesu kompilacji jest bez sensu. 

 

"de gustibus non est disputandum"

"Wszyscy wiedzą, że czegoś nie da się zrobić. I wtedy pojawia się ten jeden, który nie wie, że się nie da, i on właśnie to coś robi"

Ciekawe, skąd Albert wiedział, że kiedyś pojawi się taka dyskusja :DDDDD

Poza tym:

Według wiki:

 *Quote:*   

> OpenCL zawiera w sobie język oparty na C99 służący do tworzenia jąder kodu 

 

A od  C99 do GCC jest raczej niedaleko:

http://pl.wikipedia.org/wiki/C99

http://gcc.gnu.org/c99status.html

Stąd moje zainteresowanie ....

Pozdrawiam

 :Cool: 

----------

## lazy_bum

Licz BTC, jak Ci się nudzi GPU. (;

GPU mają _trochę_ inne procesory, więc zaprzęganie ich do „ogólnej” kompilacji jest rzeczywiście bez sensu (nawet gdyby cokolwiek to wspierało, to efekt byłby mizerny — czyli traciłbyś pewnie więcej prądu na zasilanie GPU niż zysk z przyspieszenia kompilacji). Co innego do innych zadań, np. łamania haseł — tu są wielokrotnie szybsze od zwykłego CPU.

Jest też kilka ciekawych projektów korzystających z pamięci karty graficznej — np. cudaram (mocno niestabilny) czy partycja swap/tmpfs w pamięci karty…

----------

## Crenshaw

 *Jacekalex wrote:*   

>  *Crenshaw wrote:*   
> 
> Kod generowany przez gcc to nie to samo co kod gcc. Jak najbardziej mozliwe jest aby na podstawie zwyklego kodu generowac kawalki OpenCL'owe. Jednak ze wzgledu na to w jaki sposob dziala przyspieszanie na gpu uzywanie tego do przyspieszania procesu kompilacji jest bez sensu.  
> 
> "de gustibus non est disputandum"
> ...

 

Moze z Twojego punktu widzenia to jest rzecz gustu ale fajnie by bylo zebys mial pojecie o czym piszesz. Zastanow sie na przyklad co to jest prawo Amdahla i jak sie to ma do obliczen na GPU oraz kompilacji. Ja za Ciebie nie bede myslal - chyba ze chcesz wynajac mnie jako konsultanta wtedy inna sprawa  :Wink: 

 *Jacekalex wrote:*   

> 
> 
> Poza tym:
> 
> Według wiki:
> ...

 

Mieszasz pojecia. Gdybys przeczytal zamiast polskiej chocby angielska wikipedię to moze obeszloby sie bez poruszania jąder... :> Generalnie to polecam specyfikacje OpenCL jest dostepna i mozna wszystkiego na ten temat sie dowiedziec. Jak puszczac jądra na GPU i CPU też.

----------

## Jacekalex

Jeśli dobrze zrozumiałem, funkcje dostępne i ich charakterystyka w Opencl, - na tyle odstają od wymagań i specyfikacji gcc, że na razie nie jest możliwe wykorzystanie mechanizmu OpenCL jako akceleratora kompilacji?

W porządku, przyjmuję ten argument, jako aktualny obecnie, w przepowiadanie przyszłości się nie bawię.

Ale ponieważ przymierzam się  instalacji systemu 64bit kompilowanego kompilatorem Ekopatch, chciałem najpierw się przekonać, czy w GCC nie pojawiły się jakieś nowe, ciekawe funkcje zwiazane z wydajnością i szybkością, zarówno kompilacji (np wykorzystanie GPU), jak i późniejszego działania kompilowanych programów.

Jedna uwaga - o dyskusji:

Pojęcia typu "jest sens" lub "nie ma sensu" niosą przeważnie subiektywne odczucia, nie zaś rzeczowe argumenty.

Stąd też wątek jest o około 3 posty dłuższy, niż być powinien.

 :Very Happy: 

Dzięki za wszystkie odpowiedzi.

Pozdrawiam

 :Cool: 

----------

## Crenshaw

 *Quote:*   

> 
> 
> Ale ponieważ przymierzam się  instalacji systemu 64bit kompilowanego kompilatorem Ekopatch, chciałem najpierw się przekonać, czy w GCC nie pojawiły się jakieś nowe, ciekawe funkcje zwiazane z wydajnością i szybkością, zarówno kompilacji (np wykorzystanie GPU), jak i późniejszego działania kompilowanych programów.
> 
> 

 

Gcc nie jest takie zle - tzn. w porownaniu do open64, icc i ekopatha. Z wewnetrznych testow jakie robilismy wychodzi ze czasem jest troche szybsze a czasem troche wolniejsze (jesli chodzi o szybkosc kompilowanego programu). Testy polegaly na wzieciu kilku programow z shootout.alioth.debian.org i przepuszczeniu przez kompilatory a potem pomierzenie wynikow.

Najfajniejsza rzecza jaka maja w gcc to jest wsparcie do OpenMP ale to przydaje sie przy pisaniu programow. W 4.7 wszedl support do OpenMP 3.1 gdzie sa tzw. taski i tym pewnie daloby sie przyspieszac proces kompilacji chociaz wymagaloby to modyfikacji w kodzie  :Smile: 

 *Quote:*   

> 
> 
> Jedna uwaga - o dyskusji:
> 
> Pojęcia typu "jest sens" lub "nie ma sensu" niosą przeważnie subiektywne odczucia, nie zaś rzeczowe argumenty.
> ...

 

ACK.

----------

