Здравствуйте, ZegSoft, Вы писали:
ZS>Попробовал скомпилить с этими ключами — никакого ускорения нет. ZS>Насколько я понимаю, вся проблема в том, что алгоритм делает не тупое "перемалывание массивов данных", а элементы массивов взаимосвязаны. Результаты расчета в элементе j зависят от результатов расчета элемента i. Насколько я понял, SSE — это что-то наподобии конвейеров? В такой постановке они не могут дать эффекта.
Попробуй развернуть цикл. То есть делать инкремент индекса не на 1, а на 2. Тогда внутренность цикла у тебя немного изменится, компилятор может её более качественно раскидать по регистрам, лучше оптимизировать. Иногда такой приём помогает.
Здравствуйте, ArtDenis, Вы писали:
ZS>>Изменениея практически такие же, как и при подготовке для CUDA?? AD>Я не разу не использовал CUDA, но думаю что да, типа того
Посмотрел что такое CUDA, оказывается это немного другое, чем я ожидал. Так что изменения будут совсем не те.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, ZegSoft, Вы писали:
ZS>>Попробовал скомпилить с этими ключами — никакого ускорения нет. ZS>>Насколько я понимаю, вся проблема в том, что алгоритм делает не тупое "перемалывание массивов данных", а элементы массивов взаимосвязаны. Результаты расчета в элементе j зависят от результатов расчета элемента i. Насколько я понял, SSE — это что-то наподобии конвейеров? В такой постановке они не могут дать эффекта.
N>Попробуй развернуть цикл. То есть делать инкремент индекса не на 1, а на 2. Тогда внутренность цикла у тебя немного изменится, компилятор может её более качественно раскидать по регистрам, лучше оптимизировать. Иногда такой приём помогает.
То есть теоретически разница между double и float должна быть значительно меньше 30%??
Здравствуйте, ZegSoft, Вы писали:
ZS>То есть теоретически разница между double и float должна быть значительно меньше 30%??
Трудно сказать. Исторически, с разными процессорами эта разница постоянно меняется. А вообще, надо смотреть код и дизассемблер. И ещё: перейди на компилятор посовременнее (6-й студии много-много лет). Разницу точно заметишь.
Здравствуйте, Nuzhny, Вы писали:
N>Здравствуйте, ZegSoft, Вы писали:
ZS>>То есть теоретически разница между double и float должна быть значительно меньше 30%??
N>Трудно сказать. Исторически, с разными процессорами эта разница постоянно меняется. А вообще, надо смотреть код и дизассемблер. И ещё: перейди на компилятор посовременнее (6-й студии много-много лет). Разницу точно заметишь.
Да я знаю, что 6-й компилятор уже сильно устарел. Просто мне проект достался "по-наследству" от предыдущих разработчиков, и перевести его на новую студию не так-то просто. В нем используются старые либы, которые в новой студии не компилятся. Поэтому переход на новую студию требует существенных затрат времени.
Здравствуйте, ZegSoft, Вы писали:
ZS>Здравствуйте, Nuzhny, Вы писали:
N>>Здравствуйте, ZegSoft, Вы писали:
ZS>>>То есть теоретически разница между double и float должна быть значительно меньше 30%??
N>>Трудно сказать. Исторически, с разными процессорами эта разница постоянно меняется. А вообще, надо смотреть код и дизассемблер. И ещё: перейди на компилятор посовременнее (6-й студии много-много лет). Разницу точно заметишь.
ZS>Да я знаю, что 6-й компилятор уже сильно устарел. Просто мне проект достался "по-наследству" от предыдущих разработчиков, и перевести его на новую студию не так-то просто. В нем используются старые либы, которые в новой студии не компилятся. Поэтому переход на новую студию требует существенных затрат времени.
Переведи в ddl только критический код , изолируй числодробилку. Переход на хороший компилятор может дать прирост до 2х -4х раз свободно.