Вопросы по теме '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 просмотров
schedule
06.09.2022
Как сказать компилятору развернуть этот цикл
У меня есть следующий цикл, который я запускаю на процессоре 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 просмотров
schedule
11.06.2023
оптимизация кода и развертывание циклов
Я пытаюсь познакомиться с программированием на ассемблере. В начале я выбрал случайный код и попытался его обновить. Также я читал некоторые вещи о развертывании цикла, но я действительно не знаю, с чего начать.
Это мой код, который я уже немного...
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 просмотров
schedule
21.09.2022
развертывание вложенных циклов 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 просмотров
schedule
10.07.2022
Странность развертывания цикла 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 просмотров
schedule
10.02.2023
Ускорение цикла do-while с помощью разворачивания цикла
Я пытаюсь ускорить код в функции, которая может вызываться много раз (возможно, более миллиона). Код связан с установкой двух переменных в случайные числа и нахождением квадрата расстояния. Моей первой идеей для этого является развертывание цикла,...
221 просмотров
schedule
13.03.2024
как развертывание повлияет на число циклов на количество элементов CPE
как рассчитать CPE (количество циклов на элемент) с помощью этих фрагментов кода?
в чем разница в CPE между двумя приведенными фрагментами кода?
У меня есть этот кусок кода
void randomFunction(float a[],float Tb[],float c[],long int n){...
66 просмотров
schedule
20.02.2023
как оптимизировать этот код с коэффициентом развертывания 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 просмотров
schedule
12.09.2023