Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
||
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[18.97.14.84] |
|
Страницы: (89) [1] 2 3 ... 88 89 ( Перейти к последнему сообщению ) |
Сообщ.
#1
,
|
|
|
с этого момента, буду производить тестовые/пререлизные/релизные сборки mingw.
файлы с пометкой snapshot и prerelease - не стабильные версии. в реальных проектах использовать не рекомендую. использую для тестирования новых фитчей. файлы с пометкой release - стабильные, прошедшие тесты. скачать можно тут. моя первая сборка стабильной версии gcc-4.6.1 для windows(т.е. MinGW) с полной поддержкой LTO, OpenMP, Graphite, std atomics и std threads. при использовании классов из std threads, добавляйте опцию "-lpthread". в будущих сборках исправлю. Эта тема была разделена из темы "Новый стандарт C++: C++1x" |
Сообщ.
#2
,
|
|
|
трэды, мьютексы - это все ладно... больше всего радует std::chrono. как это не банально звучит
еще просьба. скажите, кто-то тестил последнюю сборку? я хочу сообществу GNU-gcc предложить применить мой патч в основную ветку, для корректной сборки MinGW с поддержкой всех перечисленных фитчей. буду благодарен если кто-то попробует собрать и потестить свои реальные проекты. спасибо. |
Сообщ.
#3
,
|
|
|
Цитата niXman @ буду благодарен если кто-то попробует собрать и потестить свои реальные проекты. как то странно будет в реальных проектах за последними фичами гнаться, пока даже стандарт не принят. |
Сообщ.
#4
,
|
|
|
DEADHUNT, не нужно гнаться. но опробовать LTO, который, к примеру, в лине дает прирост в скорости в 11 раз, а в венде в 9 раз, наверное будет полезно. ибо его не отменят
Graphite - вообще интересная штука. но его использовать нужно с умом. OpenMP - утвержденный международный стандарт. разве вы его не используете? вряд-ли... Добавлено Цитата DEADHUNT @ даже стандарт не принят. печатное издание на ангельском, обещано осенью. релиз gcc-5.0.0 обещан к концу этого года-началу следующего. что вас смущает? Добавлено DEADHUNT, можешь сам проверить на это тесте: http://kemiisto.blogspot.com/2010/09/lto.html я вообще-то пытался понять как Parma Polyhedra работает, и за счет чего этот оптимизатор позволяет получить столь необычайно высокий прирост производительности. но увы, недостаток образования ведать... |
Сообщ.
#5
,
|
|
|
Цитата niXman @ DEADHUNT, можешь сам проверить на это тесте: http://kemiisto.blogspot.com/2010/09/lto.html я верю, т.к. сам одно время занимался темой оптимизации в компиляторах. только я говорил не про оптимизацию которую предоставляют новые версии gcc(по сути это даже не относится к C++ и C++1x), а про языковые расширения и расширение STL, рискованно использовать в реальных проектах только что реализованные в libstdc++ классы/шаблоны/...(помню как std::thread пытался использовать когда его только реализовали, а он валился в деструкторе или ещё где то, в итоге обратно вернулся на boost::thread). |
Сообщ.
#6
,
|
|
|
DEADHUNT, это все понятно, мало кто решится зарелизить реальные проекты на этих версиях компиляторов. я и сам это понимаю. но testsuite пройдены. нет основания не доверять компилятору.
но повторюсь: выпустить реальный проект собранный этим компилятором я и сам бы не решился... предрассудки, что-ли... Добавлено еще сильно порадовали parallel algorithms. в лине я-то их использую. но в венде до сих пор было невозможно. |
Сообщ.
#7
,
|
|
|
Цитата DEADHUNT @ Так он и должен валиться в деструкторе:помню как std::thread пытался использовать когда его только реализовали, а он валился в деструкторе или ещё где то, в итоге обратно вернулся на boost::thread Цитата Работает просто не совсем так, как в бусте. Поток вызывается не в деструкторе, а в конструкторе. После чего его надо детачить. 30.3.1.3 thread destructor [thread.thread.destr] ~thread(); If joinable() then terminate(), otherwise no effects. [ Note: Either implicitly detaching or joining a joinable() thread in its destructor could result in difficult to debug correctness (for detach) or performance (for join) bugs encountered only when an exception is raised. Thus the programmer must ensure that the destructor is never executed while the thread is still joinable. —end note ] |
Сообщ.
#8
,
|
|
|
Цитата Повстанець @ Работает просто не совсем так, как в бусте. Поток вызывается не в деструкторе, а в конструкторе. После чего его надо детачить. точно, наверное моя ошибка была. сейчас и для boost::thread в том место join() вызывается перед разрушением. то что я писал было год назад, тем более возможно я использовал gcc собственно ручно собранный из исходников взятых из svn транка. и то что я написал, говорит не о том что thread не правильно работает, а о том что не стоит бросаться сразу использовать только что реализованный класс/шаблон, т.к. трудно будет отлечить что не работает stdlibc++(это для gcc, или другая реализация) или собственная программа. |
Сообщ.
#9
,
|
|
|
Цитата niXman @ моя первая сборка стабильной версии gcc-4.6.1 для windows(т.е. MinGW) с полной поддержкой LTO, OpenMP, Graphite, std atomics и std threads. C OpenMP там точно все в порядке? |
Сообщ.
#10
,
|
|
|
Real16, что-то не так? рассказывайте..
|
Сообщ.
#11
,
|
|
|
Да что-то не идет OpenMP-программа. Ставлю опцию -fopenmp, линкую библиотеку libgomp.a . Ругается много на undefined references в gomp_***-функциях на pthreads_***, sem_***. При аналогичных настройках в TDM-сборке 4.5.2 все работает.
Еще вопрос по LTO - правильно ли я понимаю, что опции компиляции и линковки -flto руками ставить не нужно? Добавлено Правильно ли я понимаю, что данная сборка 4.6.1. не поддерживает async (из C++0x) ? |
Сообщ.
#12
,
|
|
|
Цитата Real16 @ Ругается много на undefined references в gomp_***-функциях на pthreads_***, sem_***. Цитата niXman @ не? добавляйте опцию "-lpthread" |
Сообщ.
#13
,
|
|
|
Real16, только что еще раз проверил openmp. все работает.
Цитата Real16 @ данная сборка 4.6.1. не поддерживает async (из C++0x) ? почему вы задаете наводящие вопросы? если что-то не работает - показывайте код, разберемся. |
Сообщ.
#14
,
|
|
|
Цитата niXman @ почему вы задаете наводящие вопросы? если что-то не работает - показывайте код, разберемся. Что касается async - вот, например, пример с data-race.com #include <iostream> #include <future> #include <thread> int calculate() { return 2 * 2; } int main() { std::future<int> result = std::async(calculate); std::cout << result.get() << std::endl; } у меня не работает. С другой стороны, использование thread-объектов работает. Это сообщение было перенесено сюда или объединено из темы "Новый стандарт C++: C++1x" |
Сообщ.
#15
,
|
|
|
Цитата Real16 @ у меня не работает. признаюсь, async`и не проверял. сейчас.. Это сообщение было перенесено сюда или объединено из темы "Новый стандарт C++: C++1x" |