Programmazione Funzionale e Parallela

Corso di Laurea in Ingegneria Informatica e Automatica - A.A. 2021-2022

Home | Avvisi | Diario lezioni | Esercitazioni | Materiale didattico | Esami | Valutazioni studenti

Esercitazione del 24 maggio 2021

Istruzioni per l’esercitazione:

Per maggiori informazioni fate riferimento al regolamento delle esercitazioni.

Domande

Rispondere alle seguenti domande con vero=V o falso=F.

Domanda 1

Se si riduce di un fattore 2 il tempo di esecuzione di una porzione di codice che prende il 90% del tempo di esecuzione si ottiene uno speedup complessivo pari a 1.33.

Domanda 2

Se l è una lista di Int, il seguente frammento di codice Scala restituisce un valore di tipo Any:

l match {
    case Nil => List(0)
    case h::t => h
}

Domanda 3

Secondo la tassonomia di Flynn, un computer convenzionale è un’istanza del modello MISD.

Domanda 4

Un codice computation-intensive riesce a sfruttare meglio il parallelismo di un codice data-intensive.

Domanda 5

La classe Option[T] viene usata quando serve modellare nel dominio di output di una funzione l’assenza di un valore.

Domanda 6

Una classe case fornisce automaticamente un metodo compareTo che consente di confrontare se un elemento è maggiore di un altro.

Domanda 7

Una classe case fornisce automaticamente un metodo equals che consente di confrontare l’uguaglianza di due elementi della classe.

Domanda 8

Un metodo implicit serve tipicamente per convertire un oggetto da un tipo a un altro.

Domanda 9

In Scala non è possibile avere variabili static in una classe come in Java.

Domanda 10

L’espressione Scala a zip b combina gli elementi di a con quelli corrispondenti di b, purché abbiano lo stesso tipo.

Domanda 11

L’espressione l.sum funziona su qualsiasi tipo di lista l.

Domanda 12

Una funzione che restituisce un’altra funzione è una funzione di ordine inferiore.

Domanda 13

Una chiusura è una funzione in cui il corpo fa riferimento ad almeno un argomento che non appare nella lista dei parametri.

Domanda 14

L’espressione:

for {
	i <- 0 until 10
} yield i

denota una collezione.

Domanda 15

La funzione apply non può essere definita in un object.

Domanda 16

La funzione apply consente di applicare argomenti tra parentesi direttamente su un riferimento a oggetto istanza di una classe.

Domanda 17

Una classe case definisce automaticamente un metodo apply.

Domanda 18

Un trait in Scala è l’analogo di una classe Java.

Domanda 19

L’espressione if (true) 3.14 else false ha come tipo Any.

Domanda 20

L’espressione (x:Int) => 2*x+y è una chiusura, assumendo che y sia visibile nel punto in un cui appare.

Domanda 21

In OpenCL, un NDRange è una griglia logica su cui vengono istanziati work item che sono a loro volta istanze di kernel.

Domanda 22

In OpenCL, un kernel è una particolare funzione scritta in un dialetto del C che specifica il comportamento parallelo di un’applicazione.

Domanda 23

In OpenCL, non è necessario copiare i dati dalla memoria host alla memoria device e viceversa se il device in questione è la CPU.

Domanda 24

In OpenCL, il codice compilato di un kernel può essere generato a tempo di esecuzione.

Domanda 25

In AVX, è sempre possibile caricare dati da memoria in un packed integer __m256i usando _mm256_load_si256.

Domanda 26

In SSE è possibile sommare due vettori contenenti 4 interi di 32 bit ciascuno con una singola istruzione _mm_add_epi16.

Domanda 27

Il loop unrolling è una tecnica di ottimizzazione che viene usata in modo preparatorio per agevolare la vettorizzazione.

Domanda 28

In OpenCL la global dimension non deve essere necessariamente un multiplo della local dimension

Domanda 29

Con gli opportuni livelli di ottimizzazione, compilatori come gcc emettono automaticamente codice SSE per ottimizzare i programmi.

Domanda 30

E’ necessario includere la header intrin.h per programmare in SSE/AVX.

Soluzioni

Domanda 1: F

Domanda 2: V

Domanda 3: F

Domanda 4: V

Domanda 5: V

Domanda 6: F

Domanda 7: V

Domanda 8: V

Domanda 9: V

Domanda 10: F

Domanda 11: F

Domanda 12: F

Domanda 13: V

Domanda 14: V

Domanda 15: F

Domanda 16: V

Domanda 17: V

Domanda 18: F

Domanda 19: F

Domanda 20: V

Domanda 21: V

Domanda 22: V

Domanda 23: F

Domanda 24: V

Domanda 25: F

Domanda 26: F

Domanda 27: V

Domanda 28: F

Domanda 29: V

Domanda 30: F

Valid XHTML 1.0 Transitional     Valid CSS!