Changes between Version 6 and Version 7 of AppCoprocessor
- Timestamp:
- Mar 12, 2008, 11:45:20 AM (17 years ago)
Legend:
- Unmodified
- Added
- Removed
- Modified
-
AppCoprocessor
v6 v7 24 24 </coprocs> 25 25 }}} 26 1. An app_version record (in the server DB) has a character string field '''class'''. 27 1. The scheduler is linked with a project-supplied function 26 27 An app_version record (in the server DB) has a character string field '''class'''. 28 29 The scheduler is linked with a project-supplied function 28 30 {{{ 29 bool analyze_app(HOST&, char* class, double& flops); 31 bool analyze_app(HOST&, char* class, HOST_USAGE&); 32 33 struct HOST_USAGE { 34 COPROCS coprocs; // coprocessors used by the app (name and count) 35 double ncpus; // #CPUs used by app (may be fractional) 36 double flops; // estimated FLOPS 37 char opaque[256]; // passed to the app in init_data.xml 38 }; 30 39 }}} 31 This function: 32 * returns true if the coprocessor resources (COPROC&) are sufficient for the app version 33 * fills in the num_used fields of the elements of COPROC, indicating how many instances of each coprocessor will be used 34 * returns (in flops) the estimated FLOPS (used to estimate job completion time) 40 This function returns true if the host's resources are sufficient for the app version. 41 If true, it populates the HOST_USAGE structure. 35 42 36 1. The scheduler will be modified so that, when sending a job to a host, it finds the compatible app_version for which flops is greatest. 37 1. The scheduler reply will include, for each app version, the list of coprocessors that it will use, and the estimated FLOPS. 38 1. The client will be modified so that it keeps track of coprocessor allocation, i.e. how many instances of each are free. It only runs an app if enough instances are available, and it decrements the counts accordingly. 39 1. The client will be modified to use app_version.flops in estimating job completion times. 43 When deciding whether to send a job to a host, 44 the scheduler examines all latest-version app_versions for the platform, 45 and selects the one for which flops is greatest. 46 47 The scheduler reply includes, for each app version, an XML encoding of HOST_USAGE. 48 49 The client keeps track of coprocessor allocation, i.e. how many instances of each are free. 50 It only runs an app if enough instances are available. 51 52 The client uses app_version.usage.flops to estimate job completion times. 40 53 41 54 == Questions ==