Описание тега loop-unrolling
Loop unrolling is a loop optimization strategy.
1
ответ
Ручная раскрутка петли с известным максимальным размером
Пожалуйста, посмотрите на этот код в ядре OpenCL: uint point_color = 4278190080; float point_percent = 1.0f; float near_pixel_size = (...); float far_pixel_size = (...); float delta_pixel_size = far_pixel_size - near_pixel_size; float3 near = (...);…
10 апр '18 в 22:56
2
ответа
Почему код gcc для моего развернутого эпилога цикла выглядит слишком сложным?
Спасибо за все комментарии до сих пор. Мне жаль, что я использовал плохой пример в своем первоначальном вопросе, который почти все сказали бы: "О, вы должны использовать memcopy !" Но это не то, о чем мой вопрос. Мой вопрос более общий о том, как сл…
04 июл '18 в 08:05
1
ответ
GCC 5.1 Loop развертывание
Учитывая следующий код #include <stdio.h> int main(int argc, char **argv) { int k = 0; for( k = 0; k < 20; ++k ) { printf( "%d\n", k ) ; } } Использование GCC 5.1 или более поздней версии с -x c -std=c99 -O3 -funroll-all-loops --param max-c…
22 июн '16 в 12:00
1
ответ
Разматывание петли в бейсике
У меня есть встроенный процессор, на котором установлена урезанная версия BASIC (Parallax BASIC Stamp). В цикле я пишу 1024 значения через шину SPI. В скомпилированных языках большую скорость можно добиться, развернув цикл (добавив в цикл больше о…
10 май '11 в 16:54
3
ответа
Есть ли оптимизация, похожая на развертывание цикла для функционального программирования?
Отказ от ответственности: я мало знаю о конвейере компиляции ghc, но я надеюсь узнать больше об этом в этом посте, например, если сравнение императивного и функционального имеет отношение к компиляции кода. Как вы знаете, развертывание цикла сокраща…
30 сен '13 в 03:31
2
ответа
Долото: как смоделировать переменную, увеличенную в развернутом цикле
Допустим, у меня есть Vec of Bool. Я хочу заполнить новый Vec того же размера значениями, равными количеству истинных значений, которые я видел до этого индекса в исходном Vec. Я хочу сделать это комбинационно. С моим фоном HLS и стилем кодирования,…
20 июл '17 в 16:53
1
ответ
Как реализовать развертывание цикла 2 во время выполнения в целях оптимизации
Рассмотрим некоторый код, который должен выполняться несколько раз в диапазоне от 1 до 1 000 000 раз, и что количество повторов неизвестно во время компиляции. Насколько я понимаю, развертывание цикла будет незначительной оптимизацией, учитывая боль…
27 ноя '15 в 12:32
3
ответа
Почему развертывание цикла не влияет на большой набор данных?
Я хотел сравнить разницу в скорости выполнения между развернутым циклом и циклом for, примененным к triangle объект. Полный пример доступен здесь. Вот полный код: #include <iostream> #include <vector> #include <array> #include <…
28 ноя '14 в 16:23
1
ответ
Выгодно ли больше развертывать циклы в C++ поверх массивов фиксированного размера?
Я хочу использовать std::array хранить данные N-мерных векторов и реализовывать арифметические операции для таких векторов. Я понял, так как std::array теперь имеет constexpr size() функция-член, я могу использовать это, чтобы развернуть циклы, кото…
11 янв '19 в 14:26
1
ответ
Разматывание петли в лязг
Я пытаюсь выборочно развернуть второй цикл в следующей программе: #include <stdio.h> int main() { int in[1000], out[1000]; int i,j; #pragma nounroll for (i = 100; i < 1000; i++) { in[i]+= 10; } #pragma unroll 2 for (j = 100; j < 1000; j+…
05 дек '14 в 06:38
1
ответ
Развернуть петлю? в юли с метапрограммированием
Есть ли способ "метапрограммирования" получить блок кода со следующей структурой: if r1 < R1 s = 1 elseif r1 < R2 s = 2 ... etc until N end end Спасибо!
21 сен '16 в 14:17
1
ответ
C for loop имеет другой эффект, чем развернутый цикл
Я пишу простую очередь в c, используя связанный список, который отслеживает последний элемент. Это мой код: #include <stdlib.h> #include <stdio.h> #include <stdbool.h> #include <stdint.h> typedef struct node_s { uint32_t x, y…
11 авг '18 в 14:39
1
ответ
Циклы на плоских матрицах Фортрана
У меня есть немного кода, который выглядит следующим образом: DO I=0,500 arg1((I*54+1):(I*54+54)) = premultz*sinphi(I+1) ENDDO Короче говоря, у меня есть массив premultz измерения 54. У меня есть массив sinphi измерения 501. Я хочу взять первое знач…
21 янв '13 в 14:57
1
ответ
Длина вектора simd и коэффициент развертывания для цикла Фортрана
Я хочу векторизовать Фортран ниже с SIMD директивами !DIR$ SIMD DO IELEM = 1 , NELEM X(IKLE(IELEM)) = X(IKLE(IELEM)) + W(IELEM) ENDDO И я использовал инструкцию avx2. Программа составлена ifort main_vec.f -simd -g -pg -O2 -vec-report6 -o vec.out -xc…
18 авг '15 в 08:53
5
ответов
Самораспаковывающийся макрос-цикл в C/C++
В настоящее время я работаю над проектом, где каждый цикл имеет значение. При профилировании моего приложения я обнаружил, что издержки некоторых внутренних циклов довольно высоки, потому что они состоят из нескольких машинных инструкций. Кроме того…
30 янв '15 в 08:14
2
ответа
Как быть уверенным, что параметр будет рассматриваться как константа во время компиляции в C++?
Интересно, будут ли две следующие реализации производить одинаково с одинаковыми характеристиками независимо от того, какой компилятор я использую: template<class T, unsigned int TSIZE> MyClass1 { static const unsigned int size_const = 0; publ…
03 авг '12 в 20:43
1
ответ
Влияние развертывания цикла на данные, связанные с памятью
Я работал с частью кода, которая интенсивно связана с памятью. Я пытаюсь оптимизировать его в одном ядре, вручную внедрив блокировку кэша, предварительную загрузку sw, развертывание цикла и т. Д. Несмотря на то, что блокировка кэша дает значительное…
13 июн '12 в 01:36
1
ответ
Оптимизация XNA - развертывание цикла?
Я делаю игру XNA и мне интересно, есть ли способ оптимизировать некоторые циклы. Например: У меня есть класс Map, который содержит коллекцию плиток, поэтому в обновлении карты () я просто вызываю каждую плитку Update() // Update method in Map Class …
16 дек '13 в 22:24
1
ответ
Развертывание петли y86
Я пытаюсь развернуть цикл в коде y86, но я получаю 2 разных значения при попытке запустить тестовую программу. Рег. код является: xorq %rax,%rax # count = 0; andq %rdx,%rdx # len <= 0? jle Done # if so, goto Done: Loop: mrmovq (%rdi), %r10 # read…
26 окт '16 в 01:37
1
ответ
Наиболее эффективный способ подсчета положительного, отрицательного и нулевого числа с использованием разворачивания цикла
Скажем, у меня есть следующая инструкция, просто проверяет, является ли число положительным или нет (отрицательным или нулевым), и если оно было положительным, добавьте 1 к нашему счетчику (и нам все равно, является ли число отрицательным или нулевы…
12 апр '16 в 23:13