🦥Alex Fails
Есть ::DebugBreak
Есть еще интринсик)
Stanislav
А разве код для 8086 сейчас на современных процах можно выполнять?
я думаю если бы это все выкинули, процессоры были бы сильно проще в произвосдвет) но надо тянуть
Stanislav
как и в С++ все толще и толще
🦥Alex Fails
В х64 выкинули кучу дерьма
🦥Alex Fails
ААА
🦥Alex Fails
Например
🦥Alex Fails
ASCII ADD
Андрей
Например
А оно в режиме эмуляции работает или нет?
🦥Alex Fails
вообще, у интела есть инстракшион мануал)
Andrei
Норм.
Andrei
Еще у интела есть ётаблица throughput всех комманд
Andrei
очень люблю изучать на досуге
🦥Alex Fails
А что это за таблица?
Stanislav
сколько тактов занимает инструкция?
Andrei
сколько микроопераций на %твоя любимая платформа нейм% работает та или иная инструкция
🦥Alex Fails
Збс
🦥Alex Fails
Кинь мне
🦥Alex Fails
Я еще в канал запосчу
Andrei
http://www.agner.org/optimize/instruction_tables.pdf
🦥Alex Fails
Andrei
Люблю её для использования в объяснениях почему лучше обходится иногда без кеширования чем ифом с заглядыванием в память.
Andrei
В спорах о перфомансе :D
Stanislav
Stanislav
http://www.agner.org/optimize/instruction_tables.pdf
хотя от такой же для армов я бы не отказался :)
🦥Alex Fails
Ммм... армы...
🦥Alex Fails
Ну<. Как я понял, чувак исследует эту тему
🦥Alex Fails
По х86
🦥Alex Fails
Я пожалуй в диссер впильну референс на эту табличку
Andrei
http://infocenter.arm.com/help/index.jsp?topic=/com.arm.doc.ddi0408h/ch02s03s02.html
Andrei
Для армов.
Stanislav
Я пожалуй в диссер впильну референс на эту табличку
Серьезно? Впервые про агнера слышишь?
🦥Alex Fails
Да(
🦥Alex Fails
Мб слыхал, и забыл
🦥Alex Fails
ребят, кто-нибудь работал с OpenCL?
Stanislav
😞 неа
Square
Посоны. нужна критика...
Square
Межпоточное взаимодействие. Для выталкивания данных из потока у него на выходе есть статический буфер. Также у каждого потока есть условно-говоря "входная" лок-фри очередь, куда ему складывают указатели на данные, которые пишучий поток хранит в "своем" экземпляре буфера. Читающий выбирает элементы из своей входной очереди, и лезет за данными к потоку-родителю, в его выходной буфер, где твориться самая "грязь"... суть такова, что пишущий поток условно идет перед читающим и проверяет постоянно его "позицию" на своем выходе, чтобы не наступить на хвост... read/write offset в выходном буфере под "атомиками"... т.е. у буфера есть только метод addItem() в котором это колдунство творится, ломаю голову над тем, что можно улучшить. Схема не самая удачная, могу рассазать про подводные камни, с которыми столкнулись, однако скорость работы весьма достойная...
Square
После ухода от мютексов и прочих критических секций прирост скорости значительный, но теперь глаз настолько замылен, что ничего другого не придумывается
🦥Alex Fails
Ща подумаю
Square
буфер аллокейтится перед началом работы, в зависимости от количества потоков размер очереди от 100 мбайт до 2-5 гбайт и от 10к до 1КК элементов.
🦥Alex Fails
Кольцевые буферы, аддитем и пр
🦥Alex Fails
а что за потоки вообще есть
🦥Alex Fails
Есть поток с данными
🦥Alex Fails
Есть всп для него на чтение/запист
Square
один поток решает одну задачу над данными, второй - другую... условно так
Square
средний размер блока 100 кбайт
Square
а что за потоки вообще есть
в одном экземпляре ПО на обработку задействуется 5-10 потоков. зависит от сценария...
Square
между ними все это и происходит...
Square
сейчас есть небольшие проблемы с тем, чтобы все это хозяйство корректно тормозить... особенно когда появляются "обратные" связи
🦥Alex Fails
Андрей
Межпоточное взаимодействие. Для выталкивания данных из потока у него на выходе есть статический буфер. Также у каждого потока есть условно-говоря "входная" лок-фри очередь, куда ему складывают указатели на данные, которые пишучий поток хранит в "своем" экземпляре буфера. Читающий выбирает элементы из своей входной очереди, и лезет за данными к потоку-родителю, в его выходной буфер, где твориться самая "грязь"... суть такова, что пишущий поток условно идет перед читающим и проверяет постоянно его "позицию" на своем выходе, чтобы не наступить на хвост... read/write offset в выходном буфере под "атомиками"... т.е. у буфера есть только метод addItem() в котором это колдунство творится, ломаю голову над тем, что можно улучшить. Схема не самая удачная, могу рассазать про подводные камни, с которыми столкнулись, однако скорость работы весьма достойная...
А нельзя создать поток, который будет наполнять локальную очередь?
Square
А нельзя создать поток, который будет наполнять локальную очередь?
каждый из потоков может сам "порождать" данные, которые ему нужно отдать дальше.
Square
очередей много ...
Square
попробую нарисовать схемку...
Square
как вы бы сами замутили межпоточный обмен. где критичны каждое выделение памяти и блокировки...
🦥Alex Fails
На статичном бкфере
Две Точки
Че делать? Зависла, еле закрыл VS, походу сбросилась, и теперь игра отображается неправильно
Две Точки
Square
выйти-зайти?
Anonymous
опять же - в супапро слабый оффтоп можно
а паскаль разрешил, потому что решение в нем хуже))))
Sergey
Как использовать дефолтные значения параметров в шаблонных функциях?
Sergey
template<typename T> T str_to_decimal(std::string &s, int base = 10); template<> int32_t str_to_decimal<int32_t😠std::string &s, int base = 10) { }
🦥Alex Fails
не пашет? иль что?
Sergey
Ругается на присвоение во второй перегрузке
🦥Alex Fails
дык убери
Sergey
И будет норм?
Sergey
В плане работы
🦥Alex Fails
да
🦥Alex Fails
правило одного определения и пр. муть
Square
Решили?
что решили?
Andrei
Ну задачу свою.
Square
решение я описал. юзаем.