Vizualizare rapidă a imaginilor folosind OpenCL

by donpedro

MSC C6C-A7

Cerinţele complexe din procesarea imagisticii medicale sunt din ce în ce mai des realizate de module standardizate de procesare care suportă Open Computing Language (OpenCL). OpenCL oferă capacitatea accelerării calculelor din algoritmii intensivi, complet independent de echipamentul hardware existent. Familia de module MSC C6C-A7 COM Express de înaltă performanţă de la MSC Vertriebs GmbH, bazată pe AMD Embedded R-Series Accelerated Processing Units (APUs) cu procesoare quad-core sau dual-core, este ideală pentru aceste aplicaţii.

Volumul mediu al datelor necesare la captarea imaginii de înaltă definiție și aplicații de procesare în sectorul de îngrijire a sănătății este în continuă creștere. Mai mult, algoritmii folosiți devin tot mai complecşi și necesită calcul intensiv.
De obicei soluții, cum ar fi soluţiile hardware de înaltă performanţă – ca procesoarele multi-core, unități de procesare accelerată (APU-uri), unităţi de procesare grafică (GPU-uri) sau Field Programmable Gate Arrays (FPGA-uri) – sunt folosite în scopul de a face faţă acestei necesităţi crescute de calcul. Aceste dispozitive oferă o performanță de calcul foarte mare, dar au nevoie de extensii de cod hardware specifice sau dependente de producător. Astăzi, soluția este Open Computing Language (OpenCL 1.0 a fost lansat la sfârșitul anului 2008). OpenCL permite programarea uniformă pentru diferite arhitecturi hardware de înaltă performanță.
OpenCL este un standard de programare deschis și royalty-free de uz general pentru sisteme de calcul eterogene. Standardul OpenCL a fost dezvoltat de către specialiști software de la concerne industriale de vârf, care au depus apoi un proiect către grupul Khronos pentru standardizare.
Khronos Group (www.khronos.org/about/), înființat în ianuarie 2000, este un consorţiu non-profit şi membru fondator axat pe crearea de standarde deschise royalty -free pentru calcul paralel, grafică și mass-media dinamic pentru o gamă largă de platforme şi dispozitive. AMD, Intel, NVIDIA, SGI, Google și Oracle sunt doar câţiva din cei peste 100 de membri. Astăzi, OpenCL este menținut și dezvoltat în continuare de Khronos (www.khronos.org/opencl/). Specificaţiile OpenCL sunt acum disponibile în versiunile 1.1 și 1.2.
Scopul OpenCL este de a oferi o interfață de programare standardizată pentru programe eficiente și portabile. Utilizatorii pot obține, astfel, ceea ce au cerut cu mult timp în urmă: o soluție de furnizor independent, non-proprietate pentru accelerarea aplicațiilor lor pe baza CPU multi-core, APU și nuclee GPU selectate.
Specificaţiile OpenCL cuprind atât specificaţiile limbajului cât şi Application Programming Interfaces (APIs) pentru nivelul platformei și de execuție. Specificaţiile limbajului descriu sintaxa și interfața de programare pentru compunerea de nuclee de calcul, care pot fi executate pe CPU sau GPU multi-core.
Un nucleu de calcul este unitatea de bază de cod executabil. Limbajul folosit este bazat pe un subset de ISO C99, care este un limbaj de programare popular printre dezvoltatori.
Platforma modelului OpenCL constă dintr-o gazdă, care stabilește conexiunea la unul sau mai multe dispozitive OpenCL. Gazda și dispozitivul sunt logic separate unul de altul, ceea ce asigură portabilitate. Accesul la rutine este obținut prin platforma nivel API, care interoghează numărul și tipurile de dispozitive existente în sistem. Dezvoltatorul poate selecta și inițializa dispozitivele de calcul dorite, în scopul de a executa sarcinile. Contextul de calcul precum și ordinea de depunere a sarcinilor de lucru împreuna cu cererile de transfer de date sunt create la acest nivel. Runtime API oferă posibilitatea să alcătuiască cozi de aşteptare a nucleelor pentru execuţie. De asemenea, este responsabil pentru gestionarea resurselor de calcul și de memorie din sistem OpenCL.
Modelul de execuție descrie tipurile de nuclee de calcul. Deoarece OpenCL este proiectat pentru procesoare multi-core și GPU, nucleele de calcul pot fi create fie ca data-parallel, care se potrivesc bine cu arhitectura GPU-urilor, sau de task-parallel, care se potrivesc mai bine cu arhitectura de CPU-uri. Când un nucleu este adus spre execuţie pe un dispozitiv OpenCL de programul gazdă, este definit un spațiu index. În acest spaţiu index se regăseşte fiecare instanţă în execuţie a nucleului. Fiecare element din domeniul de execuție este element în lucru, prin care OpenCL permite să se grupeze elementele în lucru, pentru a forma grupuri de lucru în scopuri de sincronizare şi comunicare.
OpenCL defineşte un model de memorie multi-nivel compus din patru spații de memorie: “memoria privată” (vizibil numai pentru unități individuale de calcul ale dispozitivului), “memoria locală”, “memoria constantă” și “memoria globală”. Memoria globală poate fi utilizată de către toate unitățile de calcul din dispozitiv. În funcție de memoria reală din subsistem, pot fi îmbinate diferite spații de memorie. Procesorul gazdă este responsabil pentru alocarea și inițializarea obiectelor de memorie care populează acest spațiu de memorie. Modelul de memorie se bazează și pe separarea gazdei și a dispozitivului.
Mulţumită independenței hardware și portabilităţii ușoare a OpenCL, companiile pot reutiliza investiția lor semnificativă în codul sursă, reducând astfel substanţial timpul de dezvoltare pentru sisteme de procesare a imaginilor complexe din ziua de azi.
Optimizarea în continuare a ciclului de proiectare este posibilă prin utilizarea de blocuri standard de construcție PC, cum ar fi un modulele procesor de înaltă performanță. Un astfel de calculator pe un modul (COM), poate fi ușor de montat pe o placă de bază prin intermediul unui conector standard, prin care placa de bază implementează funcţiile specifice aplicațiilor. Computer-on-Module sunt disponibile într-o gamă de versiuni diferite, oferind o putere scalabilă a procesorului și o mulţime de interfețe. Această tehnologie bazată pe modul oferă astfel o cale de upgrade simplu pentru performanțe superioare. Deoarece modulele oferite îndeplinesc toate specificațiile standard definite în ceea ce privește factorul de formă și de conectivitate, acestea sunt ușor interschimbabile cu produse de la diferiţi furnizori.
Familia de module de înaltă performanţă de la MSC Vertriebs GmbH, MSC C6C-A7, suportă de asemenea OpenCL și este ideală pentru sarcini dificile de procesare a imaginii. Această platformă high-end este implementată folosindu-se factorul de formă COM Express™. Cu noul tip de 6 pini-out, există două îmbunătățiri semnificative în comparație cu predecesorul de tip 2 pini-out: Tip 6 pini-out poate suporta până la trei interfețe independente Digital Display (DDiS) și adaugă, de asemenea, suport pentru USB 3.0.
Platforma integrată cu factor de formă compact (95 × 95mm) – MSC C6C-A7 – se bazează pe AMD Embedded R-Series cu procesare accelerată (APU) și are o grafică foarte puternică și o performanță de calcul excelentă în paralel cu disipare redusă de energie.

Modulul MSC C6C-A7 integrează AMD R-460L 2.0 GHz (2.8GHz Turbo) sau AMD R-452L 1.6GHz (2.4GHz Turbo) procesoare quad-core. Nivelul TDP este de 25W și respectiv, de 19 W. Cele două versiuni dual-core de modul pot fi populate cu AMD R-260h 2.1GHz (2.6GHz Turbo) sau AMD R-252F 1.7GHz (2.3GHz Turbo) – fiecare oferind 17W TDP. Toate procesoarele suportă tehnologia AMD64 și tehnologia de virtualizare AMD-V™.
AMD Fusion controler Hub (FCH) A75 chipset este folosit în combinație cu toate versiunile CPU. Memoria principală poate fi extinsă până la 16GB DDR3-1600 dual-channel SDRAM prin două cuple SODIMM.
Motorul grafic Radeon HD7000G-Series integrat în AMD R-Series APU, cu capacitățile sale grafice excelente, oferă suport pentru OpenCL 1.1, OpenGL 4.2 și DirectX 11. Modulele suportă până la patru monitoare independente pentru aplicaţii de imagistică. Este de asemenea inclus suport pentru HDMI, decodare MPEG-2, H.264 și VCE (motor de compresie video).
Familia de module COM Express MSC C6C-A7 oferă şase canale PCI Express™ × 1 și o interfaţă grafică PCI Express (PEG) × 8. În plus, toate modulele sunt dotate cu patru USB 3.0 şi patru porturi USB 2.0, LPC, Gbit Ethernet, HD audio și patru interfețe SATA de la până la 300MB/s. Cu DisplayPort 1.2 și interfețe HDMI (3× interfață de afișare digitală) suportă rezoluții de până la 4096 × 2160 (DP) și 1920 × 1200 (HDMI), împreună cu LCD și interfețe VGA, modulele MSC C6C-A7 oferă suport complet.
Această platformă de înaltă performanță poate rula sistemul de operare Microsoft Windows 7® Embedded Standard, precum și Linux. BIOS-ul AMI include suport UEFI. În plus față de Computer-on-Module, MSC oferă Starter Kit-uri și plăci carrier potrivite, precum și soluții de răcire și module de memorie.
Datorită puterii de calcul și capacității grafice, platforma este potrivită în special pentru aplicații unde este necesară grafică 3D, video de înaltă definiție sau controlul ecranelor de mari dimensiuni. De obicei astfel de cereri pot fi găsite în domeniul tehnologiei medicale, infotainment, digital signage și jocuri de noroc.

Ing. Marian Enache – Inginer aplicaţii
mena@msc-ge.com

MSC-Mibatron s.r.l.
O firmă a grupului MSC Vertriebs GmbH
Tel.: 021 2302530
www.msc-ge.com

S-ar putea să vă placă și

Adaugă un comentariu