Post blog

Software

MILK: IL NUOVO LINGUAGGIO DI PROGRAMMAZIONE

MILK: IL NUOVO LINGUAGGIO DI PROGRAMMAZIONE

Nei microprocessori moderni, la gestione della memoria è basata sul principio di località, ovvero: se un programma ha bisogno di alcuni dati in un particolare punto della memoria, probabilmente avrà bisogno successivamente anche dei dati vicini. Ma questo principio viene meno nell’era dei Big Data: ogni processo infatti è solito ad elaborare pochi dati presi arbitrariamente tra i tantissimi presenti. In genere l’accesso alla memoria RAM è di per sé la parte più dispendiosa dell’elaborazione (escluso l’accesso alle memorie fisiche) e quindi accedervi ripetutamente rallenta di molto l’elaborazione di grosse quantità di dati. Questa settimana, un gruppo di ricercatori del MIT (Massachusetts Institute of Technology), alla conferenza internazionale sulle architetture parallele e tecniche di compilazione, ha presentato un nuovo linguaggio di programmazione, chiamato Milk, che permette di gestire la memoria più efficacemente in programmi che hanno bisogno di accedere a dati particolari in dataset di grosse quantità. Nei test di molti algoritmi, i programmi scritti in Milk si sono mostrati molto più veloci di quelli scritti nei linguaggi di programmazione fino ad oggi esistenti. Il linguaggio in questione aggiunge alcuni comandi a OpenMP (Open Multiprocessing), un estensione di linguaggi come C e Fortran che rende facile lo sviluppo per processori multicores. Con Milk, un programmatore dovrà scrivere solo alcune righe di codice in più per gestire alcune operazioni che richiedono iterazione in una grande quantità di dati, e il compilatore Milk deciderà come gestire la memoria efficacemente. In un programma Milk, quando un core deve richiedere un dato dalla memoria, non lo richiede (insieme ai dati adiacenti) ma aggiunge l’indirizzo di memoria da richiedere ad una lista. Quando le liste di ogni core sono lunghe abbastanza, vengono messe insieme e vengono raggruppati gli indirizzi di memoria vicini e ridistribuiti ai vari cores con questi raggruppamenti. In questo modo, ogni core riceverà più dati di cui ha bisogno con un solo accesso. Questo, è ciò che succede ad alto livello, ma nel dettaglio, le cose si fanno complicate. Nei processori moderni, ci sono più livelli di cache, ognuno più grande e lento dell’altro. Il compilatore Milk deve dunque tener conto non solo degli indirizzi di memoria, ma anche di quelli in cache in tutti i livelli. Deciderà anche quali indirizzi tenere e quali scartare dalla cache. Ecco cosa ha detto a riguardo Matei Zaharia, un professore alla Standfor University: “Molte applicazioni importanti al giorno d’oggi richiedono una grande quantità di dati, ma sfortunatamente, la costante crescita del gap di performance tra CPU e memoria porta a non utilizzare al massimo le prestazioni della CPU. Milk aiuta a ridurre questa differenza di prestazioni ottimizzando l’accesso alla memoria in alcuni dei costrutti di programmazione più frequenti.”

Pubblicato il 6 ott 2016

Potrebbero interessarti

BEGIN THE REVOLUTION... NASCE "SPEFFY", IL NUOVO MODO DI VIVERE LO SPORT

È “made in Casoria” SPEFFY, il primo prodotto nato dal gruppo Research&Technology della DASIR TECH, che sarà proposto al Rimini-Wellness del 28-31 maggio 2015, la più grande fiera italiana del Fitness, del Benessere e dello Sport. Speffy è un nuovo modo di vivere lo sport, un concetto innovativo, un’idea che risponde al desiderio sempre più forte di dinamicità e movimento, una vera e propria rivoluzione. È l’acronimo di SPort Everywhere Forever For You, lo sport che vuoi, dove vuoi e senza limiti di tempo. Un concetto nuovo, un cambio di mentalità per offrire lo sport su misura per te, per scegliere l’attività fisica che desideri, nel posto che preferisci e nel giorno che vuoi. Circuito di aggregazione e motore di ricerca per centri sportivi e di benessere, nazionali ed internazionali, che avranno a disposizione uno spazio web dedicato, ove presentare i servizi offerti.   Per i centri affiliati: PIU’ VISIBILITA’ - Spazio web personalizzabile e maggiore visibilità nel panorama sportivo, grazie al motore di ricerca “SpeffySearch”, ed alle campagne di marketing; PIU’ ENTRATE - Incremento delle utenze con conseguente aumento dei ricavi; COMPLETAMENTE GRATIS - Nessun costo di attivazione, nessun canone, supporto incluso.   Per gli utenti: SPORT CHE VUOI - Possibilità di variare tra le diverse attività sportive offerte dalla rete dei centri affiliati, senza scadenza temporale; TARIFFE ESCLUSIVE - Ingresso ai centri sportivi a prezzi vantaggiosi; COMPLETAMENTE GRATIS - Iscrizione gratuita al circuito;   Sport is Changing...Change Your Mind! BEGIN THE REVOLUTION www.speffy.com Segui i nostri canali social per tenerti aggiornato. [youtube]https://www.youtube.com/watch?v=GSYuF3t5d0I[/youtube]

IL RUOLO DEI COMPILATORI NELLE ARCHITETTURE RICONFIGURABILI

L'hardware riconfigurabile è di fatti una realtà in continua evoluzione e crescita. I dispositivi FPGA trovano sempre maggior impiego nelle diverse realtà tecnologiche, quali ad esempio datacenter e IoT. La riconfigurazione dell'hardware comporta diversi vantaggi in termini prestazionali. Infatti un FPGA può essere programmato in due modi diversi tali da consentire di rispettare gli stessi requisiti funzionali con performance diverse. Tra queste gioca un ruolo fondamentale il consumo di potenza, argomento ampiamente di attualità visto l'utilizzo sempre più frequente e frenetico di dispositivi mobili che necessitano di un'alimentazione tale da garantirne l'uso per almeno un'intera giornata. Tra le possibilità che un FPGA offre, in base alla sua caratteristica di riconfigurabilità, c'è quella di progettare un'architettura fortemente dinamica capace di riconfigurarsi continuamente in base al tipo di applicazione che deve essere processata. Semplificando con un esempio, si pensi alla possibilità di avere un elemento di processamento che si comporti come una GPU quando si elaborano applicazioni fortemente grafiche e come un processore in caso di elaborazioni che richiedono più logica di controllo che processamento massivo. Affinché tale architettura possa essere realizzata è necessario prevedere un meccanismo capace di collegare la parte software delle diverse applicazioni con quella hardware che è riconfigurabile. Tale strato è identificabile attraverso un compilatore che deve essere capace di tradurre nella maniera corretta ed ottimizzata le applicazioni in codice macchina, interpretabile dall'architettura sottostante che essendo riconfigurabile cambierà di volta in volta. Esistono delle toolchain di compilatori che consentono la realizzazione di questo modello. Tali toolchain prevedono sostanzialmente due componenti fondamentali che sono la parte di front-end e quella di back-end. In particolare, la prima consente la traduzione del codice sorgente in un linguaggio di rappresentazione intermedia, definito in genere dalla toolchain stessa. In questo modo è possibile ottenere la stessa rappresentazione per sorgenti provenienti da linguaggi di programmazione differenti. Ovviamente è necessario che la toolchain preveda un compilatore di front-end per ognuno dei linguaggi di programmazione sorgenti supportati. La parte di back-end invece, partendo dalla rappresentazione intermedia che viene prodotta dal componente di front-end, deve produrre del linguaggio macchina (sequenze di bit!) interpretabile dall'architettura sottostante. Dal momento che la nostra architettura è di tipo riconfigurabile è necessario implementare la parte di back-end del compilatore in maniera parametrica, ovvero capace di conoscere di volta in volta i parametri che descrivono in modo completo l'architettura per cui deve essere prodotto il codice macchina. Le piattaforme eterogenee e le architetture riconfigurabili saranno probabilmente la nuova frontiera da perseguire per ottimizzare le performance nei sistemi di elaborazione. Pertanto, in un certo senso, l'oggettiva distanza che esiste tra hardware e software potrebbe ridursi attraverso l'implementazione di piattaforme che richiedono hardware descritto via software e software tradotto in base all'hardware sottostante.

GOOGLE X LAB: CREA PELLE SINTETICA PER TESTARE IL BRACCIALE CHE RILEVA IL CANCRO

Molti di voi conoscono Google per i suoi infiniti servizi, che vanno dal più performante ed utilizzato motore di ricerca del web ai più moderni ed innovativi servizi in cloud, ma probabilmente non tutti sono a conoscenza del Google X Lab. Google X Lab è stata fino a poco fa una struttura segreta situata a Mountain View, nei pressi della sede principale di Google Inc. in un edificio a tre piani costruito con mattoni rossi. Nello specifico si tratta di un laboratorio di ricerca avanzata, dove ci lavorano circa 250 persone, tra cui scienziati, ricercatori, programmatori e ingegneri che portano avanti progetti di fantascienza destinati a cambiare il mondo. Tra i principali progetti di “X” troviamo i ben noti Google Glass, già presenti in commercio, le automobili con pilota automatico e le mongolfiere per la propagazione del wifi. Uno degli ultimi incantevoli progetti riguarda la prevenzione del cancro ed è venuto fuori in questi giorni grazie alla nota rivista americana The Atlantic. Il nuovo prodotto di “X” consiste in uno speciale bracciale capace di rilevare le cellule tumorali, il tutto grazie a delle nanoparticelle programmabili che il paziente ingerirà sotto forma di pillola, le quali riusciranno a trovare le cellule malate ancorandosi ad esse e provocando una reazione chimica capace di emettere una luce particolare rilevabile dal bracciale. Questa procedura consentirà quindi la rilevazione di cellule affette da cancro in maniera non invasiva. Per testare questo innovativo sistema gli scienziati stanno mettendo a punto una pelle sintetica quanto più simile a quella reale in modo tale da capire come quest’ultima filtra la luce emessa dalle nanoparticelle e che effetti ha sulla rilevazione da parte del bracciale. Di seguito mostriamo il video pubblicato da “The Atlantic”. [youtube]https://www.youtube.com/watch?v=7dzI_azZEGI[/youtube]