В helpful but somewhat dated ноября 2006 года статью о векторизации кода с vDSP, автор делает заявление:Использует шаг 1, который по-прежнему критичен для производительности vDSP сегодня?
Важно иметь в виду тот факт, что только операции с шагами, равными единице доставим сверхбыстрая векторизованный код.
Это все еще актуально сегодня? Даже на новинках Intel процессоров с их более способными векторными свойствами?
Я спрашиваю, потому что я нахожусь в процессе написания некоторых матрицы математических процедур, и только начал идти по пути их всех переключения использовать Fortran -кака столбцов упорядоченности в стремлении быть более легко совместимы с MATLAB, BLAS и LAPACK. Но теперь я нахожу некоторые из моих звонков vDSP необходимости работать над векторами, которые больше не являются смежным ...
В настоящее время эти vDSP вызовов являются бутылочной процедурой, что мой код упражнение. Не сказать, что это будет всегда, но на данный момент, по крайней мере, мне бы очень хотелось замедлить их, чтобы просто сделать звонки в эти другие библиотеки.
Мое наиболее часто называемое vDSP рутинное прямо сейчас vDSP_distancesq
в случае, которое имеет значение.
Я ожидал столько же, но я не хотел отказываться от идеи использования более широко совместимого макета в памяти без предварительного запроса. Спасибо за быстрый ответ! Я думаю, теперь мне нужно выяснить план C ... –
Именно поэтому 'gemm' и' gemv' принимают только массивы с (малым) шагом = 1? Я всегда задавался вопросом, почему этого не хватало для (малого) шага> 1. Я понял удар производительности, но для небольших шагов, например, 2 или 3, это должно быть возможно и все равно что-то получить. – alfC