Форум русскоязычного сообщества Ubuntu


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Многопроцессорная обработка  (Прочитано 3397 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #15 : 13 Августа 2009, 14:25:54 »
Извращенный способ помог, прописывали путь к библиотеке везде, где можно, не подцепляется.
Поэтому я прямо все библиотеки из директории ia64 интеловского компилятора вхреначил в /usr/lib
Одно серверное приложение заработало, скорость даже чуть хуже, чем у gcc. Максимальное время такое же, а среднее время у icc чуть выше, чем у gcc. Возможно потому что остальное скомпилено компилятором gcc.
Но к сожалению не все пока работает, во время выполнения ругается на libc.so, не нравится там какой-то malloc. Выдает memory map. Возможно надо эту библиотеку перекомпилить новым компилятором или где-то достать готовую. Пилим дальше.

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #16 : 13 Августа 2009, 16:11:16 »
Такие переходы как gcc->intel c++ легкими не бывают :)
Но результаты как правило того стоят.

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #17 : 13 Августа 2009, 16:40:31 »
Что-то не движется дело. libc.so.6.1 есть в /lib, пробовал его уже в /usr/lib перемещать, не помогает.
Может кто-то поможет..

(Нажмите, чтобы показать/скрыть)
« Последнее редактирование: 13 Августа 2009, 19:00:25 от Kwah »

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #18 : 13 Августа 2009, 16:47:36 »
а что-нибудь типа "hello  world" скомпилить и запустить получается? Ошибка похоже на неправильную работу с указателями.... нужно определить место в программе на котором она вывааливается... поставь кучу std::cout<<.... в контрольных местах и посмотри...

Пользователь решил продолжить мысль 13 Августа 2009, 16:52:09:
и вообще ... зачем сразу большой проект переносить целиком.... написать какую-нибудь консольную программу маленькую, которая выполняет характерные алгоритмы.... скомпилить ее на gcc и на intel - и сравнить скорости выполнения\загрузку процессоров.....  если есть разница  и она того стоит ... начинать перестройку.......

я так всегда делаю, сначала эксперимент, потом работа.
« Последнее редактирование: 13 Августа 2009, 16:52:09 от maximum2000 »

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #19 : 13 Августа 2009, 16:57:22 »
Так я же писал, что один проект уже работает с icc, а второй нет. Hello world не нужен.

Пользователь решил продолжить мысль 13 Августа 2009, 14:59:15:
Да и здесь не весь проект, а всего лишь диспетчер с парой библиотек.

Пользователь решил продолжить мысль 13 Августа 2009, 17:12:26:
Более того, диспетчер отдельно работает..  :-\
« Последнее редактирование: 13 Августа 2009, 17:12:26 от Tarik »

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #20 : 14 Августа 2009, 01:57:26 »
Ошибка похоже на неправильную работу с указателями.... нужно определить место в программе на котором она вывааливается... поставь кучу std::cout<<.... в контрольных местах и посмотри...

Оффлайн Yurror

  • Старожил
  • *
  • Сообщений: 1966
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #21 : 14 Августа 2009, 06:31:44 »
Tarik, а я вам говорил. нехрен всякие библиотеки куда попало копировать, особенно если вообще нихрена не понимаешь как это работает.
Эм... как же вы умудряетесь разрабатывать RT сервисы не понимая вообще как линкуются приложения О_о я в ступоре. Это плохо, господа.

LD_LIBRARY_PATH ни в каком Makefile писать нафиг не надо. В Makefile пишутся пути где сам компилятор (линкер) будет искать библиотеки. Заметь линкер а не загрузчик!!! пользоваться LD_LIBRARY_PATH надо так:
$ LD_LIBRARY_PATH=/path/to/lib ./my_prog
тогда загрузчик ОС при загрузки ./my_prog будет искать библиотеки помимо общесистемных каталогов еще и в /path/to/lib. Главное не перебить уже заданое значение LD_LIBRARY_PATH при таком подходе. внимательнее.
Если правильно устанавливать окружение для icc то все переменные задаются правильно. и проблем не возникает. прочтите наконец документацию.

Страдаем фигней. конечно интересно помучать интеловский компилятор, но лучше же выяснить где именно затык в приложении. для этого воспользуйтесь профилировшиком. честное слово гораздо лучше помогает

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #22 : 14 Августа 2009, 08:22:03 »
Пришли к выводу, что все это отстой и УГ.
Все, что удалось собрать с новым компилятором, работает МЕДЛЕННЕЕ.
Так что было решено изменить архитектуру и поставить отдельный комп для синхронизации. :)
Всем спасибо.

Пользователь решил продолжить мысль 14 Августа 2009, 08:28:25:
Где у нас затыки, давно известно. :)
Например, последняя оптимизация заключалась в том, чтобы не удалять элементы вектора по отдельности, а уничтожать весь вектор, и на каждом шаге создавать новый. Раз в 6 быстрее так работает. Другие типы данных, кроме вектора, не подходят.
Главный затык все-таки - это странная работа Linuxа с 8 процессорами, а также весьма условная расстановка приоритетов.
« Последнее редактирование: 14 Августа 2009, 08:28:25 от Tarik »

Оффлайн digiwhite

  • Активист
  • *
  • Сообщений: 732
  • http://www.welinux.ru
    • Просмотр профиля
    • http://www.welinux.ru
Re: Многопроцессорная обработка
« Ответ #23 : 14 Августа 2009, 12:42:05 »
Странные вы...
Смотрите ядро-какой планировщик работает. Пересоберите с более подходящим. Проверьте.

А вообще, задача с жестко заданными параметрами времени реакции должна работать под соответсвующей ОС. Вы сами же ссылку привели.Там есть проект, который реализует ОСРВ на базе Linuxа. Попробуйте его.
Социальная сеть не фанатично настроенных Linuxойдов - http://www.welinux.ru

Оффлайн maximum2000

  • Активист
  • *
  • Сообщений: 403
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #24 : 14 Августа 2009, 13:11:56 »
Все, что удалось собрать с новым компилятором, работает МЕДЛЕННЕЕ.

Ух ты :( Странно. Ну тогда не знаю, может в сторону CUDA пойти... я писал на этом чуде однажды. Если разложить задачу на потоки - скорость 10х-100х (у меня лично в 14 раз быстрее алгоритм заработал на 8800GT)

Оффлайн Tarik

  • Автор темы
  • Участник
  • *
  • Сообщений: 161
    • Просмотр профиля
Re: Многопроцессорная обработка
« Ответ #25 : 14 Августа 2009, 16:46:39 »
Дело в том, что толком Linux у нас никто не знает. :)
Поковыряться в ядре я и сам не против, но требуется запилить в кратчайшие сроки, наши проблемы никого не волнуют.
Менять ОС тоже не вариант, даже на *nix. Во-первых, Итаниум - весьма странный выбор и никто его не желает поддерживать, во-вторых, могут возникнуть трудности, которые придется преодолевать, а еще других дел полно.
Зато есть карточка RFM, кот по оптоволокну будет хреначить 5 мс с завидным постоянством, ибо на обычном Linuxе обычный QTimer в одиночку работает достаточно четко.

 

Страница сгенерирована за 0.02 секунд. Запросов: 22.