Alert.png The wiki is deprecated and due to be decommissioned by the end of September 2022.
The content is being migrated to other supports, new updates will be ignored and lost.
If needed you can get in touch with EGI SDIS team using operations @

GPGPU-WG KnowledgeBase GLUE2 Profile Application ApplicationEnvironment ProposedInstances OpenCL

From EGIWiki
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Main operations services Support Documentation Tools Activities Performance Technology Catch-all Services Resource Allocation Security

<< GPGPU Working Group main page

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.

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