Package pilot

Package pilot

source code

BigJob Documentation

This is the BigJob implementation of the Pilot API. Pilot-Jobs (also referred to as Pilot Compute) decouple system level and application level job management.

The main concepts and classes exposed by the Compute part of the API are:

The data side of the Pilot API is symmetric to the compute side. The exposed classes for managing Pilot Data are:

The application workload is represented by so called ComputeUnits and DataUnits:

Both Compute and Data Units are specified using an abstract description object:

The ComputeDataService represents the central entry point for the application workload:

The ComputeDataService (CDS) takes care of the placement of Compute and Data Units. The set of PilotComputes and PilotData available to the CDS can be changed during the application's runtime. The CDS different data-compute affinity and will handle compute/data co-locationing for the requested data-compute workload.

Pilots, Compute and Data Units are associated with a State.

Example:

   from pilot import PilotComputeService, ComputeDataService, State
   
   pilot_compute_service = PilotComputeService()

   # create pilot job service and initiate a pilot job
   pilot_compute_description = {
                            "service_url": 'fork://localhost',
                            "number_of_processes": 1,                             
                            "working_directory": os.path.join(os.getcwd(),"work"),
                            'affinity_datacenter_label': "eu-de-south",              
                            'affinity_machine_label': "mymachine" 
                           }
   
   pilotjob = pilot_compute_service.create_pilot(pilot_compute_description=pilot_compute_description)
        
   compute_data_service = ComputeDataService()
   compute_data_service.add_pilot_compute_service(pilot_compute_service)
   
   # start work unit
   compute_unit_description = {
           "executable": "/bin/date",
           "arguments": [""],
           "number_of_processes": 1,            
           "output": "stdout.txt",
           "error": "stderr.txt",   
           "affinity_datacenter_label": "eu-de-south",              
           "affinity_machine_label": "mymachine" 
   }   
                                                                                                                       
   compute_unit = compute_data_service.submit_compute_unit(compute_unit_description)
   
   compute_data_service.wait()

   compute_data_service.cancel()

All API objects that should be utilized by the application reside in the pilot namespace. The implementation resides in pilot.impl.

Please, refer to https://github.com/saga-project/BigJob/tree/master/examples/pilot-api for an extensive set of examples.

Submodules

Variables
  application_id = 'bigjob'
  version = '0.4.123'
  __package__ = 'pilot'