PARALLEL.RU

Дискуссионный клуб по параллельным вычислениям
Текущее время: 13 дек 17 0:57

Часовой пояс: UTC + 4 часа [ Летнее время ]




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Клинический случай (icc)
СообщениеДобавлено: 20 мар 12 0:14 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Здравствуйте.

Этот компилятор (icc) не перестаёт меня удивлять своей кривостью. Вот ещё один пример. Была программа на чистом си, в которой использовалась стандартная функция замера времени из time.h. Стандартная, замечу, означает, что речь идёт о стандарте ANSI C, даже не нынешних С99 и выше. Буквально, участок кода такой:
=====================
t1 = clock();

/* собственно процедура, замер времени исполнения которой производится */

t2 = clock(); duration = (double)(t2 - t1)/CLOCKS_PER_SEC/60;
printf("\r Procedure complete after %.2f minutes!\n", duration);
======================
Внутри процедуры находился двойной цикл, распараллеленный по OpenMP. На gcc без ключа -fopenmp исполнялось 3.2 минуты, с данным ключом - 1.9 минуты. На той же машине с icc результаты такие - 3.1 минуты против 6.2(!!!) минут.
Я когда увидел, что с ключом -openmp исполняется вдвое медленно подумал, что схожу с ума, но повторил раз сто - результат тот же. Решил вручную, секундомером замерить время исполнения ~ 3 минуты и 2 минуты, хотя показывает шесть. Вот как такому компилятору можно доверять? Он же стандарту ANSI C не соответствует.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Клинический случай (icc)
СообщениеДобавлено: 20 мар 12 11:24 
Не в сети

Зарегистрирован: 5 мар 05 14:01
Сообщения: 74
А может прежде чем ругать компилятор стоит ознакомиться с тем, что функция должна делать?

Цитата:
The clock() function returns an approximation of processor time used by the program.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Клинический случай (icc)
СообщениеДобавлено: 20 мар 12 15:27 
Не в сети

Зарегистрирован: 11 янв 12 23:36
Сообщения: 11
Да чего там компилятор, я себя ругаю. Что тогда возвращает clock() у других компиляторов?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Клинический случай (icc)
СообщениеДобавлено: 11 июн 12 20:29 
Не в сети

Зарегистрирован: 11 июн 12 20:23
Сообщения: 1
Мне кажется, что Coctic хотел Вам сказать, что в случае n потоков clock() вернет значение примерно в n раз превышающее реальное время выполнения (при условии, что каждому потоку было где исполняться).


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа [ Летнее время ]


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 3


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Создано на основе phpBB® Forum Software © phpBB Group
Русская поддержка phpBB