Аз съм начинаещ в използването на MPI. Тук написах много проста програма, за да тествам дали MPI може да работи. Ето моето hello.c:
#include <stdio.h>
#include <mpi.h>
int main(int argc, char *argv[]) {
int numprocs, rank, namelen;
char processor_name[MPI_MAX_PROCESSOR_NAME];
MPI_Init(&argc, &argv);
MPI_Comm_size(MPI_COMM_WORLD, &numprocs);
MPI_Comm_rank(MPI_COMM_WORLD, &rank);
MPI_Get_processor_name(processor_name, &namelen);
MPI_Barrier(MPI_COMM_WORLD);
printf("Process %d on %s out of %d\n", rank, processor_name, numprocs);
MPI_Finalize();
}
Използвам възел за тестване, хост файлът е: node1 node2
Така че имам две машини с име node1 и node2. Мога да се свързвам един с друг без парола.
Стартирам програмата, като напиша: mpirun -np 2 -f hostfile ./hello
.
Изпълнимият hello е в една и съща директория и на двете машини.
След това, след като стартирам, получавам грешка:
Фатална грешка в PMPI_Barrier: Друга MPI грешка, стек грешки: PMPI_Barrier(425).........: MPI_Barrier(MPI_COMM_WORLD) неуспешно MPIR_Barrier_impl(331)....: Неуспех по време на колективен MPIR_Barrier_impl(313)... .: MPIR_Barrier_intra(83)....: dequeue_and_set_error(596): Комуникационна грешка с ранг 0 Фатална грешка в PMPI_Barrier: Друга MPI грешка, грешка стек: PMPI_Barrier(425).........: MPI_Barrier(MPI_COMM_WORLD ) неуспешно MPIR_Barrier_impl(331)....: Грешка по време на колективен MPIR_Barrier_impl(313)....: MPIR_Barrier_intra(83)....: dequeue_and_set_error(596): Комуникационна грешка с ранг 1
Ако коментирам MPI_Barrier(), той може да работи правилно. Изглежда, че комуникацията между машините има проблем? Или не съм инсталирал правилно openmpi? Някакви идеи?
Използвам Ubuntu 12.10
Получих някои съвети: Това не работи добре в MPICH2, ако използвам openmpi, тогава работи. Инсталирах MPICH само чрез sudo apt-get install mpich2. пропускам ли нещо Размерът на mpich2 е много по-малък от openmpi
Боря се да получа това, което очаквам да видя, когато правя заявка към масив с помощта на Mongoose. Един потребител може да има много стаи, свързани с неговия/нейния акаунт. Стайните обекти се съхраняват в масив, прикрепен към потребителя в колекцията. Има само една колекция, наречена потребители.
Обмислете следните две схеми за потребител и стая:
ПОТРЕБИТЕЛСКА СХЕМА
СХЕМА НА СТАЯТА
Това е заявката, която опитах:
Проблемът е, че тази заявка изглежда винаги връща празен масив, дори ако трябва да съдържа нещо или ако не трябва да връща нищо. И така, как да търся във всички потребителски масиви от стаи, за да видя дали името на стаята вече съществува?
Опитах и следните запитвания, но нито едно не беше успешно:
Трябва също така да отбележа, че базата данни е попълнена, тъй като мога да видя масива (който има 1 елемент, създаден при създаването на потребителски акаунт) в robomongo.
Примерни данни от изхода на конзолата, за да се покаже, че базата данни се попълва (включително масив user.rooms):
- person Yan Li   schedule 14.04.2013