Mer 21 Agosto, 16:07:43 - 2019

Visualizza post

Questa sezione ti permette di visualizzare tutti i post inviati da questo utente. N.B: puoi vedere solo i post relativi alle aree dove hai l'accesso.


Topics - Avelyne

Pagine: [1]
1
Programmazione Funzionale e Parallela / Esercizio 4 Esercitazione6
« il: Mar 11 Dicembre, 23:54:51 - 2018 »
Codice: [Seleziona]
int count_occ(const char* v, int n, char x) {
    int i,j,cnt = 0;
    unsigned char mcnt[16];
    __m128i vone = _mm_set_epi8(1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1);
    __m128i vcnt = _mm_set_epi8(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
    __m128i res = _mm_setzero_si128();
    __m128i resv;
    __m128i xv = _mm_set1_epi8(x);
    for(i = 0; i+15<n; i+=16){
__m128i vv = _mm_loadu_si128((const __m128i*)(v+i));
resv = _mm_cmpeq_epi8(vv,xv);
resv = _mm_cmpeq_epi8(resv,res);
resv = _mm_add_epi8(resv,vone);
vcnt = _mm_add_epi8(vcnt,resv);
if (i % 2048 == 0) {
            _mm_storeu_si128((__m128i*)mcnt, vcnt);
            for (j=0; j<16; ++j) cnt += mcnt[j];
            vcnt = _mm_set_epi8(0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0);
        }
}

for (; i<n; ++i) cnt += v[i] == x;
_mm_storeu_si128((__m128i*)mcnt, vcnt);
    for (j=0; j<16; ++j) cnt += mcnt[j];

    return cnt;
}
Se è giusto, è vero che la notte porta consiglio :D >:D

2
Programmazione Funzionale e Parallela / Scala e Java
« il: Sab 20 Ottobre, 22:56:42 - 2018 »
Salve,
ho provato ad installare java8, ma una volta installato, se da terminale digito scala, non mi fa più vedere i comandi che scrivo.
Cosa sbaglio?

3
Sistemi di Calcolo (SC2): programmazione multi-thread / Socket e Thread
« il: Ven 11 Maggio, 20:04:29 - 2018 »
Salve,
volevo chiedere se qualcuno poteva aiutarmi a capire il comportamento dei thread, nell'esercizio con i server (esercizio laboratorio 7), poichè il server mi accetta la connessione di un solo client e chiude la connessione.

Grazie.

4
Sistemi di Calcolo (SC1): programmazione single-thread / Amdahl
« il: Lun 15 Gennaio, 13:46:51 - 2018 »
Chiedo scusa, perchè so che dovrebbe essere una banalità, ma non riesco a trovarmi i risultati sui vari esercizi. Ad esempio:

Qual  è  lo  speedup  ottenibile  per  un  programma  se  riduciamo  del  25% una sua porzione che richiede il 50% del tempo di esecuzione?
Io avrei posto a = 0.50 e k = 1.33
Come si svolge? Non arrivo alla soluzione. :-X  ::)

5
Sistemi di Calcolo (SC1): programmazione single-thread / Exec
« il: Sab 13 Gennaio, 00:28:19 - 2018 »
La execv prende come parametri un percorso e un array che termina con null. Ma non riesco a capire il suo funzionamento. Praticamente se faccio un main con argv e argc, passando poi argc[1] e argc alla execv, eseguendo:
Codice: [Seleziona]
./myexec /bin/rm file funziona?

6
Stavo provando a fare l'esame 3A, nell'ottimizzazione io ho cercato di farmi la tabella per contare gli anni bisestili.
Main:
Codice: [Seleziona]
#include <stdio.h>
#include "es3A.h"

#define N 500000

int main() {

int k;
for (k = 0; k < N; k++) {
unsigned year = 0;
if (quanti_bisestile(year) != 1) return (printf("Errore: %ul\n", year),1);
year = 1000;
if (quanti_bisestile(year) != 243) return (printf("Errore: %ul\n", year),1);
year = 2000;
if (quanti_bisestile(year) != 486) return (printf("Errore: %ul\n", year),1);
year = 3000;
if (quanti_bisestile(year) != 728) return (printf("Errore: %ul\n", year),1);
}

    printf("Test passati correttamente.\n");
return 0;
}

codice, modificando quello originale, per la compilazione della tabella:

Codice: [Seleziona]
#include "es3A.h"
#include <stdlib.h>
#include <stdio.h>

static unsigned anno_bisestile(unsigned short anno) {
if (anno % 4 != 0)
return 0;
else if (anno % 100 != 0)
return 1;
else if (anno % 400 != 0)
return 0;
else
return 1; 
}

int quanti_bisestile(unsigned short anno) {
FILE *fd;
fd=fopen("tableprova.txt", "w");
unsigned count = 0;
unsigned short k;
for (k = 0; k <= anno; k++) {
count += anno_bisestile(k);
fprintf(fd, "%d\n", count);
}
fclose(fd);
return count;
}

e mi esce fuori la tabella come nelle soluzioni, quindi presumo esatta.

Il punto è che, per compilare il programma ci mette un tempo lunghissimo, anche conpilando con -01

O è il PC, o è il codice sbagliato. Ma non so come ricavarmi la tabella in modo differente. Come posso cambiare il codice?

7
Vorrei un aiuto su questi esercizi, se possibile.. :-[

1-Si descriva la rappresentazione con lo stato di un sistema che abbia pulsazione naturale pari a 1 e smorzamento pari a 0.

In questo cosa essendo lo smorzamento pari a 0 allora dovrei avere solo autovalori complessi coniugati pari a i,-i.
Quindi avrei una matrice di transizione dello stato :
 
ϕ = {(cost,sint),(sint,cost)}

L'esercizio finisce qui? Devo scrivere x(t) e y(t)?


2-Calcolare per un sistema bidimensionale,l'espressione del modo naturale pseudoperiodico a partire dalla forma quasi diagonale a coefficenti reali della matrice dinamica e autovettori ua, ub.

quindi ho:

.x(t) = Ax(t) + Bu(t)
y(t) = Cx(t) + Du(t)

con matrice con forma quasi diagonale, quindi sarebbe quella in forma di Jordan?
Quindi poi per calcolarmi il modo devo scrivere l'espressione dell'evoluzione libera?



8
Analisi matematica I / Pi-greco
« il: Mer 15 Novembre, 21:28:22 - 2017 »

9
Sport / Marquez vs Dovizioso
« il: Dom 12 Novembre, 14:39:28 - 2017 »
Dai ammettetelo che (mi spiace dirlo ) Marquez se lo merita il mondiale...
Dovi ha fatto un pò di stupidate!!! Che garaaa!!
Povero Dovi, che faccina triste  :-\

10
Volevo chiedere se svolgendo un esercizio con chiamata di funzioni, sia errato, o sia più "costoso", se vado a aumentare lo stack non con la sub, ma con le push, ad esempio:

Grazie! :)

Codice: [Seleziona]
        pushl %ebx
pushl %esi

movl 12(%esp),%ebx #a
movl 16(%esp),%ecx #b
movl 20(%esp),%edx #c

movl (%ebx),%ebx
movl (%ecx),%ecx
movl (%edx),%edx

pushl %edx
pushl %ebx    #invece di fare la sub utilizzo la push con media(a,b)
pushl %ecx

call media

popl %ecx
popl %ebx
popl %edx

movl %eax,%esi

pushl %ecx    #anche qui con media(b,c)
pushl %edx

call media

popl %edx
popl %ecx

cmpl %eax, %esi
setge %al

movsbl %al, %eax

popl %esi
popl %ebx
ret

11
Esercizio dell'esercitazione scorsa:

sqr.c
Codice: [Seleziona]
int sqr(int x) {
    return x * x;
}

sommaQuadrati.c
Codice: [Seleziona]
int sqr(int x);

int sommaQuadrati(char * v, int n) {
    int s = 0;
    while (n > 0) {
        n--;
        s += sqr(v[n]);
    }
    return s;
}

sommaQuadrati.s
Codice: [Seleziona]
#int sqr(int x);

#int sommaQuadrati(char * v, int n) { v -> ebx, n -> esi, s -> edi
#    int s = 0;
#L:
# if (n <= 0){
# goto E;
# n--;
# s = s + sqr(v[n]);
#E:
# return s;

.globl sommaQuadrati

sommaQuadrati:
pushl %ebx
pushl %esi
pushl %edi
subl $4,%esp

movl $0,%edi # %edi <- s
movl 20(%esp),%ebx  # %ebx <- v
movl 24(%esp),%esi  # %esi <- n

L:
cmpl $0,%esi
jle E
decl %esi
movzbl (%ebx,%esi), %eax
movl %eax,(%esp)
call sqr
addl %eax,%edi
jmp L
E:
movl %edi,%eax
addl $4,%esp
pop %edi
pop %esi
pop %ebx
ret


Pagine: [1]