?? starcore_main.c
字號(hào):
#include <stdio.h>
#include <stdlib.h>
#include <cmath>
#include <prototype.h>
#define N 16 // gradul polinomului,multiplu de 4
#define Simulari 10 /* am decis ca in programul main sa efectuam 10 simulari
ale algoritmului de calcul al polinomului, pentru a putea genera apoi
reprezentari grafice concludente in Matlab. Pentru aceasta, am dat lui P si lui x
forma unui vector de 10 elemente corespunzatoare fiecarei simulari, pt i=1..10
Utilizand pragmele pentru optimizarea lucrului cu memoria, vom permite
efectuarea transferurilor cu mai multe 'cuvinte', codul generat de compilator
avand instructiuni de transfer multiplu ori de cate ori algoritmul va permite
aceasta.*/
int main(void)
{
Word16 x[Simulari],a[N];
#pragma align x 8 //aliniere in memorie la declararea vectorilor
#pragma align a 8
Word32 P[Simulari];
#pragma align P 8
int i;
FILE *fp;
fp=fopen("x.dat","r+b");
fread(x,sizeof(Word16),Simulari,fp);
if (!fp)
printf("\nNu s-a deschis");
fclose(fp);
fp=fopen("a.dat","r+b");
fread(a,sizeof(Word16),N,fp);
if (!fp)
printf("\nNu s-a deschis");
fclose(fp);
/* Tehnica de optimizare loop merging nu se poate aplica deoarece NU avem acelasi numar
de iteratii intre bucla cu indice i si ce cu indice k a functiei, plus ca nu am mai putea
implementa functia separat de program. Din acelasi motiv al functiei separate de program
nu se poate implementa nici tehnica multisample*/
/* Putem implementa insa tehnica loop unroll, cu factor 2, pentru ca procesorul sa execute
in paralel doua operatii, folosindu-se de doua ALU. Factorul 4 de optimizare nu este
potrivit acestui alogritm. Am observat insa ca nici aceasta metoda nu e potrivita
algoritmului prezent,deoarece ingreuneaza foarte mult calculele. O voi exemplifica totusi
mai jos, ca exercitiu:
for (i=0;i<(Simulari);i=+2)
{
P[i]=polinomiala(a[N],x[i]);
P[i+1]=polinomiala(a[N],x[i+1]);
}
*/
for (i=0;i<(Simulari);i++)
P[i]=polinomiala(a[N],x[i]);
fp=fopen("p.dat","w+b");
fwrite(P,sizeof(Word32),Simulari,fp);
if (!fp)
printf("\nNu s-a deschis");
fclose(fp);
return 0;
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -