From: Martin Quinson Date: Sat, 27 Oct 2018 14:31:49 +0000 (+0200) Subject: Deprecate the C API of parallel_execute X-Git-Tag: v3_22~820 X-Git-Url: http://info.iut-bm.univ-fcomte.fr/pub/gitweb/simgrid.git/commitdiff_plain/977ce74cee777641db27a02631b20bd3ac793e8b?hp=4cedb26366276e3045ed070fb6df5b6e6f77967e Deprecate the C API of parallel_execute --- diff --git a/include/simgrid/s4u/Actor.hpp b/include/simgrid/s4u/Actor.hpp index 098c8b90d2..926cefb276 100644 --- a/include/simgrid/s4u/Actor.hpp +++ b/include/simgrid/s4u/Actor.hpp @@ -475,9 +475,11 @@ XBT_PUBLIC void parallel_execute(std::vector hosts, std::vector bytes_amounts, double timeout); #ifndef DOXYGEN -XBT_PUBLIC void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount); -XBT_PUBLIC void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount, - double timeout); +XBT_ATTRIB_DEPRECATED_v325("Please use std::vectors as parameters") XBT_PUBLIC + void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount); +XBT_ATTRIB_DEPRECATED_v325("Please use std::vectors as parameters") XBT_PUBLIC + void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount, + double timeout); #endif XBT_PUBLIC ExecPtr exec_init(double flops_amounts); diff --git a/src/plugins/file_system/s4u_FileSystem.cpp b/src/plugins/file_system/s4u_FileSystem.cpp index e65a763f1f..35e539cea6 100644 --- a/src/plugins/file_system/s4u_FileSystem.cpp +++ b/src/plugins/file_system/s4u_FileSystem.cpp @@ -105,11 +105,11 @@ sg_size_t File::read(sg_size_t size) if (strcmp(host->get_cname(), Host::current()->get_cname())) { /* the file is hosted on a remote host, initiate a communication between src and dest hosts for data transfer */ XBT_DEBUG("File is on %s remote host, initiate data transfer of %llu bytes.", host->get_cname(), read_size); - Host* m_host_list[] = {Host::current(), host}; - double* flops_amount = new double[2]{0, 0}; - double* bytes_amount = new double[4]{0, 0, static_cast(read_size), 0}; + std::vector m_host_list = {Host::current(), host}; + std::vector flops_amount = {0., 0.}; + std::vector bytes_amount = {0., 0., static_cast(read_size), 0.}; - this_actor::parallel_execute(2, m_host_list, flops_amount, bytes_amount); + this_actor::parallel_execute(m_host_list, flops_amount, bytes_amount); } return read_size; @@ -131,11 +131,11 @@ sg_size_t File::write(sg_size_t size) if (strcmp(host->get_cname(), Host::current()->get_cname())) { /* the file is hosted on a remote host, initiate a communication between src and dest hosts for data transfer */ XBT_DEBUG("File is on %s remote host, initiate data transfer of %llu bytes.", host->get_cname(), size); - Host* m_host_list[] = {Host::current(), host}; - double* flops_amount = new double[2]{0, 0}; - double* bytes_amount = new double[4]{0, static_cast(size), 0, 0}; + std::vector m_host_list = {Host::current(), host}; + std::vector flops_amount = {0, 0}; + std::vector bytes_amount = {0, static_cast(size), 0, 0}; - this_actor::parallel_execute(2, m_host_list, flops_amount, bytes_amount); + this_actor::parallel_execute(m_host_list, flops_amount, bytes_amount); } XBT_DEBUG("WRITE %s on disk '%s'. size '%llu/%llu'", get_path(), local_storage_->get_cname(), size, size_); @@ -264,11 +264,11 @@ int File::remote_copy(sg_host_t host, const char* fullpath) XBT_DEBUG("Initiate data transfer of %llu bytes between %s and %s.", read_size, src_host->get_cname(), storage_dest->get_host()->get_cname()); - Host* m_host_list[] = {src_host, dst_host}; - double* flops_amount = new double[2]{0, 0}; - double* bytes_amount = new double[4]{0, static_cast(read_size), 0, 0}; + std::vector m_host_list = {src_host, dst_host}; + std::vector flops_amount = {0, 0}; + std::vector bytes_amount = {0, static_cast(read_size), 0, 0}; - this_actor::parallel_execute(2, m_host_list, flops_amount, bytes_amount); + this_actor::parallel_execute(m_host_list, flops_amount, bytes_amount); /* Create file on remote host, write it and close it */ File* fd = new File(fullpath, dst_host, nullptr); diff --git a/src/s4u/s4u_Actor.cpp b/src/s4u/s4u_Actor.cpp index 56d2827b3f..506841b786 100644 --- a/src/s4u/s4u_Actor.cpp +++ b/src/s4u/s4u_Actor.cpp @@ -318,6 +318,7 @@ void parallel_execute(std::vector hosts, std::vector flops_a simcall_execution_wait(s); } +// deprecated void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, double* bytes_amount, double timeout) { smx_activity_t s = @@ -327,9 +328,14 @@ void parallel_execute(int host_nb, s4u::Host** host_list, double* flops_amount, delete[] bytes_amount; } +// deprecated void parallel_execute(int host_nb, sg_host_t* host_list, double* flops_amount, double* bytes_amount) { - parallel_execute(host_nb, host_list, flops_amount, bytes_amount, /* timeout */ -1); + smx_activity_t s = simcall_execution_parallel_start("", host_nb, host_list, flops_amount, bytes_amount, + /* rate */ -1, /*timeout*/ -1); + simcall_execution_wait(s); + delete[] flops_amount; + delete[] bytes_amount; } ExecPtr exec_init(double flops_amount) diff --git a/src/smpi/plugins/sampi_loadbalancer.cpp b/src/smpi/plugins/sampi_loadbalancer.cpp index 375a624013..a49f1c941e 100644 --- a/src/smpi/plugins/sampi_loadbalancer.cpp +++ b/src/smpi/plugins/sampi_loadbalancer.cpp @@ -80,14 +80,13 @@ public: migrate_to_host = lb.get_mapping(simgrid::s4u::Actor::self()); if (cur_host != migrate_to_host) { // Origin and dest are not the same -> migrate - sg_host_t migration_hosts[2] = {cur_host, migrate_to_host}; - // Changing this to double[2] ... will cause trouble with parallel_execute, because that fct is trying to call free(). - double* comp_amount = new double[2]{0, 0}; - double* comm_amount = new double[4]{0, /*must not be 0*/std::max(args.memory_consumption, 1.0), 0, 0}; + std::vector migration_hosts = {cur_host, migrate_to_host}; + std::vector comp_amount = {0, 0}; + std::vector comm_amount = {0, /*must not be 0*/ std::max(args.memory_consumption, 1.0), 0, 0}; xbt_os_timer_t timer = smpi_process()->timer(); xbt_os_threadtimer_start(timer); - simgrid::s4u::this_actor::parallel_execute(2, migration_hosts, comp_amount, comm_amount, -1.0); + simgrid::s4u::this_actor::parallel_execute(migration_hosts, comp_amount, comm_amount, -1.0); xbt_os_threadtimer_stop(timer); smpi_execute(xbt_os_timer_elapsed(timer));