Вопрос

Я написал эту небольшую подпрограмму, которая сравнивает простые векторные математические функции, выполняемые либо с петлей:

f(i) = a(i) + b(i)

или прямой:

f = a + b

или используя Intel MKL VML:

VDADD (N, A, B, F)

Результаты времени для n = 50000000:

VML 0,9 Sec Direct 0,4 петля 0,4

И я не понимаю, почему VML занимает вдвое больше времени, чем другие методы! (Петля иногда быстрее, чем прямое)

Подпрограмму можно найти под http://paste.ideaslabs.com/show/l6dvldaoifи вызвано через

program test

  use vmltests
  implicit none

  call vmlTest()

end program
Это было полезно?

Решение

Ваш пример кода имеет потенциальную проблему с кэшем L2, можно преодолеть его с помощью оптимизации блокировки. Смотрите Intel® Software Networks Forum Ответ для получения подробной информации: http://software.intel.com/en-us/forums/showthread.php?t=80041

Уведомление об оптимизации Intel®:

Компиляторы Intel®, связанные библиотеки и связанные с ними инструменты разработки могут включать или использовать опции, которые оптимизируют для наборов инструкций, которые доступны как в микропроцессорах Intel®, так и в неинтеллевых микропроцессорах (например, наборы инструкций SIMD), но не оптимизируются одинаково для неинтелляционных микропроцессоров Анкет Кроме того, некоторые параметры компилятора для компиляторов Intel, в том числе некоторые, которые не являются специфическими для микроархитектуры Intel, зарезервированы для микропроцессоров Intel. Для получения подробного описания параметров компилятора Intel, включая наборы инструкций и конкретные микропроцессоры, которые они подразумевают, обратитесь к «пользователю компилятора Intel® и справочникам» в «Параме компилятора». более высоко оптимизирован для микропроцессоров Intel, чем для других микропроцессоров. В то время как компиляторы и библиотеки в продуктах компилятора Intel® предлагают оптимизацию как для микропроцессоров Intel, так и для Intel, вы, вероятно, получите дополнительные Производительность на микропроцессорах Intel.

Компиляторы Intel®, связанные библиотеки и связанные с ними инструменты разработки могут или не могут оптимизировать в той же степени для неинтел-микропроцессоров для оптимизации, которые не являются уникальными для микропроцессоров Intel. Эти оптимизации включают потоковые SIMD Extensions 2 (Intel® SSE2), потоковые SIMD Extensions 3 (Intel® SSE3) и дополнительные наборы инструкций SIMD SIMD 3 (Intel® SSSE3) и другие оптимизации. Intel не гарантирует доступность, функциональность или эффективность какой -либо оптимизации на микропроцессорах, не производимых Intel. Микропроцессорные оптимизация в этом продукте предназначена для использования с микропроцессорами Intel.

В то время как Intel считает, что наши компиляторы и библиотеки являются отличным выбором, чтобы помочь получить наилучшую производительность на Intel® и неинтел-микропроцессорах, Intel рекомендует оценить другие компиляторы и библиотеки, чтобы определить, какие лучше всего соответствуют вашим требованиям. Мы надеемся выиграть ваш бизнес, стремясь предложить наилучшие результаты любого компилятора или библиотеки; Пожалуйста, дайте нам знать, если вы обнаружите, что мы не

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top