int main() { // cria matriz com N vértices int grafo[N][N]; int visitados[N]; int trajecto[N]; // inicializa matriz inicializaMatriz(grafo); criaAresta(grafo, 0, 1, 10); criaAresta(grafo, 1, 2, 5); criaAresta(grafo, 2, 0, 3); criaAresta(grafo, 0, 3, 7); criaAresta(grafo, 2, 3, 20); criaAresta(grafo, 3, 4, 12); criaAresta(grafo, 1, 5, 3); criaAresta(grafo, 3, 5, 0); criaAresta(grafo, 5, 4, 1); criaAresta(grafo, 3, 1, 5); criaAresta(grafo, 1, 0, 6); //imprime(grafo); inicializaArray(visitados); visitaProfundidade(grafo, visitados, 0); printf("\n"); inicializaArray(visitados); if (haCaminho(grafo, 0, 4, visitados)) printf("Ha caminho de %d para %d\n", 0, 4); else printf("Nao ha caminho de %d para %d\n", 0, 4); caminhos(grafo, 0, 5, trajecto, 0, 0); }
int main() { float *array, num; int nElementos; nElementos = leerN( "\nIntroduzca el No. de elementos del array de tipo float: " ); array = crearArray( nElementos ); inicializaArray( array , nElementos ); num= leer( "\n Introduzca un numero: " ); seleccionaNumero( array, nElementos, num ); liberaMemoria( array ); array = NULL; system ("pause"); }
int main(void) { struct timeval inicio, fim; tsc_counter tsc1, tsc2; long long unsigned int clock; double tempo; unsigned long count; //wurmup fft(); //mede o tempo de execução da funcao f0 (media de NITER repeticoes) gettimeofday(&inicio, NULL); RDTSC(tsc1); for(count=0;count<NUM_ITERACOES;count++){ inicializaArray(); ordenaBitReverso(); fft(); } RDTSC(tsc2); gettimeofday(&fim, NULL); tempo = (fim.tv_sec - inicio.tv_sec)*1000 + (fim.tv_usec - inicio.tv_usec)/1000; //calcula tempo em milisegundos //printf("tempo:%lf",tempo); clock = tsc2.int64 - tsc1.int64; //calcula numero de ciclos de CPU gastos printf("Tempo FFT : %.1lf(ms) Clocks: %.2e \n", tempo/NUM_ITERACOES, (double)clock/NUM_ITERACOES); printf("Clock/tempo: %.2e\n", clock/tempo); printf("QtdElementos:%d Threads: %d Peso:%d\n",QTD_ELEMENTOS,QTD_CORES,PESO_THREADS); printf("%.1lf\t%.2e\t%.2e\n\n\n",tempo/NUM_ITERACOES,(double)clock/NUM_ITERACOES,clock/tempo); //imprimeVetor(); pthread_exit (NULL); return 0; }
int main(int argc, char *argv[]) { struct timeval inicio, fim; tsc_counter tsc1, tsc2; long long unsigned int clock; double tempo; if(argc < 4) { printf("ERRO: informe s quantidade de elementos do FFT, a quantidade de threads e o peso das threads:: <./fft2> <qtdElementos> <qtdThreads> <pesoThreads>\n"); return -1; } //inicializando valores do algoritmo qtdElementos = strtoul(argv[1],NULL,10); tamArray = qtdElementos*2 + 1; qtdThreads = atoi(argv[2]); pesoThreads = atoi(argv[3]); //printf("sera processada uma fft com Elementos:%lu, Threads:%d, PesoThread:%d\n",qtdElementos,qtdThreads,pesoThreads); //alocando memoria para o vetor de dados data = malloc(sizeof(float) * tamArray); //alocando memoria para threads threads = malloc(sizeof(pthread_t) * qtdThreads); //warmup inicializaArray(); ordenaBitReverso(); fft(); //repete as execucoes para calcular a media unsigned long count; //mede o tempo de execução da funcao f0 (media de NITER repeticoes) gettimeofday(&inicio, NULL); RDTSC(tsc1); for(count=0;count<NUM_ITERACOES;count++){ inicializaArray(); //imprimeVetor(); ordenaBitReverso(); //imprimeVetor(); fft(); } RDTSC(tsc2); gettimeofday(&fim, NULL); tempo = (fim.tv_sec - inicio.tv_sec)*1000 + (fim.tv_usec - inicio.tv_usec)/1000; //calcula tempo em milisegundos //printf("tempo:%lf",tempo); clock = tsc2.int64 - tsc1.int64; //calcula numero de ciclos de CPU gastos //printf("Tempo FFT : %.1lf(ms) Clocks: %.2e \n", tempo/NUM_ITERACOES, (double)clock/NUM_ITERACOES); //printf("Clock/tempo: %.2e\n", clock/tempo); //printf("QtdElementos:%lu Threads: %d Peso:%d\n",qtdElementos,qtdThreads,pesoThreads); printf("%lu\t%d\t%d\t%.1lf\t%.2e\t%.2e\n",qtdElementos,qtdThreads,pesoThreads,tempo/NUM_ITERACOES,(double)clock/NUM_ITERACOES,clock/tempo); //imprimeVetor(); //liberando a memoria free(threads); free(data); pthread_exit (NULL); return 0; }