示例#1
0
文件: slave.c 项目: geoffchu/chuffed
void Slave::solve() {

        thread_no = so.thread_no;

        srand(thread_no+1);
        
        
        clauseSizeLimits.resize(so.num_threads, so.maxClSz);
        goodClausesFrom.resize(so.num_threads, 0);
        numClausesFrom.resize(so.num_threads, 0);
        
        
        checks = rand()%int(report_freq/check_freq);

        MPI_Buffer_attach(malloc(MPI_BUFFER_SIZE), MPI_BUFFER_SIZE);

        if (FULL_DEBUG) fprintf(stderr, "Solving\n");
        sendReport();
        while (receiveJob()) {
                real_time -= wallClockTime();
//              cpu_time -= cpuTime();
                status = engine.search();
                real_time += wallClockTime();
//              cpu_time += cpuTime();
                sendReport();
        }

        sendStats();
}
main(int argc, char **argv)
{
	//const char* server_ip = "50.116.49.217";
	//const char* server_ip = "128.10.25.209";
	const char* server_ip = "127.0.0.1";	
	//const char* server_ip = "128.10.2.16"; // lore
	const int port_num = 8887;
		
	struct sockaddr_in socketAddress;


	// Clear sockaddr structure
  	memset((char *)&socketAddress,0,sizeof(socketAddress));

  	socketAddress.sin_family = AF_INET;
	socketAddress.sin_addr.s_addr = inet_addr(server_ip);
	socketAddress.sin_port = htons((u_short)port_num);

  	// Get TCP transport protocol entry
  	struct  protoent *ptrp = getprotobyname("tcp");
  	if ( ptrp == NULL ) 
	{
    		fprintf(stderr, "cannot map \"tcp\" to protocol number");
    		perror("getprotobyname");
    		exit(1);
  	}

	int sockfd = socket(AF_INET,SOCK_STREAM, ptrp->p_proto);
	if (sockfd < 0)
	{
		fprintf(stderr, "Cannot create socket\n");
		exit(1);
	}
	
	int ret = connect(sockfd, (struct sockaddr*)&socketAddress, sizeof(socketAddress));
	if (ret < 0)
	{
		fprintf(stderr, "Cannot connect\n");
		exit(1);
	}
	
	printf("Successful Connection.\n");
	// Tell server client is ready
	char* msg = "READY\r\n";
	write(sockfd, msg, strlen(msg));

	receiveJob(sockfd);

	// ----------------------------------------------------------------
	// Basic Test
	//-----------------------------------------------------------------
	/*Planet planetList[2];
	
	planetList[0].id = 0;
	planetList[1].id = 1;
	planetList[0].mass = 10000000000;
	planetList[1].mass = 20000000000;
	Vector* pos1 = (Vector*)malloc(sizeof(Vector));
	Vector* vel1 = (Vector*)malloc(sizeof(Vector));
	Vector* pos2 = (Vector*)malloc(sizeof(Vector));
	Vector* vel2 = (Vector*)malloc(sizeof(Vector)); 
	
	planetList[0].pos = pos1;
	planetList[0].pos->x = 1;
	planetList[0].pos->y = 2;
	planetList[0].pos->z = -1;
	planetList[0].pos->mag = 2.449489743;

	planetList[0].velocity = vel1;
	planetList[0].velocity->x = 2;
	planetList[0].velocity->y = 3;
	planetList[0].velocity->z = 4;
	planetList[0].velocity->mag = 5.385164807;

	planetList[1].pos = pos2;
	planetList[1].pos->x = 5;
	planetList[1].pos->y = 4;
	planetList[1].pos->z = 7;
	planetList[1].pos->mag = 9.486832981;

	planetList[1].velocity = vel2;
	planetList[1].velocity->x = 1;
	planetList[1].velocity->y = 2;
	planetList[1].velocity->z = -1;	
	planetList[1].velocity->mag = 2.449489743;
	
	printf("Before Update\n");
	printf("p0.xpos: %lf\n", planetList[0].pos->x);
	printf("p0.ypos: %lf\n", planetList[0].pos->y);
	printf("p0.zpos: %lf\n\n", planetList[0].pos->z);	
	printf("p0.xvel: %lf\n", planetList[0].velocity->x);
	printf("p0.yvel: %lf\n", planetList[0].velocity->y);
	printf("p0.zvel: %lf\n\n", planetList[0].velocity->z);
	printf("p1.xpos: %lf\n", planetList[1].pos->x);
	printf("p1.ypos: %lf\n", planetList[1].pos->y);
	printf("p1.zpos: %lf\n\n", planetList[1].pos->z);	
	printf("p1.xvel: %lf\n", planetList[1].velocity->x);
	printf("p1.yvel: %lf\n", planetList[1].velocity->y);
	printf("p1.zvel: %lf\n", planetList[1].velocity->z);

	update_planet(&planetList[0], &planetList[0], 2);

	printf("\nAfter Update\n");
	printf("p0.xpos: %lf\n", planetList[0].pos->x);
	printf("p0.ypos: %lf\n", planetList[0].pos->y);
	printf("p0.zpos: %lf\n\n", planetList[0].pos->z);	
	printf("p0.xvel: %lf\n", planetList[0].velocity->x);
	printf("p0.yvel: %lf\n", planetList[0].velocity->y);
	printf("p0.zvel: %lf\n\n", planetList[0].velocity->z);
	printf("p1.xpos: %lf\n", planetList[1].pos->x);
	printf("p1.ypos: %lf\n", planetList[1].pos->y);
	printf("p1.zpos: %lf\n\n", planetList[1].pos->z);	
	printf("p1.xvel: %lf\n", planetList[1].velocity->x);
	printf("p1.yvel: %lf\n", planetList[1].velocity->y);
	printf("p1.zvel: %lf\n", planetList[1].velocity->z);
	*/
	// -----------------------------------------------------------------
	// End Test 
	// -----------------------------------------------------------------
}