Hi,
Thanks Karl !
This will allow serve us when we deal with multiple GPU ;)
Best regards,
Philippe
2013/7/29 Karl Rupp <r...@iue.tuwien.ac.at>
> Hi Andreas,
>
> - good news:
> I made good progress on introducing a generic context. For code lines
> such as
> viennacl::vector<T> x = y + z;
> the vector x is created in the correct context (i.e. deduced from y, z).
> This resolves most of the issues with temporaries.
>
> - bad news:
> I haven't found enough time for applying the same scheme to matrices
> yet. As the infrastructure is mostly ready, this shouldn't take too long
> and be completed during tomorrow. Stay tuned :-)
>
> Best regards,
> Karli
>
>
>
> On 07/21/2013 09:59 AM, Andreas IHU wrote:
> > Hi again,
> >
> > here's another problem which just occured to me while working with the
> latest developer version from GitHub.
> >
> > I have a program which has to iteratively solve a number of independent
> equation systems.
> > The actual number of systems may vary between 1 and 10.
> > Because they are totally independent from each other, we assign each
> system a number of OpenMP threads allowing them to be solved in parallel at
> the same time.
> >
> > Now I tried to integrate ViennaCL into that scheme and used the
> multithreaded.cpp example as a guide.
> > The main difference is that I use OpenMP threads instead of Boost ones.
> >
> > My approach is to first create as many different OpenCL contexts as
> equation systems do exist and split the existing OpenCL devices over them.
> > If just one device exists, its gonna be used by all contexts, which
> shouldn't be a problem.
> > Then I call
> >
> > viennacl::ocl::switch_context()
> >
> > for every equation system and allocate all the required VCL vectors and
> matrices required just afterwards.
> > This makes sure they are assigned and allocated for the context they
> actually belong to.
> > This all still takes place in serial mode and doesn't bring me in
> trouble :-)
> >
> > The actual problems begin, when the solver routine of our programm is
> called in parallel mode.
> >
> > 1.) It fills a preallocated STL matrix with the current coefficients and
> updates the RHS vector.
> > These are gonna be copied to their VCL counterparts using
> > viennacl::copy(stlmat,vclmat);
> > What happens exactly during this call is that
> >
> > viennacl::copy()->
> > viennacl::detail::copy_impl()->
> > gpu_matrix.set()->
> > viennacl::backend::memory_create() (in
> compressed_matrix.hpp at row 519ff)
> >
> > allocates 3 new buffers which should be created for the context
> they belong to.
> > This could be achieved by calling
> > viennacl::ocl::switch_context()
> > before the copy takes place.
> > Unfortunately this isn't an option because I would have to use a
> OMP Critical region to make sure that the parallel calls to
> switch_context() & copy() do not overlap each other leading to race
> conditions.
> > So what I need is an oportunity to specify a context in which the
> copy() takes place without having to change the actual context.
> >
> > 2.) The same problem happens afterwards when calling the actual
> Preconditioner and solve() routines.
> > They too allocate memory for the currently active context.
> >
> > I built a temporary workaround by putting the whole sequence into a
> OpenMP Critical region which prevents context errors in ViennaCL,
> > but makes it impossible to solve the equation systems in parallel.
> >
> > Any suggestions on that?
> > Kind regards
> > Andreas Rost
> >
> >
> >
> >
> >
> ------------------------------------------------------------------------------
> > See everything from the browser to the database with AppDynamics
> > Get end-to-end visibility with application monitoring from AppDynamics
> > Isolate bottlenecks and diagnose root cause in seconds.
> > Start your free trial of AppDynamics Pro today!
> >
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> > _______________________________________________
> > ViennaCL-devel mailing list
> > ViennaCL-devel@lists.sourceforge.net
> > https://lists.sourceforge.net/lists/listinfo/viennacl-devel
> >
>
>
>
> ------------------------------------------------------------------------------
> See everything from the browser to the database with AppDynamics
> Get end-to-end visibility with application monitoring from AppDynamics
> Isolate bottlenecks and diagnose root cause in seconds.
> Start your free trial of AppDynamics Pro today!
> http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
> _______________________________________________
> ViennaCL-devel mailing list
> ViennaCL-devel@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/viennacl-devel
>
------------------------------------------------------------------------------
See everything from the browser to the database with AppDynamics
Get end-to-end visibility with application monitoring from AppDynamics
Isolate bottlenecks and diagnose root cause in seconds.
Start your free trial of AppDynamics Pro today!
http://pubads.g.doubleclick.net/gampad/clk?id=48808831&iu=/4140/ostg.clktrk
_______________________________________________
ViennaCL-devel mailing list
ViennaCL-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/viennacl-devel