How to GPU Computing

Un mic exemplu de adunare a doua array-uri mari de 32.000.000 care ruleaza in 11s pe CPU si 100ms pe GPU.

O solutie de GPU Computing in C# este folosirea librarii Alea care are o varianta community si una cu licenta, suporta operatii cu LINQ pe GPU si deasemenea poate fi folosit pe Linux, Windows, Mono, .Net Framework:
GPU Computing on .NET at speed of CUDA C++

Puteti sa faceti si un test drive de 2 zile cu remote acces pe ultimul model de placa video Tesla TK80:

O lista completa de resurse pentru Python:

Vad ca si IBM ofera servicii de GPU Computing in Cloud dar cam piperate:
http://www.softlayer.com/gpu%20

Cheap GPU Computing hourly based pay
https://www.nimbix.net/nimbix-cloud-demand-pricing/

3 Likes

Ma intreb cate companii de AI si computing sunt in Romania.

Curentul este ieftin si daca ai niste prieteni aproape gratuit cu ‘liberalizarea pietei de energie’. Interconectarea romaniei cu toate tarile din UE este excelenta… Romania sta foarte prost la proiecte europene si sunt mai mult ca sigur ca niste proiecte legate de deep learning in agricultura ar acoperi costurile de pornire.

Trebuie cativa prieteni mai sus pusi si s-ar putea scoate afaceri serioase din ferme de GPU computing in Romania fara sa traga la ochi. Daca ne uitam la seriale full CGI gen Game of Thrones, filme, jocuri, cererea pentru procesarea datelor cu inteligenta artificiala clienti ar exista cacalau si sumele sunt uriase. (chiar si 1 mil USD/minut de render fiindca efectiv nu sunt destule render farmuri)

In plus cu tot terorismul in UE iti trebuie un singur contract militar cu vreun serviciu secret pentru gpu computing si poti sa uiti de grija banilor. Nici macar de informaticieni/administratori nu ducem lipsa.

2 Likes
1 Like

Poti de asemenea sa folosesti si OpenCL.

http://www.cmsoft.com.br/opencl-tutorial/command-queues/

Exista un api pt toate limbajele uzuale(c++, java, c#, python)

Este destul de dificil. Trebuie sa gandesti intr-o anumita maniera si nu orice algoritm se poate paraleliza

Hai sa impartim asta in doua :slight_smile:

OpenCL si CUDA sunt relativ usor de invatat. Eu prefer OpenCL, CUDA te leaga de placile Nvidia.

Paralelizarea tine si de teorie, uneori poate sa fie usoara, alteori deosebit de dificila, alteori imposibila, in functie de inter-dependenta datelor.

2 Likes

Yup !

OpenCL am facut anul trecut. Mi s-a parut interesant. Poti sa optii chestii interesante cu el. Viteza de procesare etc.

Pt mine a fost cam greu de digerat. Ca proiect de final de materie am scris despre niste algoritmi de sortare pe GPU(sortare binonica)

Lucrezi in domeniul fizicii computationale + GPU Computing ?

Dude, uitate pe profilul de linkedin a fost asociat la universitatea din oradea unde probabil a facut research.

Prefer sa il las pe el sa zica

https://www.linkedin.com/in/adrian-roman-8b632b11a/

In momentul asta nu (daca nu se pune ce fac ‘pro bono’). Sper sa fie cazul in viitor. Pe fizica computationala nu am lucrat cu placi video inca. Avem in vedere asta, insa.

1 Like

A se avea in vedere ca profilul e departe de a fi complet :slight_smile:

1 Like

Cred ca ti-ar aduce un aport de viteza destul de mare :slight_smile:

Discutabil cat de mare, problema e ca deja exista scris cod care ar necesita rescriere pentru placa video, si e infernal de complex. Eu prefer sa zic pas la asa ceva. Sigur ca la cod nou ar fi altceva… dar sunt o gramada de probleme care trebuie avute in vedere.

In momentul de fata exista un cluster pentru calcule, avem in el o singura placa video pe care s-ar putea face calcule. Adica insuficient pentru ca sa merite bataia de cap…

2 Likes

Uite aici un doc: https://developer.nvidia.com/sites/default/files/akamai/cuda/files/Misc/mygpu.pdf Citat relevant:
As we remarked such a system seems to be sufficient for training and single precision calculations on GPU, but GeForce GTX cards have strongly restricted double precision capabilities. As a consequence in the benchmarks we present, the double precision performance is not so impressive.

In teste au folosit un cpu destul de modest cand e vorba de paralelizare, nu se poate compara cu nodurile de pe cluster unde se pot executa chiar 40 fire/nod (si in viitor sper ca vor exista noduri mult mai capabile).

Aici https://developer.nvidia.com/cublas se pretinde cuBLAS performs up to 5X faster than the latest version of the MKL BLAS on common benchmarks, iti dai seama ca 5X e pentru cazurile favorabile si mi-e cam teama ca in cazul in care folosesti numere complexe duble cazi pe situatiile defavorabile.

1 Like

discutam chestiile astea cu un coleg din cluj https://www.linkedin.com/in/zerseu/, el stie mai bine partea de ai, deep learning, machine learning, algoritmica.

atunci invita-l aici !

1 Like

Pe deep learning/machine learning rareori ai nevoie de precizia necesara deseori pentru calculele stiintifice. De exemplu poti linistit sa folosesti float pentru ponderi la neuroni. Chiar float16. Chiar 2 biti in unele situatii https://arxiv.org/abs/1610.00324 , sau de ce nu, 1 bit: https://arxiv.org/abs/1602.02830

3 Likes

Ce pot sa zic, nu am facut banii din asta, am scris si eu un mic articol pe partea asta:

Dar tehnologia se schimba, noi o influentam, nu stim in ce o sa se schimbe.
Oricum fundamentele informaticii or sa ramana.