Местное законодательство, регуляторы - в космосе их нет.
А куда они денутся? Если в законах США есть белые пятна на эту тему, их закрыть несложно. Рычаги давления всё те же - ракеты летают из США, бизнес в США, сам человек в США. Но говорить как о будущей свободной гавани можно (говорить вообще можно).
У США некоторые трудности с расширений энергосети, потому что 25 лет потребности были на одном уровне (4000 ТВт-ч в год). И эту политическую проблему (кто заплатит за новые электростанции и кому они, в конечном счёте, нужны) можно представить как физическую, чтобы обрадовать инвесторов: «ЦОД будущего будут потреблять много энергии», где «много» незаметно превращается из «2% от мировой генерации + местные политические дрязги» в «все пустыни уже в солнечных панелях и конца не видно».
orbital data centers is a first step towards becoming a Kardashev II-level civilization, one that can harness the Sun’s full power
500 to 1000 TW/year of AI satellites into deep space, meaningfully ascend the Kardashev scale and harness a non-trivial percentage of the Sun’s power.
...где нужно знать точное время выполнения. Оптимизация в таки случаях вообще отключается, hal или ll в случае stm32 не используются. Если интересна данная тема - посмотрите документ do-178c, идентичные документы есть и для других отраслей, наиболее известны такие нюансы в автомобильной промышленности.
Я бы это замял вместе с volatile. У DO-178B/C тёплые отношения с кодогенератором MATLAB'а. У MISRA и AUTOSAR нет претензий к оптимизациям-компилятора-в-рамках-стандарта. Читаемость кода в принципе отражается на безопасности. Важно знать время выполнения худшего случая и решения компилятора здесь на эту... знаемость не влияют.
Вроде бы остаётся часть DO-178B/C с наибольшими требованиями (DAL A), где хотят прослеживаемость до машинного кода, но (не)знакомство с той внутренней кухней само всплывёт, ненастоящие сварщики не пройдут.
Французы из ANSSI справедливо замечали, что за избеганием оптимизаций компилятора может стоять неуверенность в безопасности кода (или несогласие со стандартом, но подразумевается, что такой роскоши нет... или что её надо выражать через обращение взора на Rust):
In particular, the use of compilation options such as -fno-strict-overflow, -fwrapv, -fwrapv-pointer, -fno-delete-null-pointer-checks or -fno-strict-aliasing is most of the time indicative of a risky usage of the C language. ...
By default, compilation options shall be as strict as possible with the aim of increasing the stringency of the compiler to the fullest. ...
RULE — Enable a reasonably high optimization level. For GCC and CLANG, the optimization level must be at least -O1, and ideally -O2 or -Os. ...
RECOMMENDATION — Use the strictest compilation options
(где-то был ещё вариант "тестировать по советам выше, но на проде подстраховаться")
Просто этот вопрос может помочь на собеседовании выявить более высокий опыт кандидата.
Пишет код с учётом "гарантированных" оптимизаций, говорит про читаемость, про одни аспекты стандартов - заваливаем его с вашими аргументами.
Пишет код с избыточными ручными оптимизациями, говорит о проверенных традициях, о других аспектах стандартов - заваливаем с моими аргументами.
В итоге можно узнать... лояльность. Станет он говорить, что указанная оптимизация не только у GCC не отключалась на -O0, но и у компилятора CompCert (https://godbolt.org/z/TaP6h1jdM) - значит, лезет в бутылку. Зачем ему это? Мог бы аккуратно разузнать, как у нас принято и показать, что он под всё подстроится.
Ответ: При использовании volatile не будет гарантирована детерминированость.
Не понимаю, что вы сказать хотите. volatile - барьер оптимизации, который запрещает компилятору убирать доступ к памяти и переупорядочивать их, по крайней мере, относительно других volatile-доступов. За кадром обеспечение атомарности (если нужна) и умное железо со своим переупорядочиванием и кэшами.
PS: возвращаясь к "компилятор для разработчика или разработчик для компилятора":
Не хорошо на МК выполнять операции взятия остатка от деления и деление на 2...
Компилятор это оптимизировал в 1974, за исключением остатка:
/*
* Try to change * and / to shifts.
*/
case TIMES:
case DIVIDE:
case ASTIMES:
case ASDIV:
tree = pow2(tree);
}
Код из Unix v6, но по сравнению с v4 только комментарий добавился.
То есть совет перестал работать лет 40 назад, если за 10 лет до mod добрались...
А вы посчитали, что машины смогут восставать из пепла ядерного огня?
Конечно не учёл, вы же не учитывали "Ну если серьёзно..." в соседнем комменте и смайлики в начале ветки и не захотели смотреть на расчёты как на крайние оценки снизу-сверху, призванные напомнить, что компьютеры в принципе жрут немного по сравнению с кондиционерами, металлургическими заводами, людьми и прочими не менее сравнимыми вещами.
Из забавного с volatile: раз его сделали квалификатором типа (а не как в Rust), рядом с ним можно написать register. Но эту конструкцию наделили смыслом только в расширении GCC про конкретные регистры (register T $varname asm("$regname") = 0;), там register кое-как учитывается: https://godbolt.org/z/1554zK8ro.
Из похожего есть load/store с подсказками, что "это в будущем не пригодится" (постараться не кэшировать / побыстрее вытеснить), гуглятся по "non-temporal (NTA) access".
Абсолютно точно. 16 часов нерабочего времени, 2 выходных и 600 грамм муки. На самом деле вы тоже это понимаете, потому что вопросов о техпроцессе производства человеков или почему они "потребляют", а датацентры "едят" не возникло.
Конечно, ведь кВт-ч пшеничной муки дороже электрического.
Ну если серьёзно, то в вопросе энергия была и можно делать выводы из того, что нейронки едят около процента мировой электроэнергии - это очень мало, в новостях про электростанции ерунду раздувают (ноль новых электростанций гораздо-гораздо дешевле одной). С капитальными затратами у кожаных тоже не очень.
Если GCC из 2006 года оптимизировал примеры на -O0 и требовал усилий для сохранения деоптимизации, то на сколько же тогда советы устарели? https://godbolt.org/z/cbssKjbfx
А куда они денутся? Если в законах США есть белые пятна на эту тему, их закрыть несложно. Рычаги давления всё те же - ракеты летают из США, бизнес в США, сам человек в США. Но говорить как о будущей свободной гавани можно (говорить вообще можно).
Ещё один конец земного шара найти дешевле, их у него много.
Видимо, так:
У США некоторые трудности с расширений энергосети, потому что 25 лет потребности были на одном уровне (4000 ТВт-ч в год). И эту политическую проблему (кто заплатит за новые электростанции и кому они, в конечном счёте, нужны) можно представить как физическую, чтобы обрадовать инвесторов: «ЦОД будущего будут потреблять много энергии», где «много» незаметно превращается из «2% от мировой генерации + местные политические дрязги» в «все пустыни уже в солнечных панелях и конца не видно».
Можно, например, назвать гифкой WebM, а потом ещё раз на самом деле перекодировать в гифку.
В новости подписаны - camelcamelcamel.com. Есть ещё такой агрегатор с текущими ценами, без графиков.
PS: что-то страшное с картинками происходит, тёмные времена наступают.
Оригинальные графики были в png
CDN tomshardware сжал их в lossy webp (хотя мог бы в lossless, это не фото)
Для хабра вместо оригинала взяли, похоже, скриншоты в меньшем масштабе
Сохранили их снова в lossy webp или jpeg 4:2:0
<здесь могла быть ваша нейросеть>
И залили на сайт в png
Апконверты в png (можно с потерей в качестве) - вроде норма у новостников.
Я бы это замял вместе с volatile. У DO-178B/C тёплые отношения с кодогенератором MATLAB'а. У MISRA и AUTOSAR нет претензий к оптимизациям-компилятора-в-рамках-стандарта. Читаемость кода в принципе отражается на безопасности. Важно знать время выполнения худшего случая и решения компилятора здесь на эту... знаемость не влияют.
Вроде бы остаётся часть DO-178B/C с наибольшими требованиями (DAL A), где хотят прослеживаемость до машинного кода, но (не)знакомство с той внутренней кухней само всплывёт, ненастоящие сварщики не пройдут.
Французы из ANSSI справедливо замечали, что за избеганием оптимизаций компилятора может стоять неуверенность в безопасности кода (или несогласие со стандартом, но подразумевается, что такой роскоши нет... или что её надо выражать через обращение взора на Rust):
In particular, the use of compilation options such as -fno-strict-overflow, -fwrapv, -fwrapv-pointer, -fno-delete-null-pointer-checks or -fno-strict-aliasing is most of the time indicative of a risky usage of the C language. ...
By default, compilation options shall be as strict as possible with the aim of increasing the stringency of the compiler to the fullest. ...
RULE — Enable a reasonably high optimization level. For GCC and CLANG, the optimization level must be at least -O1, and ideally -O2 or -Os. ...
RECOMMENDATION — Use the strictest compilation options
— ANSSI Guidelines (PDF)
(где-то был ещё вариант "тестировать по советам выше, но на проде подстраховаться")
Пишет код с учётом "гарантированных" оптимизаций, говорит про читаемость, про одни аспекты стандартов - заваливаем его с вашими аргументами.
Пишет код с избыточными ручными оптимизациями, говорит о проверенных традициях, о других аспектах стандартов - заваливаем с моими аргументами.
В итоге можно узнать... лояльность. Станет он говорить, что указанная оптимизация не только у GCC не отключалась на -O0, но и у компилятора CompCert (https://godbolt.org/z/TaP6h1jdM) - значит, лезет в бутылку. Зачем ему это? Мог бы аккуратно разузнать, как у нас принято и показать, что он под всё подстроится.
Это повод расширить сферу ответственности пилота или автомата?
К 1979 добрались (Unix v7 - github).
Не понимаю, что вы сказать хотите. volatile - барьер оптимизации, который запрещает компилятору убирать доступ к памяти и переупорядочивать их, по крайней мере, относительно других volatile-доступов. За кадром обеспечение атомарности (если нужна) и умное железо со своим переупорядочиванием и кэшами.
PS: возвращаясь к "компилятор для разработчика или разработчик для компилятора":
Компилятор это оптимизировал в 1974, за исключением остатка:
Код из Unix v6, но по сравнению с v4 только комментарий добавился.
То есть совет перестал работать лет 40 назад, если за 10 лет до mod добрались...
Где улучшения доведены до конца и будет (если нет инструкции в целевой архитектуре) либо алгоритм с SIMD-within-a-register, либо таблица:
https://github.com/gcc-mirror/gcc/blob/master/libgcc/libgcc2.c#L822
Закономерность ведёт к D и напоминает о пропуске C𝄪 (видимо, пропущен из-за плохой поддержки в юникоде).
А вы посчитали, что машины смогут восставать из пепла ядерного огня?Конечно не учёл, вы же не учитывали "Ну если серьёзно..." в соседнем комменте и смайлики в начале ветки и не захотели смотреть на расчёты как на крайние оценки снизу-сверху, призванные напомнить, что компьютеры в принципе жрут немного по сравнению с кондиционерами, металлургическими заводами, людьми и прочими не менее сравнимыми вещами.
Из забавного с
volatile: раз его сделали квалификатором типа (а не как в Rust), рядом с ним можно написатьregister. Но эту конструкцию наделили смыслом только в расширении GCC про конкретные регистры (register T $varname asm("$regname") = 0;), тамregisterкое-как учитывается: https://godbolt.org/z/1554zK8ro.Из похожего есть load/store с подсказками, что "это в будущем не пригодится" (постараться не кэшировать / побыстрее вытеснить), гуглятся по "non-temporal (NTA) access".
...но если шутку объяснять, она перестанет быть смешной.
Абсолютно точно. 16 часов нерабочего времени, 2 выходных и 600 грамм муки. На самом деле вы тоже это понимаете, потому что вопросов о техпроцессе производства человеков или почему они "потребляют", а датацентры "едят" не возникло.
Ещё *8 часов надо, можно проверить.
Конечно, ведь кВт-ч пшеничной муки дороже электрического.
Ну если серьёзно, то в вопросе энергия была и можно делать выводы из того, что нейронки едят около процента мировой электроэнергии - это очень мало, в новостях про электростанции ерунду раздувают (ноль новых электростанций гораздо-гораздо дешевле одной). С капитальными затратами у кожаных тоже не очень.
Если GCC из 2006 года оптимизировал примеры на -O0 и требовал усилий для сохранения деоптимизации, то на сколько же тогда советы устарели?
https://godbolt.org/z/cbssKjbfx
Когда можно будет перейти на C23 - то и в стандарте:
https://en.wikipedia.org/wiki/C23_(C_standard_revision)#:~:text=stdc_count_ones_
Очень плохо.