Возможно ли сделать параллель для цикла, индекс которого не является целым? Я использую bigIntegers (новый объект).OpenMP, параллельный для цикла, bigIntegers
ответ
Спецификация OpenMP 4.0 была finalised and published год назад. Он предусматривает, что переменная параллельных циклов должна быть целочисленного типа с подписью или без знака или типа итератора произвольного доступа или типа указателя (§2.6, с.51).
Итак, в принципе нет, невозможно создать параллельные петли с любым типом переменной.
большое спасибо за ваш ответ – cppkhb
Вы можете реализовать планирование самостоятельно. Ниже приведен пример использования эквивалента schedule(static)
с встроенными 128-битными целями GCC.
#pragma omp parallel
{
__int128 start = omp_get_thread_num()*N/omp_get_num_threads();
__int128 finish = (omp_get_thread_num()+1)*N/omp_get_num_threads();
for(__int128 i=start; i<finish; i++) foo(i);
}
Если вы хотите эквивалент schedule(dynamic)
вы можете сделать
__int128 cnt = 0;
#pragma omp parallel
for(__int128 i=0;;) {
#pragma omp atomic capture
i = cnt++;
if(i>=N) break;
foo(i);
}
- 1. условный параллельный цикл openmp
- 2. OpenMP Параллельный код-блок внутри цикла for?
- 3. openmp параллельный для цикла с двумя или более сокращениями
- 4. простой OpenMP параллельный для цикла медленнее, чем последовательные вычисления
- 5. Параллельный qsort using openMP
- 6. OpenMP параллельный для внутри do-while
- 7. Параллельный питон для цикла
- 8. Параллельный для цикла R
- 9. OpenMP для секций цикла
- 10. OpenMP для цикла
- 11. Параллельный for_each с использованием openmp
- 12. Параллельный вывод с использованием OpenMP
- 13. BigIntegers в силе BigIntegers
- 14. OpenMP оптимизирует планирование для цикла
- 15. OpenMP для цикла и указателя
- 16. Выход OpenMP для цикла «for»
- 17. OpenMP резко замедляется для цикла
- 18. Преобразование для цикла в OpenMP
- 19. Параллельный вызов функции с использованием openmp
- 20. openMP - параллельный доступ к переменным и атомам
- 21. Почему последовательный запуск быстрее параллельный openmp
- 22. Как использовать параллельный оператор инкремента в OpenMP
- 23. Параллельный код для next_permutation()
- 24. OpenMP - Распараллеливание вложенного цикла
- 25. OpenMP неловко параллелен для цикла, без ускорения
- 26. Параллельный код C для двумерного преобразования вейвлет Haar с OpenMP
- 27. GCC OpenMP параллельный для уменьшения МНОГО медленнее, чем Visual Studio
- 28. Параллельный цикл для добавления локальных матриц в OpenMP
- 29. Как индексировать массив BigIntegers по BigIntegers
- 30. Параллелирование цикла в C++ с помощью OpenMP
Только встроенные целыми типов и итераторы произвольного доступа может быть использованы в качестве переменного цикла. –
большое спасибо за ваш ответ – cppkhb