Распараллелить конструкцию цикла double for для комбинаций без заменыC++

Программы на C++. Форум разработчиков
Anonymous
Распараллелить конструкцию цикла double for для комбинаций без замены

Сообщение Anonymous »

К сожалению, это моя первая попытка использовать OpenMP. У меня есть очень грубый код, который начался как попытка проверки концепции и еще не доработан (зернистостью 50).
У меня есть контейнер с элементами, и я использую два для< /code> выполняет цикл для поиска пар комбинаций.
Например, если у меня есть 10 элементов (a,b,c,d,e,f,g,h,i,j) , я хочу найти такие вещи, как группа {(a),(b,c,d,e,f,g,h,i)} и {(b,c),(a ,d,e,f,g,h,i,j). (эти буквы на самом деле являются кортежами)
nCr:
n фиксировано (например, 10)

Код: Выделить всё

for(cntr=1;cntr
Напоследок вот что-то вроде MWE.  (вроде потому, что существуют определения функций, например print, которые могут помочь при отладке)

[code]#include 
#include 
#include 
#include 
#include 

#include 
#include 

#include 

// https://www.geeksforgeeks.org/2d-vector-of-tuples-in-c-with-examples/
typedef std::vector myvv;
typedef std::tuple mytuple;
typedef std::vector myvtuple;
typedef std::vector myvvtuple;
typedef std::vector myvvvtuple;
typedef std::vector<  std::tuple<  std::tuple, std::tuple   >   > myVTtt;

// https://stackoverflow.com/questions/6245735/pretty-print-stdtuple
#include 

// https://www.gangofcoders.net/solution/creating-all-possible-k-combinations-of-n-items-in-c/
template std::vector getAllCombinations(const std::vector& inputVector, int k)
{
std::vector combinations;
std::vector selector(inputVector.size());
std::fill(selector.begin(), selector.begin() + k, 1);

do {
std::vector selectedIds;
std::vector selectedVectorElements;
for (long unsigned int i = 0; i < inputVector.size(); i++) {
if (selector[i]) {
selectedIds.push_back(i);
}
}
for (auto& id : selectedIds) {
selectedVectorElements.push_back(inputVector[id]);
}
combinations.push_back(selectedVectorElements);
} while (std::prev_permutation(selector.begin(), selector.end()));

return combinations;
}

// https://www.geeksforgeeks.org/2d-vector-of-tuples-in-c-with-examples/
// Function to print 2D vector elements
void print(std::vector& myContainer)
{
std::cout 

Подробнее здесь: [url]https://stackoverflow.com/questions/78996476/parallelize-double-for-loop-construct-for-combinations-w-o-replacement[/url]

Вернуться в «C++»