Criba de Eratóstenes

5
Una cuestión importante en la elaboración de un algoritmo paralelo para un problema dado es la manera en la que la carga computacional se divide entre los múltiples procesadores. El esquema más efciente depende a menudo tanto en el problema y en la arquitectura de la máquina paralela. Esta sección expone algunas de las cuestiones clave en el procesamiento en paralelo a través de un sencillo ejemplo [uin!"#. $onsidere el problema de la construcción de la lista de todos los números primos en el intervalo [%& n# para un número entero n ' (. Un simple algoritmo que puede ser utili)ado para este cálculo es el criba de Eratóstenes. $omience con la lista de los números %& *& +& "&. . . & , representa como u -marca- vector de bits iniciali)ado a %(((. . . ((. En cada paso& el siguien número m no marcado asociado con un ( en el elemento m de la broca/ vector marca0 es un número primo. Encuentra este elemento m y marcar todos los múltiplos de m empe)ando por m1. $uando m1' n& el cálculo se detiene y todos los elementos no marcados son los números primos. 2os pasos de cálculo para n 3 +( se muestran aqu45

description

prueba de algoritmo en procesos paralelos

Transcript of Criba de Eratóstenes

Una cuestin importante en la elaboracin de un algoritmo paralelo para un problema dado es la manera en la que la carga computacional se divide entre los mltiples procesadores. El esquema ms eficiente depende a menudo tanto en el problema y en la arquitectura de la mquina paralela. Esta seccin expone algunas de las cuestiones clave en el procesamiento en paralelo a travs de un sencillo ejemplo [Quin94].Considere el problema de la construccin de la lista de todos los nmeros primos en el intervalo [1, n] para un nmero entero n > 0. Un simple algoritmo que puede ser utilizado para este clculo es el criba de Eratstenes. Comience con la lista de los nmeros 1, 2, 3, 4,. . . , N representa como una "marca" vector de bits inicializado a 1000. . . 00. En cada paso, el siguiente nmero m no marcado (asociado con un 0 en el elemento m de la broca-vector marca) es un nmero primo. Encuentra este elemento m y marcar todos los mltiplos de m empezando por m. Cuando m> n, el clculo se detiene y todos los elementos no marcados son los nmeros primos. Los pasos de clculo para n = 30 se muestran aqu;

La Figura muestra una implementacin de un solo procesador del algoritmo. La variable "Current Prime" es inicializado a 2 y, en etapas posteriores, mantiene el ltimo nmero primo encontrado.Para cada primer encontr, "Index" se inicializa a la plaza de este primer y es entonces incrementado en el primer actual con el fin de marcar todos sus mltiplos.La figura 1.5 muestra los primeros procesadores p solucin usando paralelas. La lista de nmeros y el primer actual se almacenan en una memoria compartida que sea accesible para todos los procesadores. Un idle procesador se refiere simplemente a la memoria compartida, actualiza el primer curso y utiliza su privado ndice para recorrer la lista y marque los mltiplos de que el primer. Divisin del trabajo es, pues, autorregulado. La figura 1.6 muestra las actividades de los procesadores (el primer que estn trabajando en cualquier instante dado) y el tiempo de terminacin para n = 1.000 y 1 p 3. Tenga en cuenta que el uso de ms de tres procesadores no reducira el tiempo de clculo en este control en paraleloExaminamos a continuacin un enfoque de datos en paralelo en el que el vector de bits que representa la n nmeros enteros se divide en segmentos p de igual longitud, con cada segmento almacenado en el privado memoria de un procesador (Fig. 1.7). Supongamos que p