"Слои валидации" — как же ужасно звучит. Хотя перевод вроде бы правильный. Для получения сообщений отладки не обязательно регистрировать функцию, по умолчанию Layers выводят в stdout. Ну и с новым vkconfig все намного проще — теперь Layers можно контролировать из вне в удобном визуальном редакторе.
Я делаю не супер-сложный продукт, но и не просто демку. Еще я около 10 лет проработал в игровой индустрии, в том числе программистом графики. За все это время я ни разу не столкнулся с "багами GPU". Я не исключаю, что такое может быть, но когда мне говорят, что в каждая написанная демка работает некорректно и при этом обвиняют GPU — это звучит странно, и я почти уверен, что проблема в коде.
Я работаю с Вулканом уже несколько лет — мы разрабатываем кросплатформенный продукт с единственным поддерживаемым графическим АПИ. За все время я не столкнулся с багами лично ни разу. Все проблемы с некорректной работой были связаны с неправильным использованием АПИ. Являясь постоянным участником форумов/чатов я так же НЕ могу сказать, что сломанные драйверы частая тема обсуждений. В комментарии к приведенной проблеме о сломанных примерах DiligentSamples разработчик утверждает, что никто с подобной проблемой не обращался, т.е. это единичный случай, причиной может быть что угодно. Про отказ UE и Unity от Вулкана я не слышал, и гугл, видимо, тоже. На DigitalFoundry есть подробный рассказ о Doom Eternal, где рассказывается, что мощь движка кроется как раз в использовании Вулкана. Многгие мои стим-игры, которые я запускаю под линуксом, используют Вулкан, причем они транслируют dx вызовы и все работает. Рекомедую использовать современный АПИ всем и всегда.
Молодец, что сумел закончить проект и поделился историей. Necromancer Returns был у меня какое-то время в списке желаемого, но, увы, я так и не приобрел игру. Для меня причиной оказался внешний вид. Не хочу обижать, но те же третьи герои выглядят "интереснее", по-взрослому, чтоли. Так зачем в 2018м выпускать продукт, которая выглядит хуже игры двадцатилетней давности? Для меня лично картинка стоит на первом месте — я могу купить отлично выглядящую, но неинтересную игру. Но вряд ли наоборот.
Мы с командой ужасно недовольно быстродействием отладчика. К 10-секундным ожиданиям подгрузки переменной я как-то привык (шучу — не привык, бесит ужасно), но то, что дебаг сессия иногда вообще отваливается из-за доолгого ожидания, это уже перебор. Вы делаете что-нибудь в этом направлении?
После объявления класса не стоит ;, поэтому это не скомпилируется. Почему, при объявлении параметров шаблона в одном месте использован typename, а в другом — class? И самое главное — что означает последняя строка? Выглядит как User-defined deduction guides, но не компилируется из-за неправильного синтаксиса.
Т.е. функции move_money() и show_user_money_on_time() не были завершены и остановились навечно в deadlock. Решения есть 4:
Есть, по крайней мере, еще одно решение — std::lock().
Статья замечательная, респект за проделанную работу. Особое спасибо за оператор -> пишу на с++ много лет, но только сегодня узнал про «drill down behavior».
К тому же передача по значению не спасает от того, что вектор испортит другой поток в то время, как мы копируем его в нашу функцию.
Если соблюдать копирование при передаче, то изменение данных другим потоком исключена.
Мы вызываем по несколько malloc и free и копируем несколько мегабайт данных на каждый вызов каждой функции
Именно это и является проблемой производительности — согласно профайлеру 80% времени уходит на обслуживание вектора. Оптимизицая была отложена до следующей статьи.
Хороший комментарий, спасибо. Хоть я и не писал об этом, но предполагается использование подобных врапперов для удобства. Если геттеры будут заинлайнены, то разницы в производительности не будет.
Многопоточный код одинаковый для обеих версий. В стандартной библиотеке нет возможности выставлять affinity, но не думаю, что в данном примере это повлияло бы. Тесты/профилирование проводил несколько раз. Но ошибки в коде не исключаю.
"Слои валидации" — как же ужасно звучит. Хотя перевод вроде бы правильный. Для получения сообщений отладки не обязательно регистрировать функцию, по умолчанию Layers выводят в
stdout
. Ну и с новымvkconfig
все намного проще — теперь Layers можно контролировать из вне в удобном визуальном редакторе.Я делаю не супер-сложный продукт, но и не просто демку. Еще я около 10 лет проработал в игровой индустрии, в том числе программистом графики. За все это время я ни разу не столкнулся с "багами GPU". Я не исключаю, что такое может быть, но когда мне говорят, что в каждая написанная демка работает некорректно и при этом обвиняют GPU — это звучит странно, и я почти уверен, что проблема в коде.
Я работаю с Вулканом уже несколько лет — мы разрабатываем кросплатформенный продукт с единственным поддерживаемым графическим АПИ. За все время я не столкнулся с багами лично ни разу. Все проблемы с некорректной работой были связаны с неправильным использованием АПИ. Являясь постоянным участником форумов/чатов я так же НЕ могу сказать, что сломанные драйверы частая тема обсуждений. В комментарии к приведенной проблеме о сломанных примерах DiligentSamples разработчик утверждает, что никто с подобной проблемой не обращался, т.е. это единичный случай, причиной может быть что угодно. Про отказ UE и Unity от Вулкана я не слышал, и гугл, видимо, тоже. На DigitalFoundry есть подробный рассказ о Doom Eternal, где рассказывается, что мощь движка кроется как раз в использовании Вулкана. Многгие мои стим-игры, которые я запускаю под линуксом, используют Вулкан, причем они транслируют dx вызовы и все работает. Рекомедую использовать современный АПИ всем и всегда.
Молодец, что сумел закончить проект и поделился историей. Necromancer Returns был у меня какое-то время в списке желаемого, но, увы, я так и не приобрел игру. Для меня причиной оказался внешний вид. Не хочу обижать, но те же третьи герои выглядят "интереснее", по-взрослому, чтоли. Так зачем в 2018м выпускать продукт, которая выглядит хуже игры двадцатилетней давности? Для меня лично картинка стоит на первом месте — я могу купить отлично выглядящую, но неинтересную игру. Но вряд ли наоборот.
Мы с командой ужасно недовольно быстродействием отладчика. К 10-секундным ожиданиям подгрузки переменной я как-то привык (шучу — не привык, бесит ужасно), но то, что дебаг сессия иногда вообще отваливается из-за доолгого ожидания, это уже перебор. Вы делаете что-нибудь в этом направлении?
Что такое
std2
? Имелась ли ввиду библиотекаranges
?Объясните пожалуйста что означает этот код:
После объявления класса не стоит
;
, поэтому это не скомпилируется. Почему, при объявлении параметров шаблона в одном месте использованtypename
, а в другом —class
? И самое главное — что означает последняя строка? Выглядит как User-defined deduction guides, но не компилируется из-за неправильного синтаксиса.Спасибо, теперь понял. Смутило, что в примерах в статье отсутствуют эти перегрузки.
Интересная статья, спасибо за труд. Объясните пожалуйста, зачем вы здесь вызываете
std::move
?Есть, по крайней мере, еще одно решение — std::lock().
Статья замечательная, респект за проделанную работу. Особое спасибо за оператор -> пишу на с++ много лет, но только сегодня узнал про «drill down behavior».
Если соблюдать копирование при передаче, то изменение данных другим потоком исключена.
Именно это и является проблемой производительности — согласно профайлеру 80% времени уходит на обслуживание вектора. Оптимизицая была отложена до следующей статьи.