0 1 2 3 4 ...9 10 11 12 13 ...20 21 22 23 24 25 26
Тъпанчев излезе много прозорлив. Поспорихме малко, че ако личностното развитие и равноправие на жените водят до по малко деца то по обратната логика за справяне с демографския проблем в България трябва да се ограничат правата на жените както и личностното им развитие. Няколко реплики по късно спря да ми отговаря. Явно ме маркираха като фашага
File | Size | Uploaded | Downloads | MD5 hash |
---|---|---|---|---|
Screenshot 2024-11-27 at 18.49.30.png | 1925072 bytes | 27.11.2024 | 142 | 98fa12afc31d41a0910dd682f704634b |
File | Size | Uploaded | Downloads | MD5 hash |
---|---|---|---|---|
1736038946551915.jpg | 43001 bytes | 05.01.2025 | 113 | 6bbd28d9c28437749897d0700038584d |
китайците за моя изненада пускат и нелоши опен-сорс неща. В случая Hunyuan с една невидийка с > 45 GB VRAM и най-хубавото е липсата на цензура https://www.youtube.com/shorts/v-bh91qcVNc
акаунт
на
Единия Създадено на 05.01.2025, видяно: 410 пъти. #130830
Аз днеска разбрах, че има "Biblehub" - не знам за какво иде реч!
Не е на добре...В началото към 3-тата минута има и опити да се генерира и нещо ала game of thrones(сори @реба)
Реба Създадено на 19.01.2025, видяно: 236 пъти. #132162
хахаха, значи нахендрих се на много специфичен проблем - гцц не генерира код за static функции ако не се ползват в самия файл, логиката е ясна - идеята на статик в С е да не се вижда извън файла, и щом не се ползва вътре във файла, значи е мъртво месо. хубаво ама в С++ статик има и втори смисъл, когато е в някой клас. тогава е видима отвън, но компилатора явно по логиката за глобална статик пак я реже. търсих в гугъла някой да е удрял тоя проблем, сигурно има, но гугъла освен за намиране на магазини вече за нищо не става. гпт обаче разбра проблема и предложи работещо решение, голям кеф хахаха
И какво беше решението?
Аз имах скоро подобен проблем и решението никак не беше просто. Сигурно щото не ползвах ИИ. Трябваше ми не само статична функция ами и статична променлива която да е в специфична линкерска секция където се акумулират всички подобни променливи т.е. те са статични за да не ги ползваш по име, но са безименно глобални. Първо, че трябва да се маркира самата променлива със съответен нестандартен gcc attribute за да не я разкара още компилатора, второ трябваше да се каже на линкера този генериран .о обектен файл да го линква въпреки, че в него няма никакви глобални функции или променливи които да се ползват някъде другаде - линкерската опция се нарича whole arhive. И това гарнирано с cmake простотии които не се поддържат от по старите cmake-ове. CI builda заприлича на нищо и половина накрая ама засега работи. Ставаше въпрос за event handlers които да се закачат и викат автоматично без да се налага да ги добавяш с код в разните му списъци.
Интересно, real life case за намиране на гаден бъг водещ до краш с ИИ модел:
Нали се сещаш, че общата колективна логика на всички милЯрди дивелъпъри по планетата е много по-различна от твойта. Това не се отнася само за static, ами за всяка ф-я. Ако не се вика никъде, значи не трябва и е нормално да се реже. Аз просто не мога да си представя случай, в който да не искаш да се реже, освен ако не линкваш so, но, естествено, хората са го предвидили.
Как точно ще се отреже ЕДНА функция от обджект файл ако не се вика? :)
Тъпак, не си в състояние да възприемеш дори много елементарен текст.
Реба Създадено на 19.01.2025, видяно: 197 пъти. #132171
а ти защо реши че не се вика никъде? гпт разбра проблема и предложи решение (даже две), а ти чел недочел реши лекции да изнасяш
Реба Създадено на 19.01.2025, видяно: 195 пъти. #132173
ами да, с нестандартен гцц атрибут attribute__((used)). даде и още едно решение което не пробвах - някаква опция на компилатора. обаче трябва да се провери дали това влияе само на компилатора, защото да не се окаже че обхваща и линкера - тогава греда, все пак линкера трябва да реже неизползваните функции
Тц. Работата на линкера е да вкарва цели обектни файлове с които да resolve unresolved symbols. Не му е работа да анализира ти какво си вкарал в този обектен файл и да изреже това което според него е излишно. Това е работа на компилатора. Има и още един тънък момент тука - link time optimisations - които въпреки името са всъщност част от процеса на компилация отложен до последния момент за да направи пълна оптимизация върху целия изпълним файл а не ограничена само върху един сорс файл.
Реба Създадено на 19.01.2025, видяно: 189 пъти. #132179
либгцц е по-голямо от паметта на контролера ми, ако беше както казваш никаква валидна бинка не можеш да сглобиш
Lol, are you still butthurt? Do you need a safe space? :) Thoughts and prayers! :)
Отговорът на въпроса ми, разбира се, е LTO, но ти си толкова посредствен, че дори не знаеш какво е това. Просто спри да си мислиш, че си най-умния, не си. Като цяло си малко под средното ниво.
Библиотеките са колекция/архив от обектни файлове. Линкера използва само тези, които са необходими. Не съм гледал, но не бих се учудил ако всяка функция в libgcc е в отделен сорс/обектен файл.
Реба Последно редактирано на 21.02.2025 от Дон
Реба, видяно: 60 пъти. #135902
той не знае кои са необходими, нито има значение дали са отделни обектни файлове. в процеса на линкване се тръгва от входната точка и се рови във всеки обектен файл подаден като аргумент без значение по какъв точно начин е подаден. този начин на работа натурално изключва всичко което не се ползва, вкл не само библиотеките, но и твоите собствени функции, не е някакво решение на линкера, това срещу което палавров роптае. . това което палавров казва "не му е работа да решава какво да включи" изобщо не е съвместимо с начина на работа на линкера. аз обаче роптая срещу същото нещо но в компилатора. защото там не е натурално поведение, а е функционалност писана нарочно и с мислене. и като всяко нещо писано с мислене, има грешки
Линкера работи с цели обектни файлове които може да са в една обща библиотека може и да са дадени като аргумент един по един. Първоначално започва с обектните файлове които са подадени като аргумент и задължително влизат в крайния файл. След това за всички липсващи външни препратки се рови в библиотеките да се види кой обектен файл би ги добавил и така добавя итеративно докато има нещо липсващо.
На линкера обикновено не му е работа да си избира от самия обектен файл какво да включи а го включва целия. За разлика от библиотеките където си избира които обектни файлове от тази библиотека да добави, но не всички.
Моя проблем идва от това, че използвам линкера по различен начин и искам линкера да ми вкара някои библиотеки изцяло без да ги анализира дали трябва нещо от тях или не. То всъщност това е решението де. Проблема е да се абонират калбаци без да се пише ръчен код - добави ми кал бак за тоя или оня евънт. Просто тоя код за добавяне се вика само веднъж и винаги прави едно и също нещо затова за силно ограничени платформи с по 32кб флаш за всичко е хубаво да каквото може да се направи още по време на компилация и линкване.
0 1 2 3 4 ...9 10 11 12 13 ...20 21 22 23 24 25 26