| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138 | 
							- /* StarPU --- Runtime system for heterogeneous multicore architectures.
 
-  *
 
-  * Copyright (C) 2017-2020  Université de Bordeaux, CNRS (LaBRI UMR 5800), Inria
 
-  *
 
-  * StarPU is free software; you can redistribute it and/or modify
 
-  * it under the terms of the GNU Lesser General Public License as published by
 
-  * the Free Software Foundation; either version 2.1 of the License, or (at
 
-  * your option) any later version.
 
-  *
 
-  * StarPU is distributed in the hope that it will be useful, but
 
-  * WITHOUT ANY WARRANTY; without even the implied warranty of
 
-  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
 
-  *
 
-  * See the GNU Lesser General Public License in COPYING.LGPL for more details.
 
-  */
 
- #ifndef __STARPURM_PRIVATE_H
 
- #define __STARPURM_PRIVATE_H
 
- enum e_state {
 
- 	state_uninitialized = 0,
 
- 	state_init
 
- };
 
- enum e_starpurm_unit_type
 
- {
 
- 	starpurm_unit_cpu    = 0,
 
- 	starpurm_unit_opencl = 1,
 
- 	starpurm_unit_cuda   = 2,
 
- 	starpurm_unit_mic    = 3,
 
- 	starpurm_unit_ntypes = 4
 
- };
 
- struct s_starpurm
 
- {
 
- 	/* Machine topology as detected by hwloc. */
 
- 	hwloc_topology_t topology;
 
- 	/* Current upper bound on the number of CPU cores selectable for computing with the runtime system. */
 
- 	unsigned max_ncpus;
 
- 	/* Number of currently selected CPU workers */
 
- 	unsigned selected_ncpus;
 
- 	/* Number of currently selected workers (CPU+devices) */
 
- 	unsigned selected_nworkers;
 
- 	/* Initialization state of the RM instance. */
 
- 	int state;
 
- 	/* Boolean indicating the state of the dynamic resource sharing layer.
 
- 	 *
 
- 	 * !0 indicates that dynamic resource sharing is enabled.
 
- 	 * 0 indicates that dynamic resource sharing is disabled.
 
- 	 */
 
- 	int dynamic_resource_sharing;
 
- 	/* Id of the StarPU's sched_ctx used by the RM instance. */
 
- 	unsigned sched_ctx_id;
 
- 	/* Number of unit types supported by this RM instance. */
 
- 	int unit_ntypes;
 
- 	/* Number of unitss available for each type. */
 
- 	int *nunits_by_type;
 
- 	/* Number of units. */
 
- 	int nunits;
 
- 	/* Offset of unit numbering for each type. */
 
- 	int *unit_offsets_by_type;
 
- 	/* Array of units. */
 
- 	struct s_starpurm_unit *units;
 
- 	/* Cpuset of all the StarPU's workers (CPU+devices. */
 
- 	hwloc_cpuset_t global_cpuset;
 
- 	/* Cpuset of all StarPU CPU workers. */
 
- 	hwloc_cpuset_t all_cpu_workers_cpuset;
 
- 	/* Cpuset of all StarPU OpenCL workers. */
 
- 	hwloc_cpuset_t all_opencl_device_workers_cpuset;
 
- 	/* Cpuset of all StarPU CUDA workers. */
 
- 	hwloc_cpuset_t all_cuda_device_workers_cpuset;
 
- 	/* Cpuset of all StarPU MIC workers. */
 
- 	hwloc_cpuset_t all_mic_device_workers_cpuset;
 
- 	/* Cpuset of all StarPU device workers. */
 
- 	hwloc_cpuset_t all_device_workers_cpuset;
 
- 	/* Cpuset of all selected workers (CPU+devices). */
 
- 	hwloc_cpuset_t selected_cpuset;
 
- 	/* Cpuset mask of initially owned cpuset or full if not used. */
 
- 	hwloc_cpuset_t initially_owned_cpuset_mask;
 
- 	/* maximum value among worker ids */
 
- 	int max_worker_id;
 
- 	/* worker id to unit id table */
 
- 	int *worker_unit_ids;
 
- 	/* Temporary contexts accounting. */
 
- 	unsigned int max_temporary_ctxs;
 
- 	unsigned int avail_temporary_ctxs;
 
- 	pthread_mutex_t temporary_ctxs_mutex;
 
- 	pthread_cond_t temporary_ctxs_cond;
 
- 	/* Global StarPU pause state */
 
- 	int starpu_in_pause;
 
- 	/* Event list. */
 
- 	pthread_t event_thread;
 
- 	pthread_mutex_t event_list_mutex;
 
- 	pthread_cond_t event_list_cond;
 
- 	pthread_cond_t event_processing_cond;
 
- 	int event_processing_enabled;
 
- 	int event_processing_ended;
 
- 	struct s_starpurm_event *event_list_head;
 
- 	struct s_starpurm_event *event_list_tail;
 
- };
 
- #ifdef STARPURM_HAVE_DLB
 
- void starpurm_dlb_init(struct s_starpurm *rm);
 
- void starpurm_dlb_exit(void);
 
- int starpurm_dlb_notify_starpu_worker_mask_going_to_sleep(const hwloc_cpuset_t hwloc_workers_cpuset);
 
- int starpurm_dlb_notify_starpu_worker_mask_waking_up(const hwloc_cpuset_t hwloc_workers_cpuset);
 
- #ifdef STARPURM_STARPU_HAVE_WORKER_CALLBACKS
 
- void starpurm_enqueue_event_cpu_unit_available(int cpuid);
 
- #endif
 
- #endif
 
- #endif /* __STARPURM_PRIVATE_H */
 
 
  |