Железо → Придётся ли Intel убрать из компилятора функцию, намеренно выдающую плохой код для процессоров AMD?
Многие программисты считают компилятор Intel лучшим оптимизирующим компилятором из имеющихся на рынке, и предпочитают использовать именно его для наиболее требовательных к производительности программ. Кроме того, Intel поставляет много сильно оптимизированных библиотек для различных технических и научных целей. Во многих случаях достойных альтернатив библиотекам Intel не существует.
К сожалению, программы, скомпилированные с помощью компилятора или библиотек Intel, работают значительно хуже на процессорах AMD и VIA.
К сожалению, программы, скомпилированные с помощью компилятора или библиотек Intel, работают значительно хуже на процессорах AMD и VIA.
Блог им. eox425 → Проблемы разработки реально быстрого ПО в наше время
Дрова пилятся, пилы совершенствуются, доски всё длинные и длинные,
а вот скорость наших программ не сопоставляется с размером этих досок…
Как-то задумал я раз в свои 18 писать компилятор большой-широкий, идей для него выписал целый блокнот.
Так и умер он за вечной оптимизацией собственного кода… =)
Я решил представить общественности несколько своих идей
и если что-то их заинтересовало прошу связаться со мной для определения подальшей деятельности.
Проще говоря — я искаю друзей, для разработки само-оптимизирующегося компилятора основаного на датамайнинге и генетических алгоритмах + много весёлых вкусностей стандартной библиотеки.
Вот так вот начинается моё небольшое предисловие первого поста на хабре.
Данная отписка не требует полного раскрытия темы, а просто объясняет мои позиции
по-поводу существующих систем компиляции и обработки кода которые я использую в своих разработках.
Ну начнём…
а вот скорость наших программ не сопоставляется с размером этих досок…
Как-то задумал я раз в свои 18 писать компилятор большой-широкий, идей для него выписал целый блокнот.
Так и умер он за вечной оптимизацией собственного кода… =)
Я решил представить общественности несколько своих идей
и если что-то их заинтересовало прошу связаться со мной для определения подальшей деятельности.
Проще говоря — я искаю друзей, для разработки само-оптимизирующегося компилятора основаного на датамайнинге и генетических алгоритмах + много весёлых вкусностей стандартной библиотеки.
Вот так вот начинается моё небольшое предисловие первого поста на хабре.
Данная отписка не требует полного раскрытия темы, а просто объясняет мои позиции
по-поводу существующих систем компиляции и обработки кода которые я использую в своих разработках.
Ну начнём…
Алгоритмы → Алгоритмы на графах — Часть 2: Сортировка сетей
Пролог
В продолжение опубликованной на выходных статьи.Компиляторы — пожалуй одна из самых интересных тем системного программирования.
Эта статья не расскажет как написать идеальный, или, хотя бы, работающий компилятор, но она поможет прояснить пару аспектов его работы, при помощи метода топологической сортировки сети.
Блог им. Grass → Функциональное программирование :: реккурсивные функции
Итак, решил я писать компилятор/интерпретатор функционального языка. По началу сделал в виде вычисляющего дерева Черча, где каждая команда-нейрон представляла из себя отдельный объект, к которому прицеплены параметры. При вызове функции get() выполнялось обращение к необходимым входным данным. Я даже соорудил некое подобие strchr, и оно даже работало.
Языки программирования → Обзор LLVM
LLVM (Low Level Virtual Machine) — это универсальная система анализа,
трансформации и оптимизации программ или, как её называют разработчики,
«compiler infrastucture».
LLVM — не просто очередной академический проект. Его история началась в 2000
году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии
как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X
10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из
основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает
в Apple.
В основе LLVM лежит промежуточное представление кода (intermediate
representation, IR), над которым можно производить трансформации во время
компиляции, компоновки (linking) и выполнения. Из этого представления
генерируется оптимизированный машинный код для целого ряда платформ, как
статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода
для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.
LLVM написана на C++ и портирована на большинство *nix-систем и Windows.
Система имеет модульную структуру и может расширяться дополнительными
алгоритмами трансформации (compiler passes) и кодогенераторами для новых
аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и
использует C++ API для генерации кода и его преобразований. Однако LLVM включает
в себя и standalone утилиты.
Для тех, кто не без оснований считает C++ не лучшим языком для написания
компиляторов, с недавних пор в LLVM включена обертка API для OCaml.
Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся
работать, давайте разберёмся,
трансформации и оптимизации программ или, как её называют разработчики,
«compiler infrastucture».
LLVM — не просто очередной академический проект. Его история началась в 2000
году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии
как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X
10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из
основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает
в Apple.
В основе LLVM лежит промежуточное представление кода (intermediate
representation, IR), над которым можно производить трансформации во время
компиляции, компоновки (linking) и выполнения. Из этого представления
генерируется оптимизированный машинный код для целого ряда платформ, как
статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода
для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.
LLVM написана на C++ и портирована на большинство *nix-систем и Windows.
Система имеет модульную структуру и может расширяться дополнительными
алгоритмами трансформации (compiler passes) и кодогенераторами для новых
аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и
использует C++ API для генерации кода и его преобразований. Однако LLVM включает
в себя и standalone утилиты.
Для тех, кто не без оснований считает C++ не лучшим языком для написания
компиляторов, с недавних пор в LLVM включена обертка API для OCaml.
Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся
работать, давайте разберёмся,
Блог им. DustCn → Оптимизируем код, или перегоним Огнелиса в скорости
Почитал топик об новых супероптимизациях в Огнелисе и долго думал.
Для меня не очень понятно, почему вокруг такого рода работы устроен праздник с феерверком и снегурочкой. Давайте подробнее рассмотрим что же было сделано.
Для меня не очень понятно, почему вокруг такого рода работы устроен праздник с феерверком и снегурочкой. Давайте подробнее рассмотрим что же было сделано.