Pull to refresh
0
0
Олег @GigaCore

cgi fx r&d. http://blackcore.technology/

Send message

Динамическая JIT компиляция C++

Level of difficultyMedium
Reading time12 min
Views5.2K


Когда-то давно я писал статью-наблюдение про использование Хабра в качестве площадки для архитектурных ревью технических решений практически любой сложности Хабр — ума палата, и продолжаю пользоваться этим способом на постоянной основе.


А теперь, похоже, я нашел еще один очень полезный Хаброхак, который заключается в использования Хабра как записной книжки, но не как в том анекдоте я думал, что это блокнот для заметок, а всем видно оказывается что я здесь написал, а в самом хорошем смысле — для хранения результатов различных экспериментов, подведения итогов поиска в решения проблем и публикации итоговых выводов.


Так, на днях искал материалы про JIT компиляцию C++ в рантайме с помощью clang/llvm и поиск мне выдал мою же собственную статью трехгодичной давности: Динамическая JIT компиляция С/С++ в LLVM с помощью Clang / Хабр. В результате появилась уже эта новая статья про JIT компиляцию C/С++.

Читать дальше →
Total votes 11: ↑10 and ↓1+9
Comments4

Художественные приемы и профессиональные термины для создания изображений с ИИ. Всё, что нужно знать

Reading time7 min
Views6.3K

В этой статье собраны все основные понятия для написания текстовой подсказки для генерации изображений с помощью нейросети.

Если вы хотите создавать качественные изображения, нужно понимать (или просто запомнить) некоторые профессиональные термины и приемы, используемые художниками и фотографами.

В этой статье мы разберем такие ключевые факторы, как высокая детализация, освещение, стиль изображения и другое.

Читать далее
Total votes 30: ↑27 and ↓3+24
Comments10

Цивилизация Пружин, 3/5

Reading time10 min
Views56K

Часть 3. Цивилизация пружин



[Image credit: By Lothar Spurzem — Own work, CC BY-SA 2.0 de, commons.wikimedia.org/w/index.php?curid=39574590]

Предыдущая часть. Краткое содержание предыдущей серии.

Итак, какие же ещё есть способы хранения энергии, помимо химического топлива? Пусть даже не для ракет, а вообще?

Начнём с электрической батареи. Вот хотя бы литиево-ионной. Откуда в ней берётся энергия?

Всё просто, там идёт[210] электрохимическая реакция:

LiC6 + CoO2 <-> C6 + LiCoO2

Идёт налево — песнь за заряжается. Направо — разряжается.
Вы, конечно, уже догадались
Total votes 201: ↑198 and ↓3+195
Comments109

CPU vs GPU. Distance field

Reading time5 min
Views22K
Привет всем. Я уже однажды писал про Distance Field и приводил реализацию «эвристическим» кодом, дающую неплохую скорость: «Честный glow и скорость».

Зачем он нужен?


DField можно применять:
  • Для значительного повышения качества шрифтов
  • Для эффектов например горения контура. Один из эффектов я приводил в своей предыдущей статье
  • Для эффекта «metaballs» но в 2д и для любых сложных шейпов. (возможно я когда-нибудь приведу пример реализации этого эффекта)
  • А в данный момент DField мне нужен для качественного сглаживания углов и удаления мелких деталей.

И если в первых двух случаях мы можем заранее вычислить DField, то для других эффектов нам нужно просчитывать его в реальном времени.
В статье будет рассмотрен наиболее популярный, я бы сказал классический Chamfer distance (CDA) с кучей картинок, объясняющих принцип его работы, а так же рассмотрен двухпроходный алгоритм на GPU.
Оба алгоритма реализованы в демонстрационных программах на FPC.
Читать дальше →
Total votes 39: ↑37 and ↓2+35
Comments24

Что такое сознание

Reading time25 min
Views111K


Одним из самых главных научных вопросов Человечества, считается вопрос: «Что такое сознание?». Как Человек думает, принимает решения, как происходит мышление, анализ и интерпретация различных внешних раздражителей и т.д. Ответы на эти вопросы, а также что такое сознание, главный вопрос жизни, вселенной и всего такого под катом.
Total votes 26: ↑22 and ↓4+18
Comments165

Спектральный анализ пламени костра. Что делает огонь желтым – наночастицы углерода или соли натрия?

Reading time9 min
Views39K

В публикациях в интернете по-разному объясняется, как возникает цвет пламени у костра. Существует две принципиально разные версии. В одной говорится, что излучают раскаленные частицы углерода размером около 100 нм, во второй - что желтый цвет возникает при излучении солей натрия, находящихся в древесине.

В многочисленных публикациях одно или другое из этих объяснений. На форумах обсуждается эта тема, но никто не ссылается на результаты экспериментов. То есть, до настоящего времени нет общепринятого варианта объяснения механизма видимого излучения, возникающего в процессе горения костра!

И все же - почему костер желтый? Я решил провести эксперименты и найти правильный ответ. Мне нужно было измерить спектр видимого излучения пламени костра и объяснить результаты. Если спектр будет сплошным – верна первая версия, если мы будем наблюдать двойную линию натрия – вторая.

Читать дальше
Total votes 192: ↑190 and ↓2+188
Comments102

Пишем программу 3D-моделирования в 500 строках кода

Reading time28 min
Views22K
image

Введение


Люди от природы креативны. Мы постоянно проектируем и создаём новые, полезные и интересные вещи. Сегодня мы пишем ПО, помогающее процессу проектирования и творчества. Программы САПР (Computer-aided design, CAD) позволяют творцам проектировать здания, мосты, графику видеоигр, чудовищ для фильмов, объектов для 3D-печати и множество других вещей перед созданием физической версии проекта.

По своей сути, инструменты CAD являются способом абстрагирования трёхмерного проекта в нечто, что можно просматривать и редактировать на двухмерном экране. Чтобы справляться со своей задачей, инструменты CAD должны обеспечивать три основных элемента функциональности. Во-первых, они должны иметь структуру данных, описывающую проектируемый объект: это то, как компьютер понимает создаваемый пользователем трёхмерный мир. Во-вторых, инструмент CAD должен обеспечивать отображение проекта на экране пользователя. Пользователь проектирует физический объект с тремя измерениями, но экран компьютера имеет всего два измерения. Инструмент CAD должен моделировать способ восприятия нами объектов и отрисовывать их на экране так, чтобы пользователь смог понять все три измерения объекта. В-третьих, CAD должен предоставлять возможность взаимодействия с проектируемым объектом. Пользователь должен быть способен дополнять или модифицировать проект, чтобы создать нужный результат. Кроме того, все инструменты должны иметь возможность сохранения и загрузки проектов с диска, чтобы пользователи могли сотрудничать, обмениваться своей работой и сохранять её.
Читать дальше →
Total votes 10: ↑10 and ↓0+10
Comments2

Гидропоника. Выращиваем сверхострый чили и заставляем всех его есть

Reading time14 min
Views137K


Полтора килограмма термоядерного Тринидадского Скорпиона я в итоге собрал с одного куста на гидропонике.


У меня было много довольно странных хобби. Некоторые приводили к странным эффектам, вроде массового домашнего производства домашнего порошка для посудомойки. В список к этому странному ряду я решил добавить еще один пункт. Теперь я развлекаюсь еще и с гидропоникой. Причем эффект получился еще более адовый, чем я ожидал.


Небольшая часть урожая


Тема чудовищно огромная, охватить ее за один пост вряд ли получится, поэтому я постараюсь ограничиться описанием принципа, почему это вообще работает и дать максимально исчерпывающий мануал, чтобы каждый смог из желудей и спичек повторить мой эксперимент. В самом начале будет много теории. Можете ее проскочить и сразу перейти к нужным покупкам, а вернуться к ней позже.


Сегодня в меню


  1. Что такое гидропоника и почему она гораздо проще, чем почва с червячками
  2. Никаких дорогих бутылочек. Мешаем компоненты по три рубля за ведро
  3. Питание растения как алгоритм
  4. Как быстро собрать прототип гидропонной установки
  5. Что такое capsicum chinense и как выжить при дегустации
Total votes 248: ↑248 and ↓0+248
Comments328

Симуляция подъёмной силы Ньютона методом частиц на CUDA

Reading time22 min
Views14K

https://www.youtube.com/playlist?list=PLwr8DnSlIMg0KABru36pg4CvbfkhBofAi


Как-то на Хабре мне попалась довольно любопытная статья “Научно-технические мифы, часть 1. Почему летают самолёты?”. Статья довольно подробно описывает, какие проблемы возникают при попытке объяснить подъёмную силу крыльев через закон Бернулли или модель подъёмной силы Ньютона (Newtonian lift). И хотя статья предлагает другие объяснения, мне бы всё же хотелось остановиться на модели Ньютона подробнее. Да, модель Ньютона не полна и имеет допущения, но она даёт более точное и интуитивное описание явлений, чем закон Бернулли.


Основной недостаток этой модели — это отсутствие взаимодействия частиц газа друг с другом. Из-за этого при нормальных условиях она даёт некорректные результаты, хотя всё ещё может применяться для экстремальных условий, где взаимодействием можно пренебречь.


Я же решил проверить, что же произойдёт в модели Ньютона если её улучшить. Что если добавить в неё недостающий элемент межатомного взаимодействия? Исходный код и бинарники получившегося симулятора доступны на GitHub.


Перед тем как мы начнём, я бы хотел сразу обозначить, что это статься не о физике самой модели. Эта статья о GPGPU-программировании. Мы не будем рассматривать физические свойства самой модели, потому что она груба и не подходит для настоящих расчётов. И всё же, эта неточная модель даёт куда более интуитивное описание явления подъёмной силы, чем закон Бернулли.

Total votes 66: ↑65 and ↓1+64
Comments46

Flask + Dependency Injector — руководство по применению dependency injection

Reading time15 min
Views8.5K
Привет,

Я создатель Dependency Injector. Это dependency injection фреймворк для Python.

В этом руководстве хочу показать как применять Dependency Injector для разработки Flask приложений.
Читать дальше →
Rating0
Comments2

Что ещё необходимо узнать про OpenCL C перед тем, как на нём писать

Reading time13 min
Views16K
Как было написано
float4 val = (0, 0, 0, 0);

Что хотел написать автор
float4 val = (float4)(0, 0, 0, 0);

Как нужно было написать
float4 val = 0;


Если Вы сталкивались с OpenCL или планируете столкнуться и не видите разницы между первым и вторым вариантом, а третий вызывает у Вас сомнения — «А скомпилируется ли вообще?» — добро пожаловать под кат, там много нюансов языка и совсем ничего про API и оптимизацию производительности.
Читать дальше →
Total votes 43: ↑43 and ↓0+43
Comments4

Достижение максимальной производительности Быстрого Преобразования Фурье на основе управления данными

Reading time1 min
Views19K
Статья поддерживается здесь:
[3] Caterpillar Implementation Based on Generated Code

// не вижу смысла писать на ресурсе а) с цензурой тэгов б) где каждый проходящий бот, набравший рейтинг галиматьей, сносит твой рейтинг и объяснение причины с него не требуется
Total votes 23: ↑22 and ↓1+21
Comments15

Символьное решение задач нелинейного программирования

Reading time5 min
Views13K

Введение


С появлением библиотеки SymPy для решения математических задач появились дополнительные возможности, позволяющие отображать результаты в символьной форме.

Подробное описание использования символьных вычислений приведено в публикации [1] под названием «Введение в научный Python» в разделе «Символьные вычисления».

Расширение области применения символьных вычислений на решение отдельных задач нелинейного программирования надеюсь будет способствовать популяризации Python в том числе и как альтернатива дорогостоящих математических пакетов.

Постановка задачи


Привести примеры символьных вычислений для безусловного экстремума дифференцируемой нелинейной функции цели с определением достаточных условий существования экстремума по матрице Гессе. Рассмотреть так же задачу условного нелинейного программирования с линейными ограничениями при помощи множетелей Лагранжа.

Для того, чтобы определиться с терминологией приведу следующее определение [2]. Задачей нелинейного программирования (задачей НП) называется задача нахождения максимума (минимума) нелинейной функции многих переменных, когда на переменные имеются (не имеются) ограничения типа равенств или неравенств.

Символьное вычисление безусловного экстремума дифференцируемой функции трёх переменных


Несмотря на сложность решаемых задач при символьном решении всё становится простым и наглядным. Рассмотрим листинг первого примера.
Читать дальше →
Total votes 12: ↑10 and ↓2+8
Comments3

Математика на пальцах: давайте посчитаем хотя бы один ряд Фурье в уме

Reading time6 min
Views87K

Нужно ли вам читать этот текст?


Давайте проверим. Прочтите следующее:

Тригонометрическим рядом Фурье функции  называют функциональный ряд вида



где







Страшно, но всё же хочется понять, что это значит?


Значит, вам под кат. Постараюсь формул не использовать.
Читать дальше →
Total votes 86: ↑76 and ↓10+66
Comments99

Intel® Tamper Protection Toolkit — обфусцирующий компилятор и средства проверки целостности кода

Reading time15 min
Views11K

Совсем недавно компания Intel выпустила очень интересный набор инструментов для разработчиков программного обеспечения, позволяющий добавить защиту программного кода от взлома и существенно усложнить жизнь взломщикам программ. Этот набор включает в себя обфусцирующий компилятор, средство для создания файла подписи, используемого для проверки целостности загружаемых динамических библиотек, а также библиотеку функций проверки целостности и дополнительные полезные инструменты. Intel® Tamper Protection Toolkit beta можно совершенно бесплатно скачать на сайте Intel.
Читать дальше →
Total votes 14: ↑14 and ↓0+14
Comments17

Параллельное программирование с CUDA. Часть 1: Введение

Reading time11 min
Views127K

Еще одна статья о CUDA — зачем?


На Хабре было уже немало хороших статей по CUDA — раз, два и другие. Однако, поиск комбинации «CUDA scan» выдал всего 2 статьи никак не связанные с, собственно, алгоритмом scan на GPU — а это один из самых базовых алгоритмов. Поэтому, вдохновившись только что просмотренным курсом на Udacity — Intro to Parallel Programming, я и решился написать более полную серию статей о CUDA. Сразу скажу, что серия будет основываться именно на этом курсе, и если у вас есть время — намного полезнее будет пройти его.
Читать дальше →
Total votes 29: ↑26 and ↓3+23
Comments36

Information

Rating
Does not participate
Location
Харьков, Харьковская обл., Украина
Date of birth
Registered
Activity