Вопросы по теме '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 просмотров
schedule
26.02.2024
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 просмотров
schedule
29.05.2024