Распараллелить конструкцию цикла 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]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Распараллелить конструкцию цикла double for для комбинаций без замены
    Anonymous » » в форуме C++
    0 Ответы
    13 Просмотры
    Последнее сообщение Anonymous
  • Оптимизация фильтрованных комбинаций комбинаций
    Anonymous » » в форуме Python
    0 Ответы
    22 Просмотры
    Последнее сообщение Anonymous
  • Попытка найти наименьшее положительное число для float, double, long double. Работает для двойных и длинных двойных знач
    Anonymous » » в форуме C++
    0 Ответы
    101 Просмотры
    Последнее сообщение Anonymous
  • Integer -> double распаковывает, но Double -> int не распаковывает. Почему?
    Гость » » в форуме JAVA
    0 Ответы
    73 Просмотры
    Последнее сообщение Гость
  • Как получить тот же результат, что и Uniform_real_distribution<double> r(numeric_limits<double>::lowest(), numeric_limit
    Anonymous » » в форуме C++
    0 Ответы
    50 Просмотры
    Последнее сообщение Anonymous

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