Riassunto analitico
L'obiettivo di questo lavoro di tesi è sviluppare un'infrastruttura di calcolo distribuita per supportare l'elaborazione di dati scientifici di grandi dimensioni mettendo insieme diverse risorse di elaborazione distribuite in tutta Europa. Una serie di specifiche tecniche comuni è stata derivata per fornire una vista di alto livello dell'architettura generale e fornire dettagli sugli elementi essenziali per la realizzazione dell'infrastruttura stessa, come use-case scientifici, tecnologie emergenti e nuove metodologie di elaborazione. Il lavoro è stato alimentato dalla necessità di fornire una soluzione scalabile, gestire nuove tecnologie di memorizzazione, come quelle basate su “non-volatile chip”, fornire un accesso immediato ai dati, migliorare l'esperienza degli utenti promuovendo la convergenza tra High Performance e Cloud Computing.Oggigiorno il modello di accesso principale per i sistemi HPC su larga scala si basa sulla pianificazione di lavori “batch”. Questo approccio non è collegato a un requisito della comunità scientifica computazionale, ma riflette il problema predominante nella gestione dei sistemi HPC, ovvero la massimizzazione dell'utilizzo delle risorse. Viceversa, la situazione si differenzia quando si prendono in considerazione workstation personali o server a memoria condivisi, dove le condivisioni interattive di timesharing sono la norma. Il nostro disegno, che propone un nuovo paradigma chiamato "Interactive Computing", si riferisce alla capacità di un sistema di supportare massicci carichi di lavoro pur consentendo l'interruzione al volo delle applicazioni. L'interazione in tempo reale di un utente con un runtime del programma è motivata da vari fattori, come la necessità di stimare lo stato di un programma o la sua tendenza futura, di accedere ai risultati intermedi e di indirizzare il calcolo modificando i parametri di input o le condizioni al contorno del problema. All'interno della comunità delle neuroscienze, uno dei casi scientifici presi in considerazione in questo lavoro, le applicazioni più utilizzate (es. simulazione dell'attività cerebrale, rendering e visualizzazione di grandi volumi di immagini, esperimenti di connettività, etc.) implicano che il runtime possa essere modificato interattivamente in modo che l'utente possa acquisire informazioni su parametri, comportamenti e potenziali margini di ottimizzazione. Uno scenario di utilizzo tipico per il calcolo interattivo riguarda la visualizzazione, l'elaborazione e la riduzione di grandi quantità di dati, in particolare laddove l'elaborazione non possa essere standardizzata o implementata in un flusso di lavoro statico. I dati possono essere generati mediante simulazione o raccolti da esperimenti e/o osservazioni. In entrambi i casi, durante l'analisi lo scienziato esegue un processo interattivo di successive riduzioni e produzione di visualizzazioni di dati che possono includere anche elaborazioni complesse come convoluzione, filtraggio, clustering, ecc. Questo tipo di elaborazione può essere facilmente parallelizzato per sfruttare le risorse HPC , ma sarebbe chiaramente controproducente interrompere una sessione utente in passaggi interattivi separati intervallati da processi batch poiché la loro pianificazione rallenterebbe l'intera esecuzione. Oltre a ciò, in molti campi applicativi, gli scienziati computazionali stanno iniziando a utilizzare framework interattivi e linguaggi di scripting per integrare l'applicazione di elaborazione dati e di elaborazione più tradizionale in esecuzione in batch, ad es. l'uso di R, Stata, Matlab / Octave o Jupyter Notebook solo per citarne alcuni. Questo lavoro è stato supportato dal progetto Human Brain Project (www.humanbrainproject.eu) e Cineca (www.hpc.cineca.it), il più grande centro di calcolo in Italia.
|
Abstract
The goal of this thesis work is to develop a distributed HPC infrastructure to support the processing of very large scientific data sets federating different compute and data resources across Europe. A set of common technical specifications has been derived to provide a high-level specification of the overall architecture and give details of key architectural elements that are essential for realizing the infrastructure, including scientific cases, emerging technologies and new processing methodologies. The work has been mainly fueled by the need to provide a scalable solution, handle new memory technologies, such as those based on non-volatile chips, provide easy access to data, improve user experience by fostering the convergence between traditional High Performance and Cloud Computing utilization models. Nowadays the main access model for large scale HPC systems is based on the scheduling of batch jobs. This approach is not connected with a requirement from the computational science community, but it reflects the predominant issue in the management of the HPC systems: the maximization of resource utilisation. Conversely, the situation differs when taking into consideration personal workstations or shared memory servers, where timesharing interactive executions are the norm. Our design, which proposes a new paradigm called “Interactive Computing” refers to the capability of a system to support massive computing workloads while permitting on-the-fly interruption by the user. The real-time interaction of a user with a program runtime is motivated by various factors, such as the need to estimate the state of a program or its future tendency, to access intermediate results, and to steer the computation by modifying input parameters or boundary conditions. Within the neuro-science community, one of the scientific cases taken in consideration in this work, most used applications (i.e. brain activity simulation, large image volume rendering and visualization, connectomics experiment) imply that the runtime can be modified interactively so that the user can gain insight on parameters, algorithmic behaviour, and optimization potentials. The commonly agreed central components of interactive computing are, on the front-end, a sophisticated user interface to interact with the program runtime and, on the back-end, a separated steerable, often CPU and memory consuming application running on an HPC system. A typical usage scenario for interactive computing regards the visualization, the processing, and the reduction of large amounts of data, especially where the processing cannot be standardized or implemented in a static workflow. The data can be generated by simulation or harvested from experiment or observation. In both cases, during the analysis the scientist performs an interactive process of successive reductions and production of data views that may include even complex processing like convolution, filtering, clustering, etc. This kind of processing could be easily parallelized to take advantage of HPC resources, but it would become clearly counterproductive to break-down a user session into separate interactive steps interspersed by batch jobs as their scheduling would delay the entire execution degrading the user experience. Besides that, in many application fields, the computational scientists are starting to use interactive frameworks and scripting languages to integrate the more traditional compute and data processing application running in batch, e.g. the use of R, Stata, Matlab/Octave or Jupyter Notebook just to name few. The work has been supported by Human Brain Project (www.humanbrainproject.eu) and Cineca (www.hpc.cineca.it), the largest supercomputing centre in Italy.
|