Open Source & Linux Lab

It's better when it's simple

User Tools

Site Tools


etc:common_activities:intel_students_cup:icc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Next revision
Previous revision
etc:common_activities:intel_students_cup:icc [2007/11/05 11:39] – создано jcmvbkbcetc:common_activities:intel_students_cup:icc [2008/01/03 02:32] (current) – external edit 127.0.0.1
Line 1: Line 1:
-===== Использование ICC =====+====== Использование ICC ======
 Установил icc в Fedora 7 (только компилятор). Пришлось дополнительно yum install compat-libstdc++-33.i386 Установил icc в Fedora 7 (только компилятор). Пришлось дополнительно yum install compat-libstdc++-33.i386
  
 Документация: /opt/intel/cc/10.0.023/doc/main_cls/whnjs.htm Документация: /opt/intel/cc/10.0.023/doc/main_cls/whnjs.htm
  
-Использовал векторизацию с ключём -xP. Всовокупности с ippsSin время 5.808/кадр.+man: man -M /opt/intel/cc/10.0.023/man icc 
 + 
 +===== Векторизация ===== 
 +Включается ключом -x... или -ax... В примере -- -xP. Перед этим робовал -axT, но выяснил, что автоопределение типа процессора работает странно. С -axT Core Duo T2300 работал по коду сопроцессора, а не по SSE. 
 + 
 +В совокупности с ippsSin время 5.808/кадр.
  
 Изменения в Makefile и циклах: Изменения в Makefile и циклах:
Line 85: Line 90:
                  /* initialize the values of derivation */                  /* initialize the values of derivation */
                  flDerivX = 0.0f;                  flDerivX = 0.0f;
 +</file>
 +
 +===== Оптимизация по результатам профилирования (PGO) =====
 +В CDEFOPT добавить -prof-gen. Откомпилировать, запустить. Появится файл с результатами профилирования. Заменить -prof-gen на -prof-use. Откомпилировать, запустить.
 +
 +Существенной разницы не заметил.
 +
 +===== OpenMP =====
 +В коде интересная ловушка: #pragma omp parallel for **ordered**. Насколько я понял из спецификации OpenMP, ordered в цикле позволяет помещать внутри него секции ordered, которые будут выполняться всегда в одном и том же порядке. Однако, в нашем коде нет таких секций. Убрал ordered. Скорость возросла как и ожидалось, почти вдвое, при сохранении точности. Странно, что gcc слово ordered не смутило.
 +
 +В совокупности с ippSin и векторизацией -- 2.843/кадр.
 +
 +<file>
 +diff -ruN src-org/sunset.cpp src-icc/sunset.cpp
 +--- src-org/sunset.cpp  2007-09-16 12:04:44.000000000 +0400
 ++++ src-icc/sunset.cpp  2007-11-05 13:44:08.000000000 +0300
 +@@ -656,7 +657,7 @@
 +         flOmegaTime[i] = flTime * flOmega[i];
 +
 + #if defined (_OPENMP)
 +-    #pragma omp parallel for ordered \
 ++    #pragma omp parallel for \
 +         private(k, i, l, t, iPointIndex, iColorIndex, j) \
 +         private(T2, FI2, CT2, ST2, chStatus0, flR) \
 +         private(CFI2, SFI2, flDeltaFi2, flDeltaT2, flSunPoint) \
 </file> </file>
  
etc/common_activities/intel_students_cup/icc.1194251949.txt.gz · Last modified: 2008/01/03 02:32 (external edit)