################################################################# IMW: Interactive Master-Worker Application Framework ################################################################# *) For IMW overview, please refer to IMW.html *) Currently IMW relies on the presence of HTCondor. Also as it uses socket to communicate, it requires on a share file system. The HTCondor tool path and java path are set in MWUtil.java and MWWorkerExe.C respectively. *) For IMW framework code, please refer to MW*.java and the C source files. *) For an example IMW tool implementation, please refer to My*.java files. These files implement sums many integers in parallel. The histogram file contains the input for this summation job: the 1st number is the number of integers to be summed by one task, the second and third number define the range of integers to be summed. *) There are several other files in this directory: -- mymv.sh is used to clear the log, output, and error files generated from the previous run; -- imw.config is the default configuration file, you can fill in your application specific config information, which will be transferred to the MWDriver. You need to parse such info in MyDriver.set_name_value() function. The default config says that (1) when the MWDriver starts, it asks for 6 workers; (2) these workers should meet the requirements written in the Requirements section; (3) Transfer_input_files are the files that needs to be sent to worker machines, including the My*.class and the common MW*.class files; (4) the worker-side entry point the worker.exe. -- script is the default file to read the script to be executed by the workers. The script execution function is already implemented in MWWorker.java, will need to be added to MyWorkerThread if you want to support parallel script execution. *) There is a debug option in MWDriver.java, you can turn it on to start a MWWorker locally, it's output is printed to worker.log file to help you debug the program. ################################################################# IMW Framework code: 56 226 1684 MWAccept.java 622 1893 17346 MWClient.java 62 222 1597 MWClientRecv.java 935 3785 28200 MWDriver.java 22 68 477 MWDriverExe.java 61 240 1715 MWFileReader.java 25 125 743 MWMessage.java 50 201 1379 MWRecv.java 101 426 2673 MWTask.java 38 145 884 MWTaskCluster.java 296 1303 8868 MWUtil.java 193 685 5544 MWWorker.java 29 148 1026 MWWorkerExe.java 180 769 5149 MWWorkerID.java 51 178 1265 MWWorkerThread.java 321 1156 8030 MWComm.C 179 528 4127 MWLogReader.C 25 58 439 MWWorkerExe.C 82 180 1250 MWprintf.C 58 271 1793 MWComm.h 54 108 952 MWLogReader.h 41 128 840 MWprintf.h 3481 12843 95981 total ################################################################# Application code: 131 553 4282 MyDriver.java 82 386 2650 MyTask.java 18 43 330 MyTaskCluster.java 41 149 1060 MyWorkerThread.java 272 1131 8322 total