Articles of de parallel processing

Fallo de segmentación al usar OpenMP al crear una matriz

Tengo un error de segmentación al acceder a una matriz dentro de un bucle for. Lo que estoy tratando de hacer es generar todas las subsecuencias de una cadena de ADN. Estaba sucediendo cuando creé la matriz dentro del for. Después de leer un rato, descubrí que el openmp limita el tamaño de la stack, […]

¿Por qué mi progtwig MPI está dando de manera incorrecta?

Soy un novato en MPI y tengo una tarea, no te estoy pidiendo que la resuelvas, solo necesito una pista sobre por qué mi progtwig no funciona correctamente. Aquí está el problema Escribe un progtwig MPI C que simule un juego de mesa de ping pong. 2 procesos solo deben ser utilizados. Los procesos utilizan […]

¿El MPI_Datatype más apropiado para “descomposición de bloques”?

Con la ayuda de Jonathan Dursi y osgx , ahora he realizado la “descomposición de filas” entre los procesos: fila http://img535.imageshack.us/img535/9118/ghostcells.jpg Ahora, me gustaría probar el enfoque de “descomposición de bloques” (que se muestra a continuación): bloque http://img836.imageshack.us/img836/9682/ghostcellsblock.jpg ¿Cómo debe uno hacerlo? Esta vez, el MPI_Datatype será necesario, ¿verdad? ¿Qué tipo de datos sería más […]

OpenMP ralentiza drásticamente el bucle

Estoy intentando acelerar esto para el bucle con la paralelización OpenMP. Tenía la impresión de que esto debería dividir el trabajo en varios subprocesos. Sin embargo, tal vez la sobrecarga sea demasiado grande para que esto me dé una aceleración. Debo mencionar que este bucle ocurre muchas, muchas veces, y cada instancia del bucle debe […]

Al usar MPI, parece que se ha recibido un mensaje antes de enviarlo

En mi progtwig de prueba a continuación, estoy enviando un mensaje de un proceso a otro. El rastreo printfs parece indicar qué se está recibiendo el mensaje antes de enviarlo, ¿por qué esto es así? #include #include #include /* Run with two processes */ void main(int argc, char *argv[]) { int rank, i, count; float […]

MPI_Type_create_subarray y MPI_Gather

Tengo que resolver un pequeño problema mpi. Tengo 4 procesos esclavos y cada uno de estos desea enviar un subconjunto 2d (CHUNK_ROWS X CHUNK_COLUMNS) al maestro 0. Master 0 recostack todos los fragmentos en ddd [ROWS] [COLUMNS] e imprímelo. Quiero usar MPI_Gather () #include #include using namespace std; #define ROWS 10 #define COLUMNS 10 #define […]

Cómo garantizar que una matriz asignada dinámicamente sea privada en openmp

Estoy trabajando en C con openMP usando gcc en una máquina linux. En un openmp paralelo para bucle, puedo declarar una matriz asignada estáticamente como privada. Considere el fragmento de código: int a[10]; #pragma omp parallel for shared(none) firstprivate(a) for(i=0;i<4;i++){ Y todo funciona como se espera. Pero si en cambio asigno un dinámicamente, int * […]

MPI Send and Receive no funciona con más de 8182 dobles

Estoy teniendo algunos problemas con el siguiente código: int main(int argc, char *argv[]){ int id, p, n, ln, i, j, retCode; double *buffer; MPI_Init(&argc, &argv); MPI_Comm_size(MPI_COMM_WORLD, &p); MPI_Comm_rank(MPI_COMM_WORLD, &id); n = strtol(argv[1],NULL,10); // total number of elements to be distributed ln = n/p; // local number of elements buffer = (double*)calloc(ln, sizeof(double)); if (id == […]

¿Por qué este código MPI se ejecuta fuera de orden?

Estoy tratando de crear un “¡Hola mundo!” Aplicación en MPI (abierto) de modo que cada proceso se imprima en orden. Mi idea era que el primer proceso enviara un mensaje al segundo cuando haya terminado, luego el segundo al tercero, etc .: #include #include int main(int argc,char **argv) { int rank, size; MPI_Init(&argc, &argv); MPI_Comm_rank(MPI_COMM_WORLD, […]

Problemas de memoria MPI_Gatherv (MPI + C)

Como continuación de mi pregunta anterior , he modificado el código para el número variable de núcleos. Sin embargo, la forma en que se implementa Gatherv en mi código parece ser poco confiable. Una vez que en 3-4 se ejecuta la secuencia final en el búfer de recolección termina por ser dañado, parece que, debido […]