コード例 #1
0
int main(int argc, char *argv[]) {
	int myrank;
	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

	printf("%2d - started\n", myrank);

	if (myrank == 0) {   //Master, i.e. distributor of tasks
		MPI_Comm_size(MPI_COMM_WORLD, &ITEMS_TO_BE_SENT);
		int number_of_processes = ITEMS_TO_BE_SENT;
		ITEMS_TO_BE_SENT--;    //number of processes that are supposed to receive a task
		if(argc == 1)
			ftw(".", parse, 1);
		else
			ftw(argv[1], parse, 1);
		kill_slaves();
		sleep(1);  //just to make sure that files are closed properly...
		merge_files(number_of_processes);
		fprintf(stderr, "Finished merging\n");
	} else {
		run_slave(myrank);
	}
	MPI_Finalize();
	return 0;
}
コード例 #2
0
ファイル: ipc.c プロジェクト: DanielASCarmo/cap-benchmarks
/*
 * Joins slave processes.
 */
void join_slaves(void)
{
	int i;
	
	kill_slaves();
	
	/* Join slaves. */
	for (i = 0; i < nclusters; i++)
	{
		data_receive(infd[i], &slave[i], sizeof(uint64_t));
		mppa_waitpid(pids[i], NULL, 0);
	}
}
コード例 #3
0
int main(int argc, char *argv[]) {
	int myrank;
	MPI_Init(&argc, &argv);
	MPI_Comm_rank(MPI_COMM_WORLD, &myrank);

	printf("%2d - started\n", myrank);

	if (myrank == 0) {   //Master, i.e. distributor of tasks
		logfile = fopen("logfile.txt", "w");
		if (!logfile) {fprintf(stderr, "Can't open logfile, exiting\n"); exit(1);}
		MPI_Comm_size(MPI_COMM_WORLD, &ITEMS_TO_BE_SEND);
		ITEMS_TO_BE_SEND--;    //number of processes that are supposed to receive a task
		if(argc == 1)
			ftw(".", parse, 1);
		else
			ftw(argv[1], parse, 1);
		kill_slaves();
		fclose(logfile);
	} else {
		run_slave(myrank);
	}
	return 0;
}