🦥Alex Fails
Stanislav
как и в С++ все толще и толще
🦥Alex Fails
В х64 выкинули кучу дерьма
🦥Alex Fails
ААА
🦥Alex Fails
Например
🦥Alex Fails
ASCII ADD
Андрей
Например
А оно в режиме эмуляции работает или нет?
🦥Alex Fails
вообще, у интела есть инстракшион мануал)
Андрей
Andrei
Норм.
🦥Alex Fails
Stanislav
Andrei
Еще у интела есть ётаблица throughput всех комманд
Andrei
очень люблю изучать на досуге
🦥Alex Fails
А что это за таблица?
Stanislav
сколько тактов занимает инструкция?
Andrei
сколько микроопераций на %твоя любимая платформа нейм% работает та или иная инструкция
🦥Alex Fails
Збс
🦥Alex Fails
Кинь мне
🦥Alex Fails
Я еще в канал запосчу
Sergey
Andrei
http://www.agner.org/optimize/instruction_tables.pdf
🦥Alex Fails
Andrei
Люблю её для использования в объяснениях почему лучше обходится иногда без кеширования чем ифом с заглядыванием в память.
Andrei
В спорах о перфомансе :D
Stanislav
Stanislav
🦥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
🦥Alex Fails
ребят, кто-нибудь работал с OpenCL?
Stanislav
😞 неа
Square
Посоны. нужна критика...
Square
Межпоточное взаимодействие. Для выталкивания данных из потока у него на выходе есть статический буфер. Также у каждого потока есть условно-говоря "входная" лок-фри очередь, куда ему складывают указатели на данные, которые пишучий поток хранит в "своем" экземпляре буфера. Читающий выбирает элементы из своей входной очереди, и лезет за данными к потоку-родителю, в его выходной буфер, где твориться самая "грязь"... суть такова, что пишущий поток условно идет перед читающим и проверяет постоянно его "позицию" на своем выходе, чтобы не наступить на хвост... read/write offset в выходном буфере под "атомиками"... т.е. у буфера есть только метод addItem() в котором это колдунство творится, ломаю голову над тем, что можно улучшить.
Схема не самая удачная, могу рассазать про подводные камни, с которыми столкнулись, однако скорость работы весьма достойная...
Square
После ухода от мютексов и прочих критических секций прирост скорости значительный, но теперь глаз настолько замылен, что ничего другого не придумывается
🦥Alex Fails
Ща подумаю
Square
буфер аллокейтится перед началом работы, в зависимости от количества потоков размер очереди от 100 мбайт до 2-5 гбайт и от 10к до 1КК элементов.
🦥Alex Fails
Кольцевые буферы, аддитем и пр
Square
🦥Alex Fails
а что за потоки вообще есть
🦥Alex Fails
Есть поток с данными
🦥Alex Fails
Есть всп для него на чтение/запист
Square
один поток решает одну задачу над данными, второй - другую... условно так
Square
средний размер блока 100 кбайт
Square
между ними все это и происходит...
Square
сейчас есть небольшие проблемы с тем, чтобы все это хозяйство корректно тормозить... особенно когда появляются "обратные" связи
🦥Alex Fails
Андрей
Межпоточное взаимодействие. Для выталкивания данных из потока у него на выходе есть статический буфер. Также у каждого потока есть условно-говоря "входная" лок-фри очередь, куда ему складывают указатели на данные, которые пишучий поток хранит в "своем" экземпляре буфера. Читающий выбирает элементы из своей входной очереди, и лезет за данными к потоку-родителю, в его выходной буфер, где твориться самая "грязь"... суть такова, что пишущий поток условно идет перед читающим и проверяет постоянно его "позицию" на своем выходе, чтобы не наступить на хвост... read/write offset в выходном буфере под "атомиками"... т.е. у буфера есть только метод addItem() в котором это колдунство творится, ломаю голову над тем, что можно улучшить.
Схема не самая удачная, могу рассазать про подводные камни, с которыми столкнулись, однако скорость работы весьма достойная...
А нельзя создать поток, который будет наполнять локальную очередь?
Square
очередей много ...
Square
попробую нарисовать схемку...
Square
как вы бы сами замутили межпоточный обмен. где критичны каждое выделение памяти и блокировки...
🦥Alex Fails
На статичном бкфере
Две Точки
Че делать? Зависла, еле закрыл VS, походу сбросилась, и теперь игра отображается неправильно
Две Точки
Square
выйти-зайти?
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
правило одного определения и пр. муть
Andrei
Square
Andrei
Ну задачу свою.
Square
решение я описал. юзаем.