parallel processing - C++ AMP nested loop -


i'm working on project requires massive parallel computing. however, tricky problem that, project contains nested loop, this:

for(int i=0; i<19; ++i){     for(int j=0; j<57; ++j){         //the computing section     } } 

to achieve highest gain, need parallelise 2 levels of loops. this:

parallel_for_each{     parallel_for_each{         //computing section     } } 

i tested , found amp doesn't support nested loops. have idea on problem? thanks

you could, @high performance mark suggest collapse 2 loops one. however, don't need c++ amp because supports 2 , 3 dimensional extents on arrays , array_views. can use index multi-dimensional index.

array<float, 2> x(19,57); parallel_for_each(x.extent, [=](index<2> idx) restrict(amp) {     x[idx] = func(x[idx]); });  float func(const float v) restrict(amp) { return v * v; } 

you can access individual sub-indeces in idx using:

int row = idx[0];  int col = idx[1]; 

you should consider amount of work being done computing section. if relatively small may want have each thread process more 1 element of array, x.

the following article worth reading cpu if loops not access memory efficiently can have big impact on performance. arrays row major in c++ amp


Comments

Popular posts from this blog

c# - How to get the current UAC mode -

angularjs - ng-repeat duplicating items after page reload -

javascript - What's causing this slow/delayed audio playback in Safari? -