Intel VML добавляет медленно - PullRequest
0 голосов
/ 17 января 2011

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

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

или прямой:

f = a + b

или с использованием Intel MKL VML:

vdAdd (п, а, б, е)

Результаты синхронизации для n = 50000000:

VML 0,9 с прямой 0,4 петля 0,4

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

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

program test

  use vmltests
  implicit none

  call vmlTest()

end program

1 Ответ

1 голос
/ 18 января 2011

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

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

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

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

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

...