DLB Logo

Getting started

  • Components Overview
    • LeWI: Lend When Idle
    • DROM: Dynamic Resource Ownership Manager
    • TALP: Tracking Application Live Performance
  • How to install DLB
    • Build requirements
    • Installation steps
    • Other installation methods
      • Downloading from git repository
      • Meson
    • DLB configure flags
      • Debug and Instrumentation versions
      • Optional dependencies
      • Additional MPI configure flags
  • How to run with DLB
    • Examples
  • Contents of the installation
    • Structure after installation
    • Binaries
    • Libraries
    • Examples
      • DROM
      • MPI + OpenMP / MPI + OpenMP (OMPT) / MPI + OmpSs
      • LeWI with custom runtime system
      • LeWI Mask with a consumer service
      • TALP
      • Monitoring Regions
      • OMPT
      • Barrier
      • Named Barrier
      • CMake project
      • Statistics
    • Scripts
  • Technical Requirements
    • Programming models
    • POSIX Shared Memory
    • Preload mechanism for MPI applications
    • Non-busy-waiting for MPI calls
    • Parallel regions in OpenMP
  • Citing DLB
    • Publications

LeWI

  • LeWI for improving Load Balance in Applications
    • Using a DLB script provided in the installation
    • LeWI Examples by Programming Model
      • MPI + OmpSs
      • MPI + OpenMP
      • MPI + OpenMP (with OMPT support)
    • LewI option flags

DROM

  • DROM for making the application react to changes in the CPU affinity
    • DROM example

TALP

  • TALP for monitoring the Programming Model efficiencies
    • Reporting POP metrics at the end of the execution
      • MPI-only executions
      • OpenMP-only executions
      • Hybrid (OpenMP+MPI) executions
      • NVIDIA GPU executions
      • AMD GPU executions
    • Defining custom monitoring regions
      • Inspecting monitoring regions within the source code
      • Special values for monitoring regions
      • Computing POP metrics for a region at run time
    • Enabling Hardware Counters
    • TALP option flags
  • TALP Performance metrics
    • Host-only metrics
      • Classification of execution time
      • OpenMP metrics
      • MPI metrics
      • Hybrid parallel efficiency
      • Interaction between MPI and OpenMP metrics
    • Host and GPU metrics
  • TALP-Pages
    • Installation
    • Overview
    • Folder structure
    • I want to use TALP-Pages on my laptop
    • I want to use TALP-Pages in my CI/CD framework
      • GitLab
      • GitHub

Other tools

  • DLB_Barrier
    • Use cases
    • API usage

API Documentation

  • Public API
    • DLB Types
    • DLB Basic API
    • LeWI API
    • Dynamic Resource Manager Interface
    • TALP Interface
      • DLB_TALP_QueryPOPNodeMetrics()
  • Advanced Usage
    • DLB Return Errors
    • Callbacks
    • Asynchronous mode
      • Requests
    • OMPT
      • Usage
      • Summary

FAQ

  • FAQ: Frequently Asked Questions
    • Does my application need to meet any requirements to run with DLB?
    • How to decide which DLB library to link with or to preload?
    • Which should I use, LeWI or DROM for my application?
    • DLB fails registering a mask. What does it mean?
    • I’m running a hybrid MPI + OpenMP application but DLB doesn’t seem to have any impact
    • I’m running a well allocated hybrid MPI + OpenMP but DLB still doesn’t do anything.
    • How do I share CPUs between unrelated applications?
    • How do I prevent sharing CPUs between applications?
    • Can I see DLB in action in a Paraver trace?
    • Can I see DLB events in a Paraver trace?
    • What DLB library do I need to use if I want to trace the application but not DLB?

Man pages

  • dlb
    • NAME
    • SYNOPSIS
    • DESCRIPTION
    • AUTHOR
    • SEE ALSO
  • dlb_run
    • NAME
    • SYNOPSIS
    • DESCRIPTION
    • OPTIONS
    • AUTHOR
    • SEE ALSO
  • dlb_shm
    • NAME
    • SYNOPSIS
    • DESCRIPTION
    • AUTHOR
    • SEE ALSO
  • dlb_taskset
    • NAME
    • SYNOPSIS
    • DESCRIPTION
    • OPTIONS
    • CPU_LIST FORMAT
    • AUTHOR
    • SEE ALSO
  • dlb.h
    • NAME
    • SYNOPSIS
      • Macros
      • Functions
    • Macro Definition Documentation
      • #define DLB_VERSION 0x30700
    • Function Documentation
      • int DLB_Init (int ncpus, const_dlb_cpu_set_t mask, const char * dlb_args)
      • int DLB_Finalize (void)
      • int DLB_PreInit (const_dlb_cpu_set_t mask, char *** next_environ)
      • int DLB_Enable (void)
      • int DLB_Disable (void)
      • int DLB_SetMaxParallelism (int max)
      • int DLB_UnsetMaxParallelism (void)
      • int DLB_CallbackSet (dlb_callbacks_t which, dlb_callback_t callback, void * arg)
      • int DLB_CallbackGet (dlb_callbacks_t which, dlb_callback_t * callback, void ** arg)
      • int DLB_Lend (void)
      • int DLB_LendCpu (int cpuid)
      • int DLB_LendCpus (int ncpus)
      • int DLB_LendCpuMask (const_dlb_cpu_set_t mask)
      • int DLB_Reclaim (void)
      • int DLB_ReclaimCpu (int cpuid)
      • int DLB_ReclaimCpus (int ncpus)
      • int DLB_ReclaimCpuMask (const_dlb_cpu_set_t mask)
      • int DLB_AcquireCpu (int cpuid)
      • int DLB_AcquireCpus (int ncpus)
      • int DLB_AcquireCpuMask (const_dlb_cpu_set_t mask)
      • int DLB_AcquireCpusInMask (int ncpus, const_dlb_cpu_set_t mask)
      • int DLB_Borrow (void)
      • int DLB_BorrowCpu (int cpuid)
      • int DLB_BorrowCpus (int ncpus)
      • int DLB_BorrowCpuMask (const_dlb_cpu_set_t mask)
      • int DLB_BorrowCpusInMask (int ncpus, const_dlb_cpu_set_t mask)
      • int DLB_Return (void)
      • int DLB_ReturnCpu (int cpuid)
      • int DLB_ReturnCpuMask (const_dlb_cpu_set_t mask)
      • int DLB_PollDROM (int * ncpus, dlb_cpu_set_t mask)
      • int DLB_PollDROM_Update (void)
      • int DLB_CheckCpuAvailability (int cpuid)
      • int DLB_Barrier (void)
      • int DLB_BarrierAttach (void)
      • int DLB_BarrierDetach (void)
      • dlb_barrier_t* DLB_BarrierNamedRegister (const char * barrier_name, dlb_barrier_flags_t flags)
      • dlb_barrier_t* DLB_BarrierNamedGet (const char * barrier_name, dlb_barrier_flags_t flags)
      • int DLB_BarrierNamed (dlb_barrier_t * barrier)
      • int DLB_BarrierNamedAttach (dlb_barrier_t * barrier)
      • int DLB_BarrierNamedDetach (dlb_barrier_t * barrier)
      • int DLB_SetVariable (const char * variable, const char * value)
      • int DLB_GetVariable (const char * variable, char * value)
      • int DLB_PrintVariables (int print_extended)
      • int DLB_PrintShmem (int num_columns, dlb_printshmem_flags_t print_flags)
      • const char* DLB_Strerror (int errnum)
      • int DLB_SetObserverRole (bool thread_is_observer)
      • int DLB_GetVersion (int * major, int * minor, int * patch)
      • int DLB_GetGPUAffinity (char * buffer, size_t buffer_size, bool full_uuid)
      • int DLB_AutoSizerStart (void)
      • int DLB_AutoSizerEnd (void)
    • Author
  • dlb_drom.h
    • NAME
    • SYNOPSIS
      • Functions
    • Function Documentation
      • int DLB_DROM_Attach (void)
      • int DLB_DROM_Detach (void)
      • int DLB_DROM_GetNumCpus (int * ncpus)
      • int DLB_DROM_GetPidList (int * pidlist, int * nelems, int max_len)
      • int DLB_DROM_GetProcessMask (int pid, dlb_cpu_set_t mask, dlb_drom_flags_t flags)
      • int DLB_DROM_SetProcessMask (int pid, const_dlb_cpu_set_t mask, dlb_drom_flags_t flags)
      • int DLB_DROM_SetProcessMaskStr (int pid, const char * mask, dlb_drom_flags_t flags)
      • int DLB_DROM_PreInit (int pid, const_dlb_cpu_set_t mask, dlb_drom_flags_t flags, char *** next_environ)
      • int DLB_DROM_PostFinalize (int pid, dlb_drom_flags_t flags)
      • int DLB_DROM_RecoverStolenCpus (int pid)
    • Author
  • dlb_errors.h
    • NAME
    • SYNOPSIS
      • Enumerations
    • Enumeration Type Documentation
      • enum DLBErrorCodes
    • Author
  • dlb_sp.h
    • NAME
    • SYNOPSIS
      • Functions
    • Function Documentation
      • dlb_handler_t DLB_Init_sp (int ncpus, const_dlb_cpu_set_t mask, const char * dlb_args)
      • int DLB_Finalize_sp (dlb_handler_t handler)
      • int DLB_Enable_sp (dlb_handler_t handler)
      • int DLB_Disable_sp (dlb_handler_t handler)
      • int DLB_SetMaxParallelism_sp (dlb_handler_t handler, int max)
      • int DLB_UnsetMaxParallelism_sp (dlb_handler_t handler)
      • int DLB_CallbackSet_sp (dlb_handler_t handler, dlb_callbacks_t which, dlb_callback_t callback, void * arg)
      • int DLB_CallbackGet_sp (dlb_handler_t handler, dlb_callbacks_t which, dlb_callback_t * callback, void ** arg)
      • int DLB_Lend_sp (dlb_handler_t handler)
      • int DLB_LendCpu_sp (dlb_handler_t handler, int cpuid)
      • int DLB_LendCpus_sp (dlb_handler_t handler, int ncpus)
      • int DLB_LendCpuMask_sp (dlb_handler_t handler, const_dlb_cpu_set_t mask)
      • int DLB_Reclaim_sp (dlb_handler_t handler)
      • int DLB_ReclaimCpu_sp (dlb_handler_t handler, int cpuid)
      • int DLB_ReclaimCpus_sp (dlb_handler_t handler, int ncpus)
      • int DLB_ReclaimCpuMask_sp (dlb_handler_t handler, const_dlb_cpu_set_t mask)
      • int DLB_AcquireCpu_sp (dlb_handler_t handler, int cpuid)
      • int DLB_AcquireCpus_sp (dlb_handler_t handler, int ncpus)
      • int DLB_AcquireCpuMask_sp (dlb_handler_t handler, const_dlb_cpu_set_t mask)
      • int DLB_AcquireCpusInMask_sp (dlb_handler_t handler, int ncpus, const_dlb_cpu_set_t mask)
      • int DLB_Borrow_sp (dlb_handler_t handler)
      • int DLB_BorrowCpu_sp (dlb_handler_t handler, int cpuid)
      • int DLB_BorrowCpus_sp (dlb_handler_t handler, int ncpus)
      • int DLB_BorrowCpuMask_sp (dlb_handler_t handler, const_dlb_cpu_set_t mask)
      • int DLB_BorrowCpusInMask_sp (dlb_handler_t handler, int ncpus, const_dlb_cpu_set_t mask)
      • int DLB_Return_sp (dlb_handler_t handler)
      • int DLB_ReturnCpu_sp (dlb_handler_t handler, int cpuid)
      • int DLB_ReturnCpuMask_sp (dlb_handler_t handler, const_dlb_cpu_set_t mask)
      • int DLB_PollDROM_sp (dlb_handler_t handler, int * ncpus, dlb_cpu_set_t mask)
      • int DLB_PollDROM_Update_sp (dlb_handler_t handler)
      • int DLB_CheckCpuAvailability_sp (dlb_handler_t handler, int cpuid)
      • int DLB_SetVariable_sp (dlb_handler_t handler, const char * variable, const char * value)
      • int DLB_GetVariable_sp (dlb_handler_t handler, const char * variable, char * value)
      • int DLB_PrintVariables_sp (dlb_handler_t handler, int print_extended)
    • Author
  • dlb_talp.h
    • NAME
    • SYNOPSIS
      • Data Structures
      • Macros
      • Enumerations
      • Functions
    • Macro Definition Documentation
      • #define DLB_GLOBAL_REGION_NAME ‘Global’
      • #define DLB_GLOBAL_REGION NULL
      • #define DLB_MPI_REGION NULL /* deprecated in favor of DLB_GLOBAL_REGION */
      • #define DLB_IMPLICIT_REGION NULL /* deprecated in favor of DLB_GLOBAL_REGION */
      • #define DLB_LAST_OPEN_REGION (void*)1
    • Enumeration Type Documentation
      • anonymous enum
    • Function Documentation
      • int DLB_TALP_Attach (void)
      • int DLB_TALP_Detach (void)
      • int DLB_TALP_GetNumCPUs (int * ncpus)
      • int DLB_TALP_GetPidList (int * pidlist, int * nelems, int max_len)
      • int DLB_TALP_GetTimes (int pid, double * mpi_time, double * useful_time)
      • int DLB_TALP_GetNodeTimes (const char * name, dlb_node_times_t* node_times_list, int * nelems, int max_len)
      • int DLB_TALP_QueryPOPNodeMetrics (const char * name, dlb_node_metrics_t* node_metrics)
      • dlb_monitor_t* DLB_MonitoringRegionGetGlobal (void)
      • dlb_monitor_t* DLB_MonitoringRegionGetImplicit (void)
      • const dlb_monitor_t* DLB_MonitoringRegionGetMPIRegion (void)
      • dlb_monitor_t* DLB_MonitoringRegionRegister (const char * name)
      • int DLB_MonitoringRegionReset (dlb_monitor_t* handle)
      • int DLB_MonitoringRegionStart (dlb_monitor_t* handle)
      • int DLB_MonitoringRegionStop (dlb_monitor_t* handle)
      • int DLB_MonitoringRegionReport (const dlb_monitor_t* handle)
      • int DLB_MonitoringRegionsUpdate (void)
      • int DLB_TALP_CollectPOPMetrics (dlb_monitor_t* monitor,dlb_pop_metrics_t* pop_metrics)
      • int DLB_TALP_CollectPOPNodeMetrics (dlb_monitor_t* monitor,dlb_node_metrics_t* node_metrics)
      • int DLB_TALP_CollectNodeMetrics (dlb_monitor_t* monitor,dlb_node_metrics_t* node_metrics)
    • Author
  • dlb_types.h
    • NAME
    • SYNOPSIS
      • Typedefs
      • Enumerations
    • Typedef Documentation
      • typedef struct dlb_barrier_t dlb_barrier_t
      • typedef void* dlb_handler_t
      • typedef void* dlb_cpu_set_t
      • typedef const void* const_dlb_cpu_set_t
      • typedef void(* dlb_callback_t) (void)
      • typedef void(* dlb_callback_set_num_threads_t) (int num_threads, void *arg)
      • typedef void(* dlb_callback_set_active_mask_t) (const_dlb_cpu_set_t mask, void *arg)
      • typedef void(* dlb_callback_set_process_mask_t) (const_dlb_cpu_set_t mask, void *arg)
      • typedef void(* dlb_callback_add_active_mask_t) (const_dlb_cpu_set_t mask, void *arg)
      • typedef void(* dlb_callback_add_process_mask_t) (const_dlb_cpu_set_t mask, void *arg)
      • typedef void(* dlb_callback_enable_cpu_t) (int cpuid, void *arg)
      • typedef void(* dlb_callback_disable_cpu_t) (int cpuid, void *arg)
      • typedef void(* dlb_callback_enable_cpu_set_t) (const_dlb_cpu_set_t mask, void *arg)
      • typedef void(* dlb_callback_disable_cpu_set_t) (const_dlb_cpu_set_t mask, void *arg)
    • Enumeration Type Documentation
      • anonymous enum
      • anonymous enum
      • enum dlb_drom_flags_t
      • enum dlb_printshmem_flags_t
      • enum dlb_barrier_flags_t
      • enum dlb_callbacks_t
    • Author
DLB
  • Index

Index

B | C | D | L | M | T

B

  • Basic set
  • built-in function
    • DLB_TALP_QueryPOPNodeMetrics()

C

  • const_dlb_cpu_set_t

D

  • dlb_callback_t
  • dlb_callbacks_t
  • dlb_cpu_set_t
  • dlb_drom_flags_t
  • dlb_monitor_t
  • dlb_node_metrics_t
  • dlb_pop_metrics_t
  • dlb_printshmem_flags_t
  • DLB_TALP_QueryPOPNodeMetrics()
    • built-in function
  • DROM: Dynamic Resource Ownership Manager

L

  • LeWI: Lend When Idle

M

  • MPI API

T

  • TALP: Tracking Application Live Performance

© Copyright 2015-2026, Barcelona Supercomputing Center.