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

В каких типах циклов лучше всего использовать директиву #pragma unroll в CUDA?
В CUDA можно разворачивать циклы с помощью директивы #pragma unroll для повышения производительности за счет увеличения параллелизма на уровне инструкций. За #pragma может дополнительно следовать число, указывающее, сколько раз цикл должен быть...
1705 просмотров
schedule 11.02.2023

Развертывание циклов javascript
У меня есть кубический 3D-массив "класс", например: function Array3D(size) { this.data = new Array(size*size*size); var makeIndex = function(p) { return p[0] + p[1]*size + p[2]*size*size; } this.get = function(p) { return...
1146 просмотров
schedule 22.12.2023

Шейдер GLSL не разворачивает цикл при необходимости
Моя 9600GT меня ненавидит. Фрагментный шейдер: #version 130 uint aa[33] = uint[33]( 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0,0,0,0,0,0,0,0, 0,0,0 ); void main() { int i=0; int a=26; for (i=0; i<a; i++)...
7422 просмотров

SSE Intrinsics и развертывание цикла
Я пытаюсь оптимизировать некоторые циклы, и мне это удалось, но мне интересно, правильно ли я сделал это только частично. Скажем, например, что у меня есть этот цикл: for(i=0;i<n;i++){ b[i] = a[i]*2; } если развернуть это в 3 раза,...
2177 просмотров
schedule 18.02.2022

Первый вызов функции C медленнее, чем последующие вызовы [дубликаты]
Я пытаюсь аппроксимировать накладные расходы на вызов функции в C. Итак, у меня есть пустая функция с атрибутом ((optimize("O0"))), так что GCC не оптимизирует ее. int __attribute__((optimize("O0"))) func(int a) { return (a+a); } Я...
75 просмотров
schedule 24.05.2024

Развертывание цикла приращения указателя для автоматической векторизации
Мне было интересно, если развернуть этот цикл: for (int i = 0; i < n; i++) { *p = a[i]*b[i]; p++; } в for (int i = 0; i < n; i+=4) { *(p + 0) = a[i + 0]*b[i + 0]; *(p + 1) = a[i + 1]*b[i + 1]; *(p + 2) = a[i +...
413 просмотров