Вопросы по теме 'loop-unrolling'

Могут ли современные компиляторы развертывать циклы for, выраженные с помощью итераторов начала и конца?
Рассмотрим следующий код vector<double> v; // fill v const vector<double>::iterator end =v.end(); for(vector<double>::iterator i = v.bgin(); i != end; ++i) { // do stuff } Могут ли такие компиляторы, как g++,...
3348 просмотров
schedule 09.07.2022

Как быть уверенным, что параметр будет рассматриваться как константа во время компиляции в C++?
Интересно, будут ли две следующие реализации производить одно и то же с одинаковыми характеристиками, какой бы компилятор я ни использовал: template<class T, unsigned int TSIZE> MyClass1 { static const unsigned int size_const = 0;...
85 просмотров

Как сказать компилятору развернуть этот цикл
У меня есть следующий цикл, который я запускаю на процессоре ARM. // pin here is pointer to some part of an array for (i = 0; i < v->numelements; i++) { pe = pptr[i]; peParent = pe->parent; SPHERE *ps = (SPHERE...
3244 просмотров
schedule 09.07.2023

Развертывание цикла с зависимыми циклами
Я работаю над большим приложением, для которого мне нужно выполнить развертывание цикла для последующих зависимых циклов для определенной процедуры. Я написал ниже небольшой образец кода, чтобы воспроизвести большую версию. Рассмотрим исходный...
185 просмотров
schedule 15.05.2023

Разница в производительности развертывания цикла C++ (проект Euler)
У меня есть вопрос о вопросе Project Euler и оптимизации с использованием развертывания цикла. Описание задачи: 2520 — это наименьшее число, которое можно разделить на каждое из чисел от 1 до 10 без остатка. Какое наименьшее положительное число...
231 просмотров
schedule 12.04.2023

Цикл развертывания многомерного массива
Недавно я пытался развернуть внутренние циклы i и j в этом многомерном массиве, но filter->get(i,j) всегда портит текстуру изображения. Может ли кто-нибудь помочь мне развернуть цикл i и j? Спасибо. Моя попытка: double applyFilter(struct...
1022 просмотров

оптимизация кода и развертывание циклов
Я пытаюсь познакомиться с программированием на ассемблере. В начале я выбрал случайный код и попытался его обновить. Также я читал некоторые вещи о развертывании цикла, но я действительно не знаю, с чего начать. Это мой код, который я уже немного...
213 просмотров
schedule 02.09.2022

Цикл разворачивается в clang
Я пытаюсь выборочно развернуть второй цикл в следующей программе: #include <stdio.h> int main() { int in[1000], out[1000]; int i,j; #pragma nounroll for (i = 100; i < 1000; i++) { in[i]+= 10; }...
9478 просмотров

развертывание вложенных циклов for - C
У меня возникли проблемы с развертыванием вложенных for loops. Я понимаю эту концепцию, я пытаюсь применить ее на практике, но я сбиваюсь с толку при редактировании операторов в моих for циклах, чтобы они соответствовали развертыванию. Если бы...
3137 просмотров
schedule 10.08.2022

std::array с агрегатной инициализацией на g++ генерирует огромный код
В g++ 4.9.2 и 5.3.1 этот код компилируется несколько секунд и создает исполняемый файл размером 52 776 байт: #include <array> #include <iostream> int main() { constexpr std::size_t size = 4096; struct S { float...
846 просмотров

Странность развертывания цикла gcc
В ходе написания «неравного сканирования» для логических массивов я написал этот цикл: // Heckman recursive doubling #ifdef STRENGTHREDUCTION // Haswell/gcc does not like the multiply for( s=1; s<BITSINWORD; s=s*2) { #else //...
296 просмотров
schedule 03.06.2022

Развертывание петель в ядрах Metal
Мне нужно заставить компилятор Metal развернуть цикл в моей функции вычисления ядра. До сих пор я пытался поставить #pragma unroll(num_times) перед for циклом, но компилятор игнорирует этот оператор. Кажется, что компилятор не разворачивает...
841 просмотров
schedule 31.10.2022

разворачивание циклов в функции особого случая
Поэтому я пытаюсь оптимизировать некоторый код. У меня есть функция с циклом переменного размера. Однако для эффективности я хочу сделать чехлы с петлями 1, 2 и 3 размера, специальные случаи, которые полностью развернуты. Мой подход до сих пор...
532 просмотров
schedule 12.09.2022

Развертывание цикла не работает с оставшимися элементами
У меня есть типичный алгоритм умножения матриц. Я пытаюсь применить и понять развертывание цикла, но у меня возникла проблема с реализацией алгоритма, когда я пытаюсь развернуть k раз, когда k не кратно размеру матрицы. (Вместо этого я получаю очень...
271 просмотров
schedule 31.08.2022

Ручное развертывание цикла в C++ Introsort выполняется неправильно
Я пишу простую интросортировку на месте на C++, в которой я пытаюсь вручную развернуть цикл внутри функции разделения для оптимизации. Программа, которую я приведу ниже, компилируется, но не может правильно отсортировать случайный список. Эта...
87 просмотров

Ускорение цикла do-while с помощью разворачивания цикла
Я пытаюсь ускорить код в функции, которая может вызываться много раз (возможно, более миллиона). Код связан с установкой двух переменных в случайные числа и нахождением квадрата расстояния. Моей первой идеей для этого является развертывание цикла,...
221 просмотров
schedule 13.03.2024

как развертывание повлияет на число циклов на количество элементов CPE
как рассчитать CPE (количество циклов на элемент) с помощью этих фрагментов кода? в чем разница в CPE между двумя приведенными фрагментами кода? У меня есть этот кусок кода void randomFunction(float a[],float Tb[],float c[],long int n){...
66 просмотров

как оптимизировать этот код с коэффициентом развертывания 3?
void randomImprovedfunction(double a[], double p[], long n) 2 { 3 long i; 4 double last_v, v; 5 last_v = p[0] = a[0]; 6 for (i=1; i<n; i++) { 7 v = last_v + a[i]; 8 p[i] = v ; 9 last_v = v; 10 }...
72 просмотров