nengo

Untitled

May 24th, 2020 (edited)
52
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.78 KB | None | 0 0
  1. /* Programa de ejemplo para OC */
  2.  
  3. #include <stdio.h>
  4. #include <math.h>
  5. #include <unistd.h>
  6.  
  7. #define LONGIT 16000 /* Longitud del vector */
  8. #define PROC_MAX 32 /* Numero de procesadores */
  9.  
  10. MAIN_ENV /* No es necesario con Limes */
  11.  
  12. unsigned int inicio,final;
  13. double vector[LONGIT]; /* Vector compartido */
  14. int PrId; /* Identificador de proceso */
  15. LOCKDEC(PrIdLock) /* Cerrojo usado para la variable anterior */
  16.  
  17. /* Este es la rutina ejecutada por cada hilo lanzado */
  18. void Proceso(void)
  19. {
  20. int i,trozo,pr;
  21.  
  22. LOCK(PrIdLock);
  23. pr=PrId; /* Cada identificador de proceso debe ser unico */
  24. PrId++; /* por eso se protege con un cerrojo */
  25. UNLOCK(PrIdLock);
  26.  
  27. trozo=LONGIT/PROC_MAX;
  28. /* for (i=pr; i<LONGIT) ; i=i+PROC_MAX) /* Reparto Entrelazado*/
  29. for (i=trozo*pr;(i<trozo*(pr+1)) && (i<LONGIT) ;i++) /* Reparto Consecutivo*/
  30.  
  31. {
  32. vector[i]= (i+1.0);
  33. vector[i]= vector[i]/8.0;
  34. vector[i]=sqrt(vector[i]); /* Calculos tontos para gastar tiempo */
  35. }
  36. }
  37.  
  38. main()
  39. {
  40. int i;
  41.  
  42. MAIN_INITENV(); /* Inicio de la parte principal */
  43. memsim_init(); /* Inicia la memoria del simulador */
  44. CLOCK(inicio); /* tomamos cuenta del tiempo inicial */
  45. PrId=0; /* El padre es el proceso # 0 */
  46. LOCKINIT(PrIdLock); /* Inicializa cerrojo */
  47. for (i=0;i<PROC_MAX;i++)
  48. {
  49. CREATE(Proceso); /* Este bucle lanza PROC_MAX hilos */
  50. }
  51. WAIT_FOR_END(PROC_MAX); /* Se espera a que terminen los hijos */
  52. CLOCK(final); /* Medimos el tiempo al terminar */
  53. printf("\n Tiempo TOTAL = %14ld ciclos\n", final-inicio);
  54. MAIN_END;
  55. } /* Fin de la parte principal */
Add Comment
Please, Sign In to add comment