publicidad

inglés

The array assignment uses the old values of a(0:n-1) and a(2:n+1) whereas the for loop uses the old value only for a(i+1); for a(i-1) the new value is used, which has been computed in the preceding iteration. Data parallelism can also be exploited for MIMD models. Often, the SPMD model (Single Program Multiple Data) is used which means that one parallel program is executed by all processors in parallel. Program execution is performed asynchronously by the participating processors. Using the SPMD model, data parallelism results if each processor gets a part of a data structure for which it is responsible. For example, each processor could get a part of an array identified by a lower and an upper bound stored in private variables of the processor. The processor ID can be used to compute for each processor its part assigned. Different data distributions can be used for arrays, see Sect. 3.4 for more details. Figure 3.4 shows a part of an SPMD program to compute the scalar product of two vectors. In practice, most parallel programs are SPMD programs, since they are usually easier to understand than general MIMD programs, but provide enough expressiveness to formulate typical parallel computation patterns. In principle, each processor can execute a different program part, depending on its processor ID. Most parallel programs shown in the rest of the book are SPMD programs. Data parallelism can be exploited for both shared and distributed address spaces. For a distributed address space, the program data must be distributed among the processors such that each processor can access the data that it needs for its computations directly from its local memory. The processor is then called the owner of its local data. Often, the distribution of data and computation is done in the same way such that each processor performs the computations specified in the program on the data that it stores in its local memory. This is called owner-computes rule, since the owner of the data performs the computations on this data. Fig. 3.4 SPMD program to compute the scalar product of two vectors x and y. All variables are assumed to be private, i.e., each processor can store a different value in its local instance of a variable. The variable p is assumed to be the number of participating processors, me is the rank of the processor, starting from rank 0. The two arrays x and y with size elements each and the corresponding computations are distributed blockwise among the processors. The size of a data block of each processor is computed in local size, the lower and upper bounds of the local data block are stored in local lower and local upper, respectively. For simplicity, we assume that size is a multiple of p. Each processor computes in local sum the partial scalar product for its local data block of x and y. These partial scalar products are accumulated with the reduction function Reduce() at processor 0. Assuming a distribution address space, this reduction can be obtained by calling the MPI function MPI Reduce(&local sum, &global sum, 1, MPI FLOAT, MPI SUM, 0, MPI COMM WORLD), see Sect. 5.2

español

La asignación de matriz utiliza los valores antiguos de a (0: n-1) y a (2: n + 1) mientras que el bucle for usa el valor antiguo solo para a (i + 1); para un (i-1) el nuevo valor es utilizado, que ha sido computado en la iteración anterior. El paralelismo de datos también puede ser explotado para los modelos MIMD. A menudo, el SPMD Se utiliza un modelo (programa único de datos múltiples), lo que significa que un programa paralelo Es ejecutado por todos los procesadores en paralelo. La ejecución del programa se realiza de forma asíncrona. por los procesadores participantes. Usando el modelo SPMD, paralelismo de datos resulta si cada procesador obtiene una parte de una estructura de datos de la que es responsable. Por ejemplo, cada procesador podría obtener una parte de una matriz identificada por un valor inferior y Un límite superior almacenado en variables privadas del procesador. El ID del procesador puede ser utilizado para calcular para cada procesador su parte asignada. Diferentes distribuciones de datos. se puede utilizar para matrices, ver Sect. 3.4 para más detalles. La figura 3.4 muestra una parte de un Programa SPMD para calcular el producto escalar de dos vectores. En la práctica, la mayoría de los programas paralelos son programas SPMD, ya que generalmente son más fácil de entender que los programas MIMD generales, pero con suficiente expresividad para formular patrones de computación paralelos típicos. En principio, cada procesador Puede ejecutar una parte diferente del programa, dependiendo de su ID de procesador. Más paralelo Los programas que se muestran en el resto del libro son programas SPMD.El paralelismo de datos puede ser explotado para espacios de direcciones compartidas y distribuidas. Para un espacio de direcciones distribuido, los datos del programa deben distribuirse entre los Procesadores de tal manera que cada procesador pueda acceder a los datos que necesita para sus cálculos. directamente desde su memoria local. El procesador se llama entonces el propietario de su datos locales. A menudo, la distribución de los datos y el cálculo se realiza de la misma manera. de modo que cada procesador realice los cálculos especificados en el programa sobre los datos que almacena en su memoria local. Esto se llama regla de computación del propietario, ya que el propietario de los datos realiza los cálculos de estos datos. Fig. 3.4 Programa SPMD para calcular el producto escalar de dos vectores x y y. Todas las variables son se asume que es privado, es decir, cada procesador puede almacenar un valor diferente en su instancia local de un variable. Se supone que la variable p es el número de procesadores participantes, yo es el rango del procesador, a partir del rango 0. Los dos arreglos xey con elementos de tamaño cada uno y el Los cálculos correspondientes se distribuyen en bloque entre los procesadores. El tamaño de un dato. el bloque de cada procesador se calcula en tamaño local, los límites inferior y superior de los datos locales Los bloques se almacenan en local inferior y local superior, respectivamente. Por simplicidad, asumimos Ese tamaño es un múltiplo de p. Cada procesador calcula en suma local el producto escalar parcial para su bloque de datos local de x y y.Estos productos escalares parciales se acumulan con la reducción. Función Reducir () en el procesador 0. Suponiendo un espacio de direcciones de distribución, esta reducción puede se obtiene llamando a la función MPI Reducción de MPI (& suma local, & suma global, 1, MPI FLOAT, MPI SUM, 0, MPI COMM WORLD), ver la Sección. 5.2

publicidad

Condiciones del Servicio

Asegúrese de cumplir con las reglas de redacción y el idioma de los textos que traducirá. Una de las cosas importantes que los usuarios deben tener en cuenta cuando usan el sistema de diccionario Traductor.com.ar es que las palabras y textos utilizados al traducir se guardan en la base de datos y se comparten con otros usuarios en el contenido del sitio web. Por esta razón, le pedimos que preste atención a este tema en el proceso de traducción. Si no desea que sus traducciones se publiquen en el contenido del sitio web, póngase en contacto con info@traductor.com.ar por correo electrónico. Tan pronto como los textos relevantes serán eliminados del contenido del sitio web.


Política de Privacidad

Los proveedores, incluido Google, utilizan cookies para mostrar anuncios relevantes ateniéndose las visitas anteriores de un usuario a su sitio web o a otros sitios web. El uso de cookies de publicidad permite a Google y a sus socios mostrar anuncios basados en las visitas realizadas por los usuarios a sus sitios web o a otros sitios web de Internet. Los usuarios pueden inhabilitar la publicidad personalizada. Para ello, deberán acceder a Preferencias de anuncios. (También puede explicarles que, si no desean que otros proveedores utilicen las cookies para la publicidad personalizada, deberán acceder a www.aboutads.info.)