root / rgbdslam / external / siftgpu / src / ServerSiftGPU / server.cpp @ 9240aaa3
History | View | Annotate | Download (4.32 KB)
1 | 9240aaa3 | Alex | ////////////////////////////////////////////////////////////////////////////
|
---|---|---|---|
2 | // File: server.cpp
|
||
3 | // Author: Changchang Wu
|
||
4 | // Description : driver of a SiftGPU Server.
|
||
5 | //
|
||
6 | // Copyright (c) 2007 University of North Carolina at Chapel Hill
|
||
7 | // All Rights Reserved
|
||
8 | //
|
||
9 | // Permission to use, copy, modify and distribute this software and its
|
||
10 | // documentation for educational, research and non-profit purposes, without
|
||
11 | // fee, and without a written agreement is hereby granted, provided that the
|
||
12 | // above copyright notice and the following paragraph appear in all copies.
|
||
13 | //
|
||
14 | // The University of North Carolina at Chapel Hill make no representations
|
||
15 | // about the suitability of this software for any purpose. It is provided
|
||
16 | // 'as is' without express or implied warranty.
|
||
17 | //
|
||
18 | // Please send BUG REPORTS to ccwu@cs.unc.edu
|
||
19 | //
|
||
20 | ////////////////////////////////////////////////////////////////////////////
|
||
21 | #include <string.h> |
||
22 | #include <iostream> |
||
23 | #include <stdio.h> |
||
24 | using std::cout;
|
||
25 | |||
26 | #include "../SiftGPU/SiftGPU.h" |
||
27 | |||
28 | //if you included ServerSiftGPU.h here.
|
||
29 | //CreateRemoteSiftGPU can be replaced by new ServerSiftGPU();
|
||
30 | |||
31 | int main(int argc, char** argv) |
||
32 | { |
||
33 | |||
34 | if(argc >= 2 && strcmp(argv[1], "-server") == 0) |
||
35 | { |
||
36 | //run siftgpu server
|
||
37 | std::cout << "Starting server process...\n";
|
||
38 | int port = 7777; |
||
39 | if(argc >= 3) sscanf(argv[2], "%d", &port); |
||
40 | //////////////////////////////////////
|
||
41 | RunServerLoop(port, argc - 3, argv + 3); |
||
42 | }else if(argc >=2 && strcmp(argv[1], "-test") == 0) |
||
43 | { |
||
44 | //start server on same computer and connect...
|
||
45 | //note we are using a SiftGPU pointer..
|
||
46 | SiftGPU* siftgpu = CreateRemoteSiftGPU(); |
||
47 | siftgpu->ParseParam(argc - 2, argv + 2); |
||
48 | if(siftgpu->VerifyContextGL())
|
||
49 | { |
||
50 | //files on the matchines where the server runs
|
||
51 | siftgpu->RunSIFT("../data/800-1.jpg");
|
||
52 | siftgpu->RunSIFT("../data/800-2.jpg");
|
||
53 | } |
||
54 | delete siftgpu; //this will terminate the server |
||
55 | }else if(argc >=4 && strcmp(argv[1], "-test_remote") == 0) |
||
56 | { |
||
57 | ////test client that connects to remote server...
|
||
58 | char server_name[1024]; int port = 7777; |
||
59 | strcpy(server_name, argv[2]);
|
||
60 | sscanf(argv[3], "%d", &port); |
||
61 | SiftGPU* siftgpu = CreateRemoteSiftGPU(port, server_name);//new ServerSiftGPU(port, server_name);
|
||
62 | siftgpu->ParseParam(argc - 4, argv + 4); |
||
63 | if(siftgpu->VerifyContextGL())
|
||
64 | { |
||
65 | //files on the matchines where the server runs
|
||
66 | siftgpu->RunSIFT("../data/800-1.jpg");
|
||
67 | siftgpu->RunSIFT("../data/800-2.jpg");
|
||
68 | } |
||
69 | delete siftgpu;
|
||
70 | }else if(argc >=2 && strcmp(argv[1], "-test2") == 0) |
||
71 | { |
||
72 | //test using two siftgpu servers...usage:
|
||
73 | //server_siftgpu -test2 [server1_params] [-server2 [server2_params]]
|
||
74 | |||
75 | ////////////////////////////////////////////
|
||
76 | //they need to use different ports.
|
||
77 | SiftGPU* siftgpu1 = CreateRemoteSiftGPU(7777);//new ServerSiftGPU(7777); |
||
78 | SiftGPU* siftgpu2 = CreateRemoteSiftGPU(8888);//new ServerSiftGPU(8888); |
||
79 | |||
80 | //split the parameters for the two servers
|
||
81 | int argc1 = 0, argc2 = 0; |
||
82 | char** argv1 = argv + 2, **argv2 = 0; |
||
83 | while(argc1 + 2 < argc && strcmp(argv[argc1 + 2], "-server2")) |
||
84 | { |
||
85 | argc1++; |
||
86 | } |
||
87 | if(argc1 + 3 < argc && strcmp(argv[argc1 + 2], "-server2") == 0) |
||
88 | { |
||
89 | argv2 = argv + argc1 + 3;
|
||
90 | argc2 = argc - argc1 - 3;
|
||
91 | } |
||
92 | |||
93 | //initialize the two servers with their siftgpu parameters
|
||
94 | siftgpu1->ParseParam(argc1, argv1); |
||
95 | siftgpu2->ParseParam(argc2, argv2); |
||
96 | if(siftgpu1->VerifyContextGL() && siftgpu2->VerifyContextGL())
|
||
97 | { |
||
98 | siftgpu1->RunSIFT("../data/800-1.jpg");
|
||
99 | siftgpu2->RunSIFT("../data/800-1.jpg");
|
||
100 | siftgpu1->RunSIFT("../data/800-2.jpg");
|
||
101 | siftgpu2->RunSIFT("../data/800-2.jpg");
|
||
102 | } |
||
103 | delete siftgpu1;
|
||
104 | delete siftgpu2;
|
||
105 | }else
|
||
106 | { |
||
107 | std::cout |
||
108 | <<"try -test [siftgpu_param] to create a local server and a client\n"
|
||
109 | <<"try -test2 [siftgpu_param1] [-server2 [siftgpu_param2]]\n"
|
||
110 | <<" to create two servers and two clients\n"
|
||
111 | <<"try -test_remote remote_sever_name remote_server_port\n"
|
||
112 | <<" to create a client and connect to remote server\n"
|
||
113 | <<"use -server port [siftgpu_param] to start a server\n"
|
||
114 | <<"Note [siftgpu_param] allows you to select GPU from multi-GPUs\n"
|
||
115 | <<"\n";
|
||
116 | } |
||
117 | return 1; |
||
118 | } |