any help in understanding why this does not compile would be very welcome
regards
Riccardo
//[hello_world_client_getting_started
#include <hpx/hpx_init.hpp>
#include <hpx/hpx.hpp>
#include <hpx/include/parallel_algorithm.hpp>
#include <hpx/include/parallel_numeric.hpp>
#include <hpx/include/threads.hpp>
#include <hpx/include/threadmanager.hpp>
#include <hpx/include/lcos.hpp>
#include <unordered_map>
#include <unordered_set>
#include <vector>
#include <functional>
//compile with
//g++ -std=c++14 -fPIC coloring.cpp -o coloring.exe
-I/home/rrossi/scratch/hpx/build -I/home/rrossi/scratch/hpx/hpx
-I/home/rrossi/compiled_libraries/boost/include/
-L/home/rrossi/scratch/hpx/build/lib -lhpx
-L/home/rrossi/compiled_libraries/boost/lib/ -lboost_program_options
-lboost_system -lboost_thread
//this one would be the function to process a color, that is, a collection
of columns
hpx::lcos::shared_future<void> do_work(unsigned int color,
std::vector<hpx::lcos::shared_future<void> >& dependencies)
{
std::cout << "i am " << color << std::endl;
return my_dependencies = hpx::lcos::shared_future<void>(
hpx::when_all(dependencies.begin(), dependencies.end()) );
}
int hpx_main(boost::program_options::variables_map&)
{
int ncolors = 6;
std::vector< std::unordered_set<unsigned int> > dependencies(ncolors);
dependencies[0]; //first has no dependencies
dependencies[1].insert({0}); //1 can be launched when 0 is completed
dependencies[2].insert({0,1}); //2 can be launched when 0 and 1 are
both completed
dependencies[3].insert({0,2});
dependencies[4].insert({1});
dependencies[5].insert({0});
//this is a set with all of the tasks i am spawning
std::unordered_map< unsigned int, hpx::lcos::shared_future<void> >
work_items;
//here i actually spawn the threads
for(unsigned int i=0; i<ncolors; i++)
{
std::vector< hpx::lcos::shared_future<void> > item_dependencies;
auto& my_dependencies = dependencies[i];
for(unsigned int k=0; k<dependencies[i].size();i++)
{
unsigned int c = *(my_dependencies.find(k));
item_dependencies.push_back(c); //fill the item_dependencies
on the base of the already constructed shared_futures
}
auto Op = hpx::util::unwrapped(&do_work);
work_items[i] = hpx::dataflow(hpx::launch::async, Op, i,
item_dependencies);
}
return hpx::finalize(); // Initiate shutdown of the runtime system.
}
int main(int argc, char* argv[])
{
return hpx::init(argc, argv); // Initialize and run HPX.
}
//this loop doesn't really matter. It is computing the Id of the
dependencies for the case of a triangular solve (and may well be wrong),
//that is the Id of the colors that need to be finished before actually
computing a given color
// std::vector< std::set<unsigned int> > dependencies(ncolors);
// for(auto row = rows[0]; row < nrows; row++)
// {
// const auto row_color = colors[row];
//
// for(auto col = cols[row]; col<cols[row+1]; ++col)
// {
// const auto col_color = colors[col];
// if(col_color != row_color)
// {
// dependencies[col_color].insert(col_color);
// }
// }
// }
--
*Riccardo Rossi*
PhD, Civil Engineer
member of the Kratos Team: www.cimne.com/kratos
Tenure Track Lecturer at Universitat Politècnica de Catalunya,
BarcelonaTech (UPC)
Full Research Professor at International Center for Numerical Methods in
Engineering (CIMNE)
C/ Gran Capità, s/n, Campus Nord UPC, Ed. B0, Despatx 102
(please deliver post to the porters of building C1)
08034 – Barcelona – Spain – www.cimne.com -
T.(+34) 93 401 56 96 skype: *rougered4*
<http://www.cimne.com/>
<https://www.facebook.com/cimne> <http://blog.cimne.com/>
<http://vimeo.com/cimne> <http://www.youtube.com/user/CIMNEvideos>
<http://www.linkedin.com/company/cimne> <https://twitter.com/cimne>
Les dades personals contingudes en aquest missatge són tractades amb la
finalitat de mantenir el contacte professional entre CIMNE i voste. Podra
exercir els drets d'accés, rectificació, cancel·lació i oposició,
dirigint-se a [email protected]. La utilització de la seva adreça de
correu electronic per part de CIMNE queda subjecte a les disposicions de la
Llei 34/2002, de Serveis de la Societat de la Informació i el Comerç
Electronic.
Imprimiu aquest missatge, només si és estrictament necessari.
<http://www.cimne.com/>
_______________________________________________
hpx-users mailing list
[email protected]
https://mail.cct.lsu.edu/mailman/listinfo/hpx-users