1. Пользоваться форумом на планшетах и телефонах стало удобнее благодаря Tapatalk

Blender 2.55 Beta (r32895) для Linux/GNU (64 bit)

Тема в разделе "Blender3D", создана пользователем hikkikamori, 7 ноя 2010.

Модераторы: logosman
  1. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Здравствуйте! На данный момент у меня стоит Debian Lenny 5.06 (64 bit). Собрал свежий Blender 2.55 сборки 32895 с исходников, для этого сначала создал в домашней директории каталог blender-build
    # cd ~/
    # mkdir blender-build
    зашёл в неё
    # cd blender-build
    скачал последние исходники
    https://svn.blender.org/svnroot/bf-blender/trunk/blender
    В результате все исходники были в ~/blender-build/blender
    Создал новый каталог cmake и зашёл в него
    # mkdir cmake
    # cd cmake
    Удовлетворив некоторые зависимости с генерировал файл для управления сборкой Makefile
    # cmake ../blender
    Установив Python 3.1 и все пакеты необходимые для компиляции Блендера запустил непосредственно сам этот процесс (при этом указал, что нужно собирать для 2-ух ядер -j3)
    # make -j3
    В результате получил сам бинарный файл blender и всё необходимое для его запуска. Blender 2.55 Beta запускается, всё вроде бы сделал правильно, но меня волнует, что рендер идёт в такой сборке медленнее почти в 2 раза, чем в Blender 2.54 Beta взятого с blender.org. С чем это может быть связано?
     
  2. logosman vip

    logosman Moderator Команда форума

    С нами с:
    24.09.2005
    Сообщения:
    196
    Симпатии:
    15
    Баллы:
    366
    Обязательно нужно проверить ключи компилятора (GCC), убедиться в том, что в Release включен -O2 (или O3), желательно добавить -march=native. И обязательно включить поддержку OpenMP. Думаю это решит проблему.
     
  3. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Logosman, не могли бы вы немного подробнее написать как это сделать. Я немного погуглил, как я понимаю опция -march=native включает поддрежку автоопределения типа процессора под которой будет идти сборка. Я сделал ccmake ../blender, результат показан на картинках. Из первой картинки видно, что WITH_OPENMP = ON, из второй (advanced mode (Currently On)) :

    ....
    CMAKE_CXX_FLAGS *
    CMAKE_CXX_FLAGS_DEBUG *-g
    CMAKE_CXX_FLAGS_MINSIZEREL *-Os -DNDEBUG
    CMAKE_CXX_FLAGS_RELEASE *-O3 -DNDEBUG
    CMAKE_CXX_FLAGS_RELWITHDEBINFO *-O2 -g
    CMAKE_C_COMPILER */usr/bin/gcc
    CMAKE_C_FLAGS *
    CMAKE_C_FLAGS_DEBUG *-g
    CMAKE_C_FLAGS_MINSIZEREL *-Os -DNDEBUG
    CMAKE_C_FLAGS_RELEASE *-O3 -DNDEBUG
    CMAKE_C_FLAGS_RELWITHDEBINFO *-O2 -g
    ....

    вроде как поддержка -03 напротив RELEASE стоит. Что каксается -march=native, я должен прописать эту опицию в CMAKE_CXX_FLAGS_RELEASE и CMAKE_C_FLAGS_RELEASE, т.е. дописать " -O3 -DNDEBUG -march=native" ?
     

    Вложения:

    • 2010377.jpg
      2010377.jpg
      Размер файла:
      310,2 КБ
      Просмотров:
      79
    • 2010378.jpg
      2010378.jpg
      Размер файла:
      357,8 КБ
      Просмотров:
      87
  4. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Или всё-таки

    ..
    CMAKE_CXX_FLAGS = " -O3 -march=native"
    ..
    CMAKE_C_FLAGS=" -O3 -march=native"
    ..

    ?
     
  5. logosman vip

    logosman Moderator Команда форума

    С нами с:
    24.09.2005
    Сообщения:
    196
    Симпатии:
    15
    Баллы:
    366
    Всё верно, -march=native для автоматического определения настроек оптимизации компилятором, прописать лучше и в CMAKE_C_FLAGS_RELEASE, и в CMAKE_CXX_FLAGS_RELEASE. То что OpenMP включен это хорошо. Если проблема останется, то обращайтесь непосретственно на freenode к разработчикам. Возможно это временная проблема (в текущей ревизии). По поводу x64 ничего посоветовать не могу, сижу на Debian x32.
    Если у Вас версия GCC < 4.5, то лучше использовать -O2 вместо -O3. Есть ещё масса вкусностей для оптимизации (http://gcc.gnu.org/onlinedocs/). Советую почитать про LTO.
    http://www.google.ru/search?hl=ru&source=hp&biw=1280&bih=827&q=gcc LTO&aq=f&aqi=g2&aql=&oq=&gs_rfai=
     
  6. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Попробовал поставить

    CMAKE_CXX_FLAGS = " -O3 -march=native"
    CMAKE_C_FLAGS=" -O3 -march=native"

    Рендер пошёл намного быстрее, не хуже чем в 2.54 с blender.org. Как вы думаете, напротив CMAKE_C_FLAGS_RELEASE и CMAKE_CXX_FLAGS_RELEASE тоже надо выставить теперь march=native, и то что там DNDEBUG это нормально?
     
  7. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Ещё вопрос. Существуют два параметра -march=native и -mtune=native. Чем отличается первый от второго? Я в английском не очень силён, на сколько понял, что -march=native позволяет автоматически определять настройки при компиляции непосредственно для моего железа, второй - более общий, и используется с некоторыми ограничениями..

    > Если у Вас версия GCC < 4.5, то лучше использовать -O2 вместо -O3. Есть ещё масса вкусностей для оптимизации

    Значит предпочтительнее для меня заменить везде где стоит - 03 заменить на -02 ? (у меня наиболее новый пакет gcc 4.4 стоит)
     

    Вложения:

    • 2010627.jpg
      2010627.jpg
      Размер файла:
      349,3 КБ
      Просмотров:
      88
  8. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Сейчас попробовал проставить везде -02 -march=native
    ...
    CMAKE_CXX_FLAGS * -02 -march=native
    CMAKE_CXX_FLAGS_DEBUG * -g
    CMAKE_CXX_FLAGS_MINSIZEREL* -Os -DNDEBUG
    CMAKE_CXX_FLAGS_RELEASE * -O2 -march=native -DNDEBUG
    CMAKE_CXX_FLAGS_RELWITHDEBINFO * -O2 -g
    CMAKE_C_COMPILER * /usr/bin/gcc
    CMAKE_C_FLAGS * -02 -march=native
    CMAKE_C_FLAGS_DEBUG * -g
    CMAKE_C_FLAGS_MINSIZEREL * -Os -DNDEBUG
    CMAKE_C_FLAGS_RELEASE * -O2 -march=native -DNDEBUG
    CMAKE_C_FLAGS_RELWITHDEBINFO * -O2 -g
    ....

    Сейчас запустил пока # make -j3. Как с компилируется, попробую запустить render и отпишусь
     
  9. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    С -02 -march=native после компиляции рендер опять пошёл в 2 раза медленнее. Когда поставил флаги -03 -march=native напротив CMAKE_CXX_FLAGS, CMAKE_CXX_FLAGS_RELEASE, CMAKE_C_FLAGS и CMAKE_C_FLAGS_RELEASE результат был лучше. Вот сравнительный тест для одной и той же сцены:

    ОС: Debian Lenny 5.06 (64 bit):

    Сама сцена: Ve: 1753533, Fa: 2417123, La: 3

    вар1 (после компиляции Blender 2.55 beta с флагом -03 -march=native, с поддержкой 2-ух ядер (-j3)): Time: 5:15.09 (время рендера)

    вар2 (Blender 2.54 с сайта blender.org): Time: 5:21.70 (время рендера)

    Пожалуй остановлюсь на этом, буду проставлять при последующих компиляциях -03 -march=native. Спасибо Logosman, вы мне очень помогли :)
     
  10. logosman vip

    logosman Moderator Команда форума

    С нами с:
    24.09.2005
    Сообщения:
    196
    Симпатии:
    15
    Баллы:
    366
    CMAKE_C_FLAGS_RELEASE включает в себя CMAKE_C_FLAGS, также и на DEBUG версию, поэтому правильнее конечно указывать в CMAKE_C_FLAGS_RELEASE. Но т.к. Вы не являетесь разработчиком Blender, оно Вам будет без разницы.

    По поводу O3 есть разные мнения, он лучше себя показывает на процессорах с большим кэшем.

    -mtune - устаревший параметр, его вытесняет -march.

    Всегда пожалуйста ;)
     
  11. hikkikamori

    hikkikamori Знаток

    С нами с:
    03.08.2009
    Сообщения:
    92
    Симпатии:
    0
    Баллы:
    21
    Хочу немного добавить. Вчера когда собирал новую сборку blender 2.55 beta , поставив флаги -03 -march=native, фокус уже почему-то не удался.. хотя работало же.. :/ У меня Athlon64 X2 Dual-Core 5000+, gcc (Debian 4.3.2-1.1) 4.3.2, немного погуглив, нашёл вот такой вот способ для моего типа процессора :

    CMAKE_CXX_FLAGS -02 -march=athlon64 -pipe
    CMAKE_C_FLAGS -02 -march=athlon64 -pipe

    время рендера опять стало приличным, для выше указанной сцены: 5:13.22
     
Модераторы: logosman

Поделиться этой страницей