GPGPU-WG KnowledgeBase GLUE2 Profile Application ApplicationEnvironment ProposedInstances OpenCL
The table below describes a proposed ApplicationEnvironment for an OpenCL environment. The Green boxes indicate attribute values that are currently generated by the /usr/libexec/glite-ce-glue2-applicationenvironment-dynamic gip. The yellow field indicate optional values that we should consider using. These require the development of additional code to generate the correct value for each of the attributes.
The OpenCL case is far more complex than the CUDA, with the main issues:
- CUDA is hardware specific
If we choose to publish ApplicationEnvironment about the Job/Slots available to the application we must consider that:
- OpenCL is multi-platform and multi-device type (cpu/gpu)
- Each vendor and platform must be supported by an accompanying set of runtime libraries, and an OpenCL icd file that references the platform library.
- An OpenCL application could potentially use XeonPhi, AMD or Intel CPUs, and AMD/Nvidia GPGPUs on the same physical node.
- If we support multi-pltform/multi-device, should we have multiple application environments for each combination? For example, OpenCL-1_1_NVIDIA_GPU,
Notation: Static = we only need to generate this value once. It rarely changes, so the value can be pulled in from a file. Dynamic = an external process will generate a new value every time the info provider is executed.
ApplicationEnvironment | ||||
---|---|---|---|---|
Entity | Inherits from | Description | ||
ApplicationEnvironment | Entity | A description of the installed application software available or software environment characteristics available within one or more Execution Environments. | ||
Inherited Attribute | Type | Mult | Unit | Description |
Name | OPENCL | 0..1 | Generated from YAIM SW Tag. Suggest Tag of OpenCL or OpenCL-MAJOR_MINOR | |
OtherInfo | String | * | Placeholder to publish info that does not fit in any other attribute. Free-form string, comma-separated tags, (name, value ) pair are all examples of valid syntax. Currently used to add information about the info provider, but we could use it as an alternative to the ApplicationHandle entity. | |
Attribute | Type/Value | Mult | Unit | Description |
AppName | OpenCL | 1 | Static:: The name of the application or environment - generated from SW Tag. | |
AppVersion | Blank or MAJOR.MINOR, Useful if the SW Tag does not include the version info | 0..1 | Static: use value return from OpenCL DeviceQuery API? | |
Repository | URL | 0..1 | Static: Do we have a use for this? | |
State | AppEnvStat_t | 0..1 | Static?: Do we have a use for this? | |
RemovalDate | DateTime_t | 0..1 | Static: Use? RC should decide on whether to use this? | |
License | License_t | 0..1 | Static: Use? RC should decide on whether to use this? | |
Description | String | 0.1 | Static: Use? Do we need to add an extra description? | |
BestBenchmark | Benckmark_t | * | Static: Very useful attribute. Open enumeration - What benchmark is appropriate here? We would have to publish an extra GLUE2Benchmark entity | |
ParallelSupport | ParallelSupport_t | 0..1 | Static: This is an open enumeration (mpi,none,openmp) Do we add another value, e.g gpgpu? | |
MaxSlots | UInt32 | 0..1 | slot | Dynamic?: Useful as a means of advertising the number of available Nvidia cards. Value obtained via batch system? |
MaxJobs | UInt32 | 0..1 | job | Dynamic?: The maximum number of concurrent jobs that may use the application |
MaxUserSeats | UInt32 | 0..1 | user seat | Dynamic?: Is this useful? What are the use-cases? |
FreeSlots | UInt32 | 0..1 | slot | Dynamic?: Can we extract this from batch system? |
FreeJobs | UInt32 | 0..1 | job | Dynamic?: Useful as a means of advertising the number cuda jobs that can run immediately. |
FreeUserSeats | UInt32 | 0..1 | user seat | Dynamic?: The current number of free seats for additional users to use the application. |
Association End | Mult. | Description | ||
ExecutionEnvironment.ID | * | An application environment MAY be used in zero or more execution environments | ||
ComputingManager.ID | 1 | An application environment is part of a computing manager. | ||
ApplicationHandle.ID | * | An application environment MAY be handled via zero or more application handles. | ||
Inherited Association End | Mult. | Description | ||
Extension.Key | * | The entity MAY be extended via key-value pairs |