Logo AND Algorithmique Numérique Distribuée

Public GIT Repository
Minor improv in threads
authorBruno Donassolo <bruno.donassolo@inria.fr>
Fri, 11 Mar 2022 11:36:55 +0000 (12:36 +0100)
committerBruno Donassolo <bruno.donassolo@inria.fr>
Fri, 11 Mar 2022 11:36:55 +0000 (12:36 +0100)
Let the user_bound for bounds given by S4U user (if any).

For the requested_cores, the bound is already configured when creating
the action at CpuCas01Action.

Also, the current implementation for threads use the same mechanism used
by VMs, for a N-thread action:
- priority/sharing_penalty: 1/N to increase the amount of CPU given to
action.
- individual bound: speed < N*C: to limit the action speed to the number
of cores.

src/kernel/resource/VirtualMachineImpl.cpp
src/surf/host_clm03.cpp

index c1ae6a1..e741ba1 100644 (file)
@@ -174,9 +174,7 @@ double VMModel::next_occurring_event(double now)
 Action* VMModel::execute_thread(const s4u::Host* host, double flops_amount, int thread_count)
 {
   auto cpu = host->get_cpu();
-  return cpu->execution_start(thread_count * flops_amount, thread_count,
-                              cpu->get_speed(1.0) / cpu->get_speed_ratio() *
-                                  std::min(thread_count, cpu->get_core_count()));
+  return cpu->execution_start(thread_count * flops_amount, thread_count, -1);
 }
 
 /************
index 55b8cf4..d7353cf 100644 (file)
@@ -97,12 +97,8 @@ Action* HostCLM03Model::execute_parallel(const std::vector<s4u::Host*>& host_lis
 Action* HostCLM03Model::execute_thread(const s4u::Host* host, double flops_amount, int thread_count)
 {
   auto cpu = host->get_cpu();
-  /* Create a single action whose cost is thread_count * flops_amount,, that requests thread_count cores and
-   * is bounded to the currently available speed (i.e., under current load) time the minimum  between the
-   * number of thread and the number of cores of the host */
-  return cpu->execution_start(thread_count * flops_amount, thread_count,
-                              cpu->get_speed(1.0) / cpu->get_speed_ratio() *
-                                  std::min(thread_count, cpu->get_core_count()));
+  /* Create a single action whose cost is thread_count * flops_amount and that requests thread_count cores. */
+  return cpu->execution_start(thread_count * flops_amount, thread_count, -1);
 }
 
 } // namespace resource