|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
11.09.2013, 21:33 | #1 | |
Новичок
Джуниор
Регистрация: 11.09.2013
Сообщений: 4
|
GCC, проблема с прогой
Привет. Пишу библиотеку для работы с воксельными октодеревьями (для рендеринга). У меня есть прототип на Common Lisp (я решил, что туда сначала буду заносить новомодные фичи) https://github.com/shamazmazum/voxel-octrees и на C (который жрет куда меньше памяти и немного быстрее). Для работы с векторами я решил использовать SSE (особенно инструкции для работы с упакованными данными). Вышло так, что программа работает, скомпилированная gcc4.7 (и gcc4.8 тоже) без флагов оптимизации, а хотя бы с -O уже "виснет", очень быстро выделяя память.
Вот прога на pastebin: http://pastebin.com/p65ssmWM tree.h http://pastebin.com/tBCcMxbj tree.c http://pastebin.com/QHWGPA2v main.c Собираю, естественно gcc -lm -o test main.c tree.c Проблема возникает при создании дерева из 1000000 вокселей (big_tree) Сеанс в gdb: Цитата:
Прога, увы не портабельна, так как использует операции + и / для векторов (API, предоставляемый xmmintrin.h есть уже много где) |
|
11.09.2013, 21:42 | #2 |
Новичок
Джуниор
Регистрация: 11.09.2013
Сообщений: 4
|
Язык C, конечно
|
12.09.2013, 19:25 | #3 | |
Форумчанин
Регистрация: 09.07.2013
Сообщений: 249
|
Цитата:
do not use your brain
|
|
12.09.2013, 20:02 | #4 |
Новичок
Джуниор
Регистрация: 11.09.2013
Сообщений: 4
|
|
12.09.2013, 20:21 | #5 |
Форумчанин
Регистрация: 09.07.2013
Сообщений: 249
|
Допустим. А как тебе вариант переписать всё заново с периодической проверкой работоспособности в условиях приближённых к боевым?
do not use your brain
|
12.09.2013, 20:26 | #6 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
Я проект не смотрел, но обычно когда на такое попадаюсь начинаю все с чистого листа и светлой головы.
I'm learning to live...
|
|
12.09.2013, 20:28 | #7 |
Новичок
Джуниор
Регистрация: 11.09.2013
Сообщений: 4
|
Отбой, gcc соптимизировал xorps, а инициализировать надо _mm_set_ps1(0), который компилируется в этот самый xorps. В общем виноват тем, что решил, что умнее компилятора, ССЗБ. Кстати clang3.1 генерирует более эффективный код. Яфшоке
В лиспе для лиспа всё нормально, ИМХО. Использую SBCL 1.1.8. Образ с деревом на ~504000 вокселей занимает ~400 Мб, память растет не слишком сильно. Рендерит он это на разрешении 800x600 ~2.5 секунды, а прога на C - 0.2 секунды, т.е разница в 12 раз. Вот один из рендерингов: http://s23.postimg.org/id4lct43t/foot.png Данные отсюда: http://www.volren.org/ Последний раз редактировалось Stilet; 12.09.2013 в 21:41. |
12.09.2013, 21:19 | #8 |
Форумчанин
Регистрация: 09.07.2013
Сообщений: 249
|
Воксели ето круто да. И выглядит прикольно.
do not use your brain
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
проблема с прогой | ilushka2306 | Помощь студентам | 2 | 13.05.2011 18:20 |
Проблема с компиляцией матфункций в gcc | Svent | Qt и кроссплатформенное программирование С/С++ | 4 | 09.07.2010 12:44 |
Проблема с функцией pow в С, использую GCC | maryan.vetrov | Помощь студентам | 0 | 07.06.2010 04:12 |
проблема с gcc | d9m0n | Qt и кроссплатформенное программирование С/С++ | 6 | 04.09.2009 02:30 |
Проблема с прогой | Claster | Общие вопросы Delphi | 1 | 11.09.2008 17:53 |