Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. gestire gli accessi alle risorse. gestire l eterogeneita
|
|
- Bruno Livio Bellini
- 5 anni fa
- Visualizzazioni
Transcript
1 Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito gestire gli accessi alle risorse gestire l eterogeneita gestire la dinamicita A. Murli 1 A. Murli 2 1
2 Situazione ideale NetSolve : obiettivi primari dati permettere l utilizzo a distanza di software matematico di alta qualita input output Ambiente software risultati mettere a disposizione l hardware per la relativa esecuzione Possibilmente in maniera facile La scelta delle risorse hardware e software e completamente a carico dell ambiente software A. Murli 3 Network Computational Server A. Murli 4 2
3 esempio Supponiamo che tra i problemi che NetSolve è in grado di risolvere ci sia la somma di due numeri c=a+b Possiamo utilizzare NetSolve ogni volta che abbiamo necessità di calcolare una somma A. Murli 5 esempio : somma di a=3 e b=7 #include <stdio.h> #include "netsolve.h" Chiamata a NetSolve per eseguire la somma int main( ){ float a,b,c; a=3; b=7; printf( Dati = %f %f \n, a, b); netsl("somma( )",&a,&b,&c); printf( Risultato = %f \n", c); } Per ora si osservi solo la semplicita di utilizzo A. Murli 6 3
4 problema NetSolve: componenti fondamentali come funziona NetSolve? s1 s2 NetSolve NS client library NS agent s3 s5 NS server s4 A. Murli 7 A. Murli 8 4
5 NetSolve agent (1) E la porta di accesso a un sistema NetSolve Esso gestisce un database con informazioni sulle risorse computazionali del sistema: performance hardware dei server software disponibile sui server statistiche sull uso dinamico dei server A. Murli 9 NetSolve agent (2) Il NS agent usa le informazioni del database per trovare e allocare le risorse di calcolo, bilanciare il carico tra i server tenere traccia di eventuali fallimenti A. Murli 10 5
6 NetSolve client library (1) Al momento della compilazione, l applicazione viene linkata alla NS client library Tramite le chiamate a tale libreria l applicazione accede alle risorse di calcolo di NetSolve senza alcuna conoscenza delle reti e dell hardware coinvolto NetSolve client library (2) La NS client library e disponibile con interfacce a: Fortran C Matlab Mathematica Excel (in corso di sviluppo) Octave Condor-G A. Murli 11 A. Murli 12 6
7 NetSolve server (1) Sono le risorse di calcolo dell intero sistema Essi possono essere: workstation cluster sistemi paralleli s3 s1 s5 s2 A. Murli 13 s4 NetSolve server (2) Un NS server puo essere: un server software (repository) (viene messo a disposizione solo il software residente sul server) un server hardware (viene messo a disposizione solo l hardware per l esecuzione di software residente sui server software) un server hardware e software (viene messo a disposizione sia l hardware che il software residente) A. Murli 14 7
8 NetSolve server (2) Overview del funzionamento: richiesta server s1 P xxx yyy t 0 B zzz P1 aaa P2 bbb richiesta s1 s2 s2 s3 Per fare parte di un sistema NetSolve, il server deve registrare sul database dell agente le proprie caratteristiche statiche: Performance P Latenza t 0 e bandwidth B della rete Software disponibile p1, p2, s3 s1 s5 s2 A. Murli 15 s4 s3 s4 s5 Il client invia la richiesta all agent con le caratteristiche del problema da svolgere A. Murli 16 8
9 Overview del funzionamento: scelta Overview del funzionamento: input SW s1 s2 s1 s2 HW s3 s5 s4 dati s3 sw s5 s4 L agent effettua la scelta del SW server (s2) e dell HW server (s3), e le comunica al client A. Murli 17 Il client invia direttamente al server HW i dati, dove viene inviato anche il software necessario dal server SW A. Murli 18 9
10 Overview del funzionamento: output Osservazione s1 s2 server risultati s3 s5 s4 client agent Client, agent e server sono entita distinte Il server HW invia direttamente al client i risultati A. Murli 19 possono risiedere in tre siti differenti e formano un sistema NetSolve A. Murli 20 10
11 Osservazione (2) Risorse computazionali di un NS system? NetSolve Esistono numerosi NetSolve system Sono indipendenti l uno dall altro Sono identificati dall agent A. Murli 21 Dato un NS system qual e l hardware disponibile? qual e il software disponibile? A. Murli 22 11
12 osservazione Informazioni sull hardware Il comando >> NS_config agente Ogni server, sia esso hw o sw e registrato sul database del NS agent Interrogare il NS agent! A. Murli 23 fornisce le informazioni sulle risorse hardware disponibili nel sistema identificato da agente agente e il nome della macchina su cui e in esecuzione l agente da interrogare A. Murli 24 12
13 esempio Informazioni sul software disponibile Per interrogare l agente in esecuzione su dgbeobi.uniparthenope.it server registrati sull agente dgbeobi.uniparthenope.it >> >> NS_config dgbeobi.uniparthenope.it AGENT: dgbeobi.uniparthenope.it ( ) SERVER: node01.uniparthenope.it ( ) (0 (0 failures) SERVER: node02.uniparthenope.it ( ) (0 (0 failures) SERVER: node03.uniparthenope.it ( ) (0 (0 failures) SERVER: node04.uniparthenope.it ( ) (0 (0 failures) SERVER: node05.uniparthenope.it ( ) (0 (0 failures) SERVER: node06.uniparthenope.it ( ) (0 (0 failures) SERVER: node07.uniparthenope.it ( ) (0 (0 failures) SERVER: node08.uniparthenope.it ( ) A. Murli (0 (0 failures) 25 >> >> Il comando >> NS_problems agente fornisce le informazioni sulle risorse software disponibili nel sistema identificato da agente agente e il nome della macchina su cui e in esecuzione l agente da interrogare A. Murli 26 13
14 Esempio Per conoscere i problemi disponibili sui server registrati sull agente dgbeobi.uniparthenope.it Voglio usare un sistema NetSolve Cosa devo fare? >> >> NS_problems dgebeobi.uniparthenope.it /BLAS-wrappers/Level3/dmatmul /BLAS-wrappers/Level3/zmatmul /BLAS/Level1/daxpy /BLAS/Level1/ddot /BLAS/Level1/zaxpy /BLAS/Level2/dgemv software disponibile sui /BLAS/Level3/dgemm server registrati sull agente in /BLAS/Level3/zgemm esecuzione su dgbeobi.uniparthenope.it A. Murli 27 NetSolve A. Murli 28 14
15 ESEMPIO 1 SOMMA TRA DUE NUMERI CASUALI Esempio : somma tra due numeri >> >> NS_problems dgbeobi.uniparthenope.it /BLAS-wrappers/Level3/dmatmul /BLAS-wrappers/Level3/zmatmul /librerie/operazioni/somma /BLAS/Level1/daxpy /BLAS/Level1/ddot /BLAS/Level1/zaxpy /BLAS/Level2/dgemv /BLAS/Level3/dgemm /BLAS/Level3/zgemm A. Murli 29 mediante NS_problems osservo che sul sistema NetSolve identificato dall agente dgbeobi.uniparthenope.it e disponibile una routine somma A. Murli 30 15
16 Informazioni su uno specifico sw Il comando >> NS_probdesc agente problema fornisce le informazioni sul problema disponibile nel sistema identificato da agente A. Murli 31 esempio >> >> NS_probdesc somma somma dgbeobi.uniparthenope.it somma somma somma somma due due numeri float float c=a+b c=a+b * 2 objects in in INPUT INPUT - input input 0: 0: Scalar Single Precision Real. Real. primo primo addendo - input input 1: 1: Scalar Single Precision Real. Real. secondo addendo * 1 objects in in OUTPUT - output 0: 0: Scalar Single Precision Real. Real. somma somma * Calling sequence from from C or or Fortran 3 arguments - Argument #0: #0: - pointer to to input input object #0 #0 (a) (a) - Argument #1: #1: - pointer to to input input object #1 #1 (b) (b) - Argument #2: #2: - pointer to to output object #0 #0 (c) (c) A. Murli 32 16
17 problema Il comando NS_probdesc fornisce le informazioni sul problema Come sottomettere il problema a NetSolve? Uso della funzione netsl ( ) Funzione netsl ( ) int netsl( problema ( ) ),, arg1,, arg2,,......) rit.: rit.: =0 =0 se se ok, ok, <0 <0 se se errore La funzione netsl invia una richiesta a NetSolve Ha come argomenti: il nome del problema gli argomenti così come specificato da NS_probdesc A. Murli 33 A. Murli 34 17
18 Esempio: codice del programma #include <stdio.h> Nome del problema #include "netsolve.h" int main( ){ float a,b,c; argomenti a=3; b=7; printf( Dati = %f %f \n, a, b); netsl("somma( )", &a, &b, &c ); printf( Risultato = %f \n", c); } A. Murli 35 Esempio: Compilazione del programma La funzione netsl ( ) fa parte della NetSolve client library Link alla NetSolve client library >> >> cc cc -o -o somma somma.c -I$(NETSOLVE_ROOT)/include -L$(NETSOLVE_ROOT)/lib/$(NETSOLVE_ARCH) -lnetsolve >> >> Attraverso le funzioni della NetSolve client library il nostro programma e in grado di accedere A. Murli a NetSolve 36 18
19 Scelta del sistema NetSolve Esistono numerosi sistemi NetSolve Prima dell esecuzione e necessario sceglierne uno Scelta dell agente Scelta dell agente csh oppure bash Definizione della variabile di ambiente NETSOLVE_AGENT A secondo della shell utilizzata... setenv NETSOLVE_AGENT dgbeobi.uniparthenope.it NETSOLVE_AGENT dgbeobi.uniparthenope.it export NETSOLVE_AGENT A. Murli 37 A. Murli 38 19
20 Esempio: esecuzione NetSolve: Parte II Dati Dati = Initializing NetSolve... Initializing NetSolve Complete L input viene mandato a NetSolve Sending Input of of Task Task 5 to to Server node01.uniparthenope.it PRODOTTO DI MATRICI CON LA SUBROUTINE DGEMM DI BLAS Downloading Output from from Server node02.uniparthenope.it Risultato = L output viene ricevuto da NetSolve A. Murli 39 A. Murli 40 20
21 Esempio: uso di blas Problema: si vuole effettuare il prodotto di due matrici di ordine n=4 C e qualcosa su NetSolve? NetSolve Info sul sw disponibile Comando NS_problems >> >> NS_problems dgbeobi.uniparthenope.it /BLAS-wrappers/Level3/dmatmul /BLAS-wrappers/Level3/zmatmul /BLAS/Level1/daxpy /BLAS/Level1/ddot /BLAS/Level1/zaxpy /BLAS/Level2/dgemv /BLAS/Level3/dgemm /BLAS/Level3/zgemm Routine DGEMM di BLAS per il prodotto di matrici A. Murli 41 A. Murli 42 21
22 Come funziona dgemm? (1) Come funziona dgemm? (2) Comando NS_probdesc input input 2: 2: Scalar Scalar Double Precision Real. Real..... alpha alpha ** 7 objects in in INPUT INPUT --input input 3: 3: Matrix Matrix Double Precision Real. Real. --input input 0: 0: Scalar Scalar Character. Matrix Matrix A TRANSA -- --input input 4: 4: Matrix Matrix Double Precision Real. Real. TRANSA specifies the the form form of of op( op( A )) to to be be used used in in Matrix Matrix B the the matrix matrix multiplication as as follows: --input input 5: 5: Scalar Scalar Double Precision Real. Real. TRANSA = 'N' 'N' or or 'n', 'n', op( op( A )) = A. A. beta beta TRANSA = 'T' 'T' or or 't', 't', op( op( A )) = A'. A'. --input input 6: 6: Matrix Matrix Double Precision Real. Real. TRANSA = 'C' 'C' or or 'c', 'c', op( op( A )) = A'. A'. Matrix Matrix C --input input 1: 1: Scalar Scalar Character. ** 1 objects in in OUTPUT TRANSB -- --output output 0: 0: Matrix Matrix Double Precision Real. Real. TRANSB specifies the the form form of of op( op( A )) to to be be used used in in Matrix Matrix C after after performing the the computation the the matrix matrix multiplication as as follows: ** Calling Calling sequence from from C or or Fortran TRANSB = 'N' 'N' or or 'n', 'n', op( op( A )) = A. A arguments TRANSB = 'T' 'T' or or 't', 't', op( op( A )) = A'. A'. --Argument #0: #0: TRANSB = 'C' 'C' or or 'c', 'c', op( op( A )) = A'. A'. --pointer to to input input object object #0 #0(transa). A. Murli A. Murli
23 Come funziona dgemm? (3) Argument #1: #1: --pointer to to input input object object #1 #1(transb) --Argument #2: #2: --number of of rows rows of of input input object object #3 #3(a) (a) --number of of rows rows of of input input object object #6 #6(c) (c) --Argument #3: #3: --number of of columns of of input input object object #4 #4(b) (b) --number of of columns of of input input object object #6 #6(c) (c) --Argument #4: #4: --number of of columns of of input input object object #3 #3(a) (a) --number of of rows rows of of input input object object #4 #4(b) (b) --Argument #5: #5: --pointer to to input input object object #2 #2(alpha) --Argument #6: #6: --pointer to to input input object object #3 #3(a) (a) --Argument #7: #7: --leading dimension of of input input object object #3 #3(a) (a) --Argument #8: #8: A. Murli 45 --pointer to to input input object object #4 #4(b) (b) Come funziona dgemm? (4) Argument #9: #9: --leading dimension of of input input object object #4 #4(b) (b) --Argument #10: #10: --pointer to to input input object object #5 #5(beta) --Argument #11: #11: --pointer to to input input object object #6 #6(c) (c) --pointer to to output output object object #0 #0(c) (c) --Argument #12: #12: --leading dimension of of input input object object #6 #6(c) (c) --leading dimension of of output output object object #0 #0(c) (c) >> >> A. Murli 46 23
24 Prodotto di matrici con NetSolve #include <stdio.h> #include <stdlib.h> #include "netsolve.h" int main(int argc, char **argv){ int i, j, n, info; double A[10][10], B[10][10], C[10][10], alpha, beta; char flag; n=2; for (i=0; i< n; i++){ for (j=0; j< n; j++){ A[i][j] = 1+(int) (10.0*rand()/(RAND_MAX+1.0)); B[i][j] = 1+(int) (10.0*rand()/(RAND_MAX+1.0)); }} alpha=1.e0; beta=0.e0; flag='n'; Definizione matrici A e B Inizializzazione argomenti DGEMM A. Murli 47 Prodotto matrici con NetSolve info = netsl("dgemm()", &flag, &flag, n, n, n, &alpha, A, 10, B, 10, &beta, C, 10); printf("matrice A\n"); for (i=0; i< n; i++){ for (j=0; j< n; j++){ printf(" %f ", A[i][j] ); } printf("\n"); } printf("matrice B\n"); for (i=0; i< n; i++){ for (j=0; j< n; j++){ printf(" %f ", B[i][j] ); } printf("\n"); } printf("matrice C\n"); for (i=0; i< n; i++){ for (j=0; j< n; j++){ printf(" %f ", C[i][j] ); } printf("\n"); } return 0; } Chiamata a netsl per uso DGEMM stampe A. Murli 48 24
25 esecuzione >> >> prodmatrici Initializing NetSolve... Initializing NetSolve Complete Sending Input Input of of Task Task to toserver node03.uniparthenope.it Downloading Output Output from fromserver node03.uniparthenope.it MATRICE A MATRICE B MATRICE C >> >> A. Murli 49 25
Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito. Situazione ideale. NetSolve : obiettivi primari
Compiti di un ambiente sw per il C.D. NetSolve: un ambiente per il calcolo distribuito gestire gli accessi alle risorse gestire l eterogeneita gestire la dinamicita http://icl.cs.utk.edu/netsolve Situazione
DettagliNetSolve: un ambiente per il calcolo distribuito.
NetSolve: un ambiente per il calcolo distribuito http://icl.cs.utk.edu/netsolve Compiti di un ambiente sw per il C.D. gestire gli accessi alle risorse gestire l eterogeneita gestire la dinamicita dati
Dettagliproblema NetSolve: un ambiente per il calcolo distribuito Come sommare due array di 10 elementi? IL PARALLELISMO IN NETSOLVE
problema NetSolve: un ambiente per il calcolo distribuito Come sommare due array di 10 elementi? IL PARALLELISMO IN NETSOLVE c i = a + b i i i =1,..,10 http://icl.cs.utk.edu/netsolve 1 2 1 Prima soluzione
DettagliI puntatori. Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore
I puntatori Un puntatore è una variabile che contiene l indirizzo di un altra variabile. puntatore...... L operatore & fornisce l indirizzo di un oggetto: p = &c; assegna a p l indirizzo di c, i.e., p
DettagliLa funzione main() (
Funzioni La funzione main() Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2 La funzione
DettagliPassare argomenti al programma
Passare argomenti al programma Quando si invoca un programma è possibile passare degli argomenti ad esso durante la chiamata. Gli argomenti ricevuti saranno stringhe (array di char) quindi l insieme di
DettagliC: panoramica. Violetta Lonati
C: panoramica Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica AA 2009/2010 Violetta Lonati
DettagliFondamenti di Informatica T-1 modulo 2
Fondamenti di Informatica T-1 modulo 2 Contenuti Parametri passati a linea di comando 2 Overview Il risultato del processo di compilazione/linking è un file eseguibile (un programma) Abbiamo visto almeno
DettagliLinguaggio C: Array Valeria Cardellini
Linguaggio C: Array Valeria Cardellini Corso di Calcolatori Elettronici A.A. 2018/19 Università degli Studi di Roma Tor Vergata Dipartimento di Ingegneria Civile e Ingegneria Informatica Array in C q Dichiarazione
DettagliSistemi Operativi (M. Cesati)
Sistemi Operativi (M. Cesati) Compito scritto del 9 luglio 2012 Nome: Matricola: Corso di laurea: Cognome: Crediti da conseguire: 5 6 9 Scrivere i dati richiesti in stampatello. Al termine consegnare tutti
DettagliIntroduzione al linguaggio C Primi programmi
Introduzione al linguaggio C Primi programmi Violetta Lonati Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
Dettagliprova.c #include <stdio.h> char funzione(char); codice oggetto del main()
prova.c #include char funzione(char); {char c= a ; printf( Ecco il carattere: %c\n,c); c=funzione(c); printf( Ecco il carattere modificato: %c\n,c); char funzione(char tmp) {if(tmp
DettagliSistemi Operativi 1. Lezione III: Concetti fondamentali. Mattia Monga. 7 marzo 2008
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliSistemi Operativi 1. Mattia Monga. 7 marzo Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia
1 Dip. di Informatica e Comunicazione Università degli Studi di Milano, Italia mattia.monga@unimi.it 7 marzo 2008 1 c 2008 M. Monga. Creative Commons Attribuzione-Condividi allo stesso modo 2.5 Italia
DettagliGli array Libro cap. 6 Moreno Marzol a Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna
Gli array Libro cap. 6 Moreno Marzolla Dipartimento di Informatica Scienza e Ingegneria (DISI) Università di Bologna http://www.moreno.marzolla.name/ Array 2 Ringraziamenti prof. Stefano Mizzaro, Università
DettagliAddendum alle chiamate di sistema per la gestione processi. E Mumolo
Addendum alle chiamate di sistema per la gestione processi E Mumolo Definiamo un processo proc.c che scrive l'argomento passato in linea: void main(int argc, char *argv[]){ printf("sono il processo %s\n",
DettagliUnità Didattica 4 Linguaggio C. Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo.
Unità Didattica 4 Linguaggio C Vettori. Puntatori. Funzioni: passaggio di parametri per indirizzo. 1 Vettori Struttura astratta: Insieme di elementi dello stesso tipo, ciascuno individuato da un indice;
DettagliIl Software programmabili programma algoritmo
Il Software La proprietà fondamentale dei calcolatori e` quella di essere programmabili cioè in grado di svolgere compiti diversi a seconda delle istruzioni fornite dall utente mediante un programma, ossia
DettagliLa Programmazione. Cos è la programmazione? Concetti preliminari
La Programmazione Cos è la programmazione? Concetti preliminari 1 Sommario La programmazione, questa sconosciuta Programmiamo Macchine Astratte Linguaggi di basso e alto livello e loro implementazione
DettagliLezione 5. Alcuni esempi di distribuzione. Prodotto matrici in parallelo. Prodotto C=βC+αAB su sistema a memoria distribuita
Lezione 5 Prodotto C=βC+αAB su sistema a memoria distribuita Consideriamo un sistema parallelo a memoria distribuita Es. Cluster, sistema MPP Ogni processore ha una sua memoria privata La comunicazione
DettagliLaboratorio reti AA 2008/2009. Dott. Matteo Roffilli Ricevimento in ufficio dopo la lezione
Laboratorio reti AA 2008/2009 Dott. Matteo Roffilli roffilli@csr.unibo.it Ricevimento in ufficio dopo la lezione 1 Laboratorio reti AA 2008/2009 Per esercitarvi fate SSH su: alfa.csr.unibo.it si-tux00.csr.unibo.it.
DettagliPrimi programmi in C
Università degli studi di Milano Dipartimento di Scienze dell Informazione Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica In breve Uso del compilatore gcc Struttura di un programma
Dettagliarray: vettori, matrici e stringhe
array: vettori, matrici e stringhe Vettori Un vettore (array) è una sequenza di variabili tutte dello stesso tipo che occupano locazioni di memoria contigue. Dichiarazione di un vettore di oggetti del
DettagliFunzioni. Il modello console. Interfaccia in modalità console
Funzioni Interfaccia con il sistema operativo Argomenti sulla linea di comando Parametri argc e argv Valore di ritorno del programma La funzione exit Esercizio Calcolatrice 2, presente in tutti i programmi
DettagliJAVA. import java.util.*; #include <stdio.h> public static class test { int variable; private int variable; int main (int argc, char *argv[]) {
JAVA C import javautil*; public static class test { private int variable; public void main (String[] args) { variable = 0; Systemoutprintln( Variable is: + variable); #include int variable; int
DettagliLezione 8: Stringhe ed array multidimensionali
Lezione 8: Stringhe ed array multidimensionali Vittorio Scarano Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione AVVISO: la lezione di laboratorio di 28/5 non si
DettagliProdotto Matrice - Vettore in MPI II Strategia
Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Prodotto Matrice - Vettore in MPI II Strategia Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio
DettagliLezione 21 e 22. Valentina Ciriani ( ) Laboratorio di programmazione. Laboratorio di programmazione. Lezione 21 e 22
Lezione 21 e 22 - Allocazione dinamica delle matrici - Generazione di numeri pseudocasuali - Funzioni per misurare il tempo - Parametri del main - Classificazione delle variabili Valentina Ciriani (2005-2008)
DettagliIl linguaggio C. Puntatori e dintorni
Il linguaggio C Puntatori e dintorni 1 Puntatori : idea di base In C è possibile conoscere e denotare l indirizzo della cella di memoria in cui è memorizzata una variabile (il puntatore) es : int a = 50;
DettagliIntroduzione al C. Lez. 1 Elementi. Rossano Venturini
Introduzione al C Lez. 1 Elementi Rossano Venturini rossano@di.unipi.it Pagine del corso http://didawiki.cli.di.unipi.it/doku.php/informatica/all-b/start http://algoritmica.spox.spoj.pl/alglab2013 Lezioni
DettagliUso avanzato dei puntatori Allocazione dinamica della memoria
Uso avanzato dei puntatori Allocazione dinamica della memoria Violetta Lonati Università degli studi di Milano Dipartimento di Informatica Laboratorio di algoritmi e strutture dati Corso di laurea in Informatica
DettagliProgrammazione I. De Marco - Zizza. De Prisco - Senatore. Ritirato. Appello di Luglio (prima prova) 18 luglio Cognome: Nome: Matricola:
Programmazione I Appello di Luglio (prima prova) 18 luglio 2014 Cognome: Nome: Matricola: Indicare la classe di appartenenza: De Marco - Zizza De Prisco - Senatore Riservato alla commissione d esame 1
DettagliL AMBIENTE CODE BLOCKS E L IO
L AMBIENTE CODE BLOCKS E L IO Il primo programma #include main() { printf("ciao Mondo!"); } Il file deve essere salvato con estensione.c Il primo programma in C++ #include using
DettagliLezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit
Lezione 9: Puntatori a funzioni. Tipi enumerativi e orientati ai bit Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione
DettagliSISTEMI OPERATIVI. Processi in Linux. Giorgio Giacinto Sistemi Operativi
SISTEMI OPERATIVI Processi in Linux 2 Creazione di processi concorrenti» La creazione di un processo figlio consente di far eseguire alcune funzionalità del programma in modo concorrente» Opzione 1 il
DettagliIntroduzione alla programmazione in C
Introduzione alla programmazione in C Testi Consigliati: A. Kelley & I. Pohl C didattica e programmazione B.W. Kernighan & D. M. Ritchie Linguaggio C P. Tosoratti Introduzione all informatica Materiale
DettagliDati due punti sul piano calcolare la loro distanza
Introduzione al C Primo esempio in C Dati due punti sul piano calcolare la loro distanza Soluzione: la distanza fra due punti si calcola secondo il teorema di Pitagora, con la formula: y Distanza = (lato12
DettagliSi possono applicare solo a variabili (di tipi interi, floating o puntatori), ma non a espressioni generiche (anche se di questi tipi).
Operatori di incremento e decremento: ++ e -- ++ e -- sono operatori unari con la stessa priorità del meno unario e associatività da destra a sinistra. Si possono applicare solo a variabili (di tipi interi,
DettagliPrimi passi col linguaggio C
Andrea Marin Università Ca Foscari Venezia Laurea in Informatica Corso di Programmazione part-time a.a. 2011/2012 Come introdurre un linguaggio di programmazione? Obiettivi: Introduciamo una macchina astratta
DettagliNon ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliOgni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo.
Ogni variabile in C è una astrazione di una cella di memoria a cui corrisponde un nome, un contenuto e un indirizzo. int a = 5; a 5 α=&a Esistono in C particolari variabili dette puntatori che possono
DettagliInput/output da file I/O ANSI e I/O UNIX FLUSSI E FILE FLUSSI FLUSSI di TESTO FLUSSI BINARI FILE
Input/output da file Il linguaggio C non contiene istruzioni di I/O, in quanto tali operazioni vengono eseguite tramite funzioni di libreria standard. Questo approccio rende estremamente flessibile e potente
DettagliLezione 5: Introduzione alla programmazione in C
Lezione 5: Introduzione alla programmazione in C Laboratorio di Elementi di Architettura e Sistemi Operativi 4 Aprile 2012 Introduzione al C C vs. Java Java: linguaggio ad oggetti C: linguaggio procedurale
DettagliArray. Aggragati di variabili omogenee...
Array Aggragati di variabili omogenee... Cosa è un array È un insieme di variabili omogenee identificato da un indice, ad esempio Se devo leggere 1 numeri dallo standard input e memorizzarli all'interno
DettagliProdotto Matrice - Vettore in MPI - III Strategia
Facoltà di Ingegneria Corso di Studi in Ingegneria Informatica Esercitazione di Calcolo Parallelo Prodotto Matrice - Vettore in MPI - III Strategia Anno Accademico 2010/2011 Prof.ssa Alessandra D'alessio
DettagliAllocazione dinamica della memoria
Allocazione dinamica della memoria Allocazione statica: limiti Per quanto sappiamo finora, in C le variabili sono sempre dichiarate staticamente la loro esistenza deve essere prevista e dichiarata a priori
DettagliArray n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 8 Aprile 2016 Logistica Laboratori Lunedì (3.30pm 6pm) EG7 (No portatili e basta) L26.1.3
DettagliIEIM Esercitazione II Elementi di programmazione C. Alessandro A. Nacci -
IEIM 2017-2018 Esercitazione II Elementi di programmazione C Alessandro A. Nacci alessandro.nacci@polimi.it - www.alessandronacci.it 1 Esercizio 4 Dati un numero, stampare il primo numero successivo pari
DettagliARRAY DI PUNTATORI. ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori
ARRAY DI PUNTATORI Non ci sono vincoli sul tipo degli elementi di un vettore Possiamo dunque avere anche vettori di puntatori Ad esempio: char * stringhe[4]; definisce un vettore di 4 puntatori a carattere
DettagliProgrammazione I (Classe 1)
Programmazione I (Classe 1) Terzo Appello (prima prova) 9 Settembre 2016 Docenti: De Prisco - Deufemia - Zizza Cognome: Nome: Matricola: Ritirato 1 Esercizi (leggere attentamente il testo prima di scrivere
DettagliCorso sul linguaggio C
Corso sul linguaggio C Modulo 1 1.1 Istruzioni semplici 1 Prerequisiti Saper progettare algoritmi Saper descrivere algoritmi (NLS, ddf) Conoscere il concetto di espressione 2 1 Introduzione In questa lezione
DettagliUniversità degli Studi di Ferrara
Università degli Studi di Ferrara Corso di Laurea in Matematica - A.A. 2018-2019 Programmazione Lezione 10 Esercizi in C Docente: Michele Ferrari - michele.ferrari@unife.it Nelle lezioni precedenti Abbiamo
DettagliFunzioni con numero variabile di parametri: Funzioni Variadiche in C. Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati
Funzioni con numero variabile di parametri: Funzioni Variadiche in C Massimo Benerecetti Laboratorio di Algoritmi e Strutture Dati Funzioni «variadiche» Le funzioni che ricevono un numero variabile di
Dettagliint main(){ int numero; /* numero di cui voglio calcolare il fattoriale */ int fatt; /* memorizzo il fattoriale di numero */ int somma=0;
Problema: CALCOLARE LA SOMMA DEI FATTORIALI DEI PRIMI 100 NUMERI NATURALI 0!+1!+2! + 99! #include int fattoriale(int); Calcolo fattoriale int main(){ int numero; /* numero di cui voglio calcolare
DettagliEsercitazione 5. Procedure e Funzioni Il comando condizionale: switch
Esercitazione 5 Procedure e Funzioni Il comando condizionale: switch Comando: switch-case switch (espressione) { /* espressione deve essere case costante1: istruzione1 di tipo int o char */ [break]; case
DettagliCalcolo Scientifico. a.a Installazione e utilizzo della libreria BLAS.
Calcolo Scientifico a.a. 2007-2008 Installazione e utilizzo della libreria BLAS Dove scaricare BLAS? http://www.netlib.org È un repository, una collezione di software matematico, papers e database Realizzato
DettagliInformatica A (per gestionali) A.A. 2004/2005. Esercizi C. Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo
Informatica A (per gestionali) A.A. 2004/2005 Esercizi C Funzioni: variabili e tipi locali e globali, passaggio parametri per valore, prototipo Indice 1 Funzioni: passaggio di parametri per valore, variabili
DettagliLe strutture dati elementari (I parte) Gianpiero Cabodi Dip. Automatica e Informatica Politecnico di Torino
Le strutture dati elementari (I parte) Gianpiero Cabodi Dip. Automatica e Informatica Politecnico di Torino Progettare un programma Scegliere una adeguata struttura dati per: codificare le informazioni
DettagliI cicli. Iterazioni Calcolo della media Istruzioni break e continue
I cicli Iterazioni Calcolo della media Istruzioni break e continue Ciclo while p Vero A while() ; Falso Esegue una istruzione mentre una condizione è verificata Programmazione
Dettagli2 Operatori matematici e costrutto if
Questa dispensa propone esercizi sulla scrittura di algoritmi, in linguaggio C, utili alla comprensione delle operazioni tra numeri e del costrutto condizionale if. Si introducono anche le due funzioni
DettagliINTRODUZIONE AL C++ CLASSIFICAZIONE
INTRODUZIONE AL C++ 1 CLASSIFICAZIONE LINGUAGGI CHE OPERANO SU DATI OMOGENEI: FORTRAN77, LINGUAGGIO C, LINGUAGGIO C++, PASCAL: operano solo su DATI OMOGENEI (integer, float, double), senza classi e puntatori;
DettagliLezione 11: Liste a Puntatori e Input/Output
Lezione 11: Liste a Puntatori e Input/Output Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Richiamo: strutture (struct)
DettagliArray n-dimensionali e tipi di dati strutturati
Array n-dimensionali e tipi di dati strutturati Marco D. Santambrogio marco.santambrogio@polimi.it Ver. aggiornata al 5 Novembre 2013 Info di servizio Demo 1mo compitino In LM5 @ 12pm - venerdì 8 Nov In
Dettagli1
Manuali di C Linguaggio C B. W. Kernigan, D. M. Ritchie Jackson La guida completa al C H. Schildt McGraw-Hill Fondamenti di Informatica 1 Linguaggio C Creato nei primi anni 70 per sviluppare il S.O. Unix
DettagliLe strutture. Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune.
Le strutture Una struttura C è una collezione di variabili di uno o più tipi, raggruppate sotto un nome comune. Dichiarazione di una struttura: struct point { int x; int y; }; La dichiarazione di una struttura
DettagliCorso sul linguaggio Java
Corso sul linguaggio Java Modulo JAVA2 2.1- Funzioni 1 Prerequisiti Programmazione elementare in Java Tecnica top-down Concetto matematico di funzione Compilazione e link di programmi Esecuzione di funzioni
DettagliCompilazione separata. Come realizzare correttamente un piccolo progetto su piu' file
Compilazione separata Come realizzare correttamente un piccolo progetto su piu' file 1 Programmi C su più file Tutti i programmi che abbiamo visto finora erano composti da un unico file.c Nel caso di programmi
DettagliLe funzioni, e le istruzioni di input/output
Linguaggio C Le funzioni, e le istruzioni di input/output 1 Funzioni! Sono sottoprogrammi per svolgere un particolare compito! Sequenze di istruzioni (raggruppate tramite le parentesi graffe) alle quali
DettagliCompilazione separata. Come realizzare correttamente un piccolo progetto su piu' file
Compilazione separata Come realizzare correttamente un piccolo progetto su piu' file 1 Programmi C su più file Tutti i programmi che abbiamo visto finora erano composti da un unico file.c Nel caso di programmi
DettagliBurocrazia: Primi passi con il linguaggio C. Diversi tipi di linguaggio. Un solo linguaggio
Burocrazia: Università degli Studi di Ferrara Laurea triennale in Matematica Corso di Programmazione Primi passi con il linguaggio C Filippo Mantovani 1 Ottobre 009 Per ora nessun cambio di orario e/o
DettagliProgetto II: Il linguaggio C e le chiamate di sistema sui processi
Progetto II: Il linguaggio C e le chiamate di sistema sui processi Scrivere un programma C psstat.c che svolga quanto segue: se invocato senza parametri deve stampare su standard output un istogramma orizzontale
DettagliIngresso ed Uscita in C. Informatica 1 / 15
Ingresso ed Uscita in C Informatica 1 / 15 Input e Output in C Linguaggio C: progettato per essere semplice e con poche istruzioni Non esistono istruzioni di ingresso / uscita (I/O)!!! Ingresso ed uscita
DettagliFattorizzazione e curve ellittiche polinomi di II, II e IV grado
Fattorizzazione e curve ellittiche polinomi di II, II e IV grado Di Cristiano Armellini (cristiano.armellini@alice.it) Torniamo ancora una volta al problema della fattorizzazione p=ab e descriviamo un
DettagliLaboratorio 1. 20/21 febbraio 2019
Laboratorio 1. 20/21 febbraio 2019 Attivitá Professionalizzante A.A. 2018/19 Premessa Si lavora a coppie, sui PC del laboratorio. Al termine degli esercizi, ogni copia scrive un breve report e me lo invia
DettagliTipi di dati strutturati e Linguaggio C. Record o strutture Il costruttore struct in C
Tipi di dati strutturati e Linguaggio C Record o strutture Il costruttore struct in C Dati strutturati Record Un record o struttura è una struttura dati ottenuta aggregando elementi di tipo diverso che
DettagliPuntatori. Un puntatore contiene un numero che indica la locazione di memoria dove è presente la variabile puntata
Puntatori int i = 10; int * pi = &i; pi i = 10 116 int * pi = pi contiene un informazione che mi permette di accedere ( puntare ) ad una variabile intera Un puntatore contiene un numero che indica la locazione
DettagliTipi di dato strutturati: Array
Tipi di dato strutturati: Array I tipi di dato visti finora sono tutti semplici: int, char, float,... ma i dati manipolati nelle applicazioni reali sono spesso complessi (o strutturati) Gli array sono
DettagliNUMERI CASUALI E SIMULAZIONE
NUMERI CASUALI E SIMULAZIONE NUMERI CASUALI Usati in: statistica programmi di simulazione... Strumenti: - tabelle di numeri casuali - generatori hardware - generatori software DESCRIZIONE DEL PROBLEMA
DettagliAllocazione Dinamica. Allocazione Statica. malloc() La funzione malloc()
Allocazione Statica Finora abbiamo visto che le variabili sono sempre definite staticamente. Questo è un limite perché la loro esistenza deve essere prevista e dichiarata a priori. In particolare per variabili
DettagliAlcuni strumenti per lo sviluppo di software su architetture MIMD
Alcuni strumenti per lo sviluppo di software su architetture MIMD Calcolatori MIMD Architetture SM (Shared Memory) OpenMP Architetture DM (Distributed Memory) MPI 2 MPI : Message Passing Interface MPI
DettagliPrimo programma in C
Primo programma in C Struttura minima di un file C Applicazioni C in modo console Struttura del programma Commenti Direttive #include Definizione di variabili Corpo del main 2 Struttura minima di un file
DettagliTipi di dato strutturati: Array
Tipi di dato strutturati: I tipi di dato visti finora sono tutti semplici: int, char, float,... ma i dati manipolati nelle applicazioni reali sono spesso complessi (o strutturati) Gli array sono uno dei
DettagliCorso sul linguaggio C Modulo Tipi di dato
Corso sul linguaggio C Modulo 1 1.3 - Tipi di dato 1 Prerequisiti Concetto di espressione Cenni sulla struttura del calcolatore 2 1 Introduzione In questa lezione si esaminano i tipi di dato. I tipi di
DettagliAllocazione Dinamica della Memoria
Allocazione Dinamica della Memoria Elisa Marengo Università degli Studi di Torino Dipartimento di Informatica Elisa Marengo (UNITO) Allocazione Dinamica della Memoria 1 / 10 Scelta delle variabili Quando
DettagliLezione 22: Input/Output e Files
Lezione 22: Input/Output e Files Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università di Salerno Struttura della lezione Esami: date e modalità Funzioni di libreria standard
DettagliUn esempio per cominciare. Inizio e fine di un programma. La somma di 3 numeri PASCAL ANSI C. Regole sintattiche
Un esempio per cominciare La somma di 3 numeri Vs ANSI PROGRAM SOMMA; VAR A,B,,d:REAL; BEGIN (* Inizializzazione di A,B, *) READLN(); A:5.; B:7.; (* alcolo della somma tra A,B e *) d:a+b+; (* Stampa del
DettagliLaboratorio di Informatica I
Struttura della lezione Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Una funzione per i numeri di Fibonacci
DettagliEsercizio 2: Algebra dei Puntatori e Puntatori a Puntatori
Esercizio 2: Algebra dei Puntatori e Puntatori a Puntatori Salvatore Mandrà 7 Ottobre 2008 1 Esercizio L esercizio prevede l implementazione di funzioni per il prodotto di una matrice per un vettore, attraverso
DettagliPREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii
Sommario PREFAZIONE... IX Lo scopo di questo libro... ix La metodologia di insegnamento... ix Panoramica sul libro... xiii CAPITOLO 1: INTRODUZIONE AI COMPUTER, A INTERNET E AL WEB... 1 1.1 Introduzione...
DettagliLezione 6: Array e puntatori
Lezione 6: Array e puntatori Vittorio Scarano Laboratorio di Informatica I Corso di Laurea in Informatica Università degli Studi di Salerno Struttura della lezione Una funzione per i numeri di Fibonacci
DettagliFunzioni. Unità 1. Domenico Daniele Bloisi. Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR
Corso di Fondamenti di Informatica Ingegneria delle Comunicazioni BCOR Ingegneria Elettronica BELR Domenico Daniele Bloisi Docenti Parte I prof. Silvio Salza salza@dis.uniroma1.it http://www.dis.uniroma1.it/~salza/fondamenti.htm
Dettagli