Форум программистов, компьютерный форум CyberForum.ru

Векторизация множественно выполняющейся операции - C++

Восстановить пароль Регистрация
 
Damaks
18 / 10 / 1
Регистрация: 02.09.2010
Сообщений: 235
24.11.2012, 22:11     Векторизация множественно выполняющейся операции #1
Задача - произвести какую либо операцию над каждым элементом массива. К примеру возьмем 2 числовых массива размерностью n каждый, заполним их и элементы второго прибавим к элементам первого, с идентичным индексом. Сделать этом можно тремя путями:
1. Последовательное сложение:
C++
1
2
3
    a[0]+=b[0];
    a[1]+=b[1];
    ...
2. Через цикл while
C++
1
2
3
4
    int i=0;
    do {
        a[i]+=b[i];
    while(++i!=n);
3. Через цикл for
C++
1
2
3
4
    int i=0;
    for (int i=0;i!=n;i++) {
        ....
    }
Лично я пользуюсь первым если элементов немного и вторым, если много. Последним не пользуюсь, ибо синтаксис противоречив и немного сбивает с толку. В циклах сразу виден недостаток - лишняя операция инкремента. При том в for еще и постфиксная. Если код не будет векторизован, они проиграют первому варианту. Но если компилятор векторизует только циклы - проиграет первый.
Вопросы:
1) Все ли варианты будут векторизованы компилятором g++?
2) Почему я должен полагаться на компилятор, есть ли какие то векторные функции для подобного?
В сети давно встречал такую запись: a[0:n]+=b[0:n], но по всей видимости это было только для описания какого-то алгоритма...
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.11.2012, 22:11     Векторизация множественно выполняющейся операции
Посмотрите здесь:

C++ Битовые операции
C++ [C++] Не запускается программа(множественно наследование)
Как производится векторизация BITMAP? C++
C++ Операции в С++
C++ Векторизация кода
Битовые операции и операции смещения языка С C++
Операции с битами C++
C++ Побитовые операции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Ответ Создать тему
Опции темы

Текущее время: 19:58. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru