Я написал матричный шаблон класса.В моем конструкторе копирования я делаю
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__
, чтобы исправить это.Однако я не вижу способа применить это к шаблонному классу и его членам.
Хотя это не влияет на мой код, но мне все еще интересно, как я могу исправить эту проблему, чтобы оптимизировать мойкод