C ++ конструктор копирования многовариантный - PullRequest
0 голосов
/ 08 октября 2018

Я написал матричный шаблон класса.В моем конструкторе копирования я делаю

Matrix<T>::Matrix(const Matrix<T> &M) 
  : _rows(M._rows), _cols(M._cols)
{
    allocate();    // private function for allocating memory
    for (size_t i = 0; i < size(); ++i)  // size() is a inline function 
                                         // computing the size of the array
        mtx[i] = M.mtx[i];    // mtx is the private member array 
                              // storing the matrix
}

. Для записи я сохраняю свою матрицу в одномерном массиве.

В любом случае, когда я включаю векторизацию в компиляторе Intel, vec-отчет говорит что-то вроде:

не векторизованный экземпляр цикла из мультиверсии

Я посмотрел онлайн, в основном этоговорит, что память, возможно, перекрывается (ссылка: Диагностика 15304: цикл не был векторизован: экземпляр не векторизованного цикла из многовариантности ).Он предлагает использовать __restrict__, чтобы исправить это.Однако я не вижу способа применить это к шаблонному классу и его членам.

Хотя это не влияет на мой код, но мне все еще интересно, как я могу исправить эту проблему, чтобы оптимизировать мойкод

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...