THG
  • Аудио и видео
  • Бизнес и рынок
  • Видеокарты
  • Домашний компьютер
  • Игры и индустрия
  • Конкурсы
  • Накопители
  • Образование
  • Периферия
  • Платформы
  • Проекторы и мониторы
  • Процессоры
  • Сети и WiFi
  • Смартфоны и ноутбуки
  • Собери сам
  • Софт и утилиты
  • Фото
  • Обзоры
    • Смартфоны и ноутбуки
    • Аудио и видео
    • Проекторы и мониторы
    • Процессоры
    • Бизнес и рынок
    • Видеокарты
    • Домашний компьютер
    • Игры и индустрия
    • Конкурсы
    • Накопители
    • Периферия
    • Платформы
    • Техника для дома и сада
    • Сети и WiFi
    • Собери сам
    • Софт и утилиты
    • Фото
  • Статьи
  • Подборки
  • Новости
  • Форум
  • Контакты
  • Главная
THG
THG
  • Обзоры
    • Смартфоны и ноутбуки
    • Аудио и видео
    • Проекторы и мониторы
    • Процессоры
    • Бизнес и рынок
    • Видеокарты
    • Домашний компьютер
    • Игры и индустрия
    • Конкурсы
    • Накопители
    • Периферия
    • Платформы
    • Техника для дома и сада
    • Сети и WiFi
    • Собери сам
    • Софт и утилиты
    • Фото
  • Статьи
  • Подборки
  • Новости
  • Форум
  • Контакты
  • Главная
  • Бизнес и рынок

Intel Developers Forum в Москве: глазами разработчика — THG.RU

  • 02.11.2003
34cfe90009ebe604db1a1d344ff7e4bb
34cfe90009ebe604db1a1d344ff7e4bb







Другие репортажи с московского IDF’2003:

Intel Developers Forum в Москве: первый день

Intel Developers Forum в Москве: второй день

Intel Developers Forum в Москве: советы по оптимизации ПК

Секция «Программное обеспечение» на Форуме Intel для разработчиков

Наш следующий репортаж посвящён обзору докладов, прозвучавших на потоке «Программное обеспечение» на Форуме Intel для разработчиков. В статье отражены новые возможности программных продуктов для разработчиков ПО.

Поток состоял из 8 семинаров, по четыре каждый день:

  1. Услуги Intel для производителей программного обеспечения;
  2. Анализатор производительности VTune 7.0;
  3. Применение технологии Hyper-Threading;
  4. Реальные примеры параллелизации приложений;
  5. Intel Integrated Performance Primitives — инструмент для разработки не только мультимедиа-приложений;
  6. Программирование приложений для работы в условиях периодических потерь контакта с локальной сетью: что нужно знать разработчику;
  7. Как добиться высокой производительности и качества ПО?
  8. Компания Microsoft: будущее платформы Microsoft для разработчиков.

С докладами выступили как российские, так и зарубежные представители компании Intel. Доклады были посвящены новым разработкам компании Intel.

Услуги Intel для производителей программного обеспечения

Первым выступил Дмитрий Ильин с докладом о группе поддержки независимых разработчиков программного обеспечения. В докладе была представлена программа Intel Developer Services.

Что же такое Intel Developer Services? Это и семинары для разработчиков, и онлайновые тренинги, и программные продукты Intel для разработчиков программного обеспечения (включая компиляторы, библиотеки, средства оптимизации, средства анализа производительности), информационная поддержка, использование ресурсов лаборатории Intel Solutions Services, это доступ к базам данных (содержат ответы на наиболее распространённые вопросы), форумы для разработчиков, возможность оценки общей стоимости владения, а также оценки от вложения капитала в программный продукт, и, кроме того, специальные скидки на оборудование на базе платформы Intel и маркетинговая поддержка со стороны Intel.

Одной из замечательных возможностей, предоставляемых компанией Intel, является программа Early Access Problem (EAP). EAP предоставляет ресурсы для повышения производительности приложений и подготовки приложений для использования на новейших платформах Intel с применением передовых технологий Intel. Адрес подписки здесь.

Кроме этого, корпорация Intel обеспечивает разработчиков программными продуктами на всех этапах разработки программного обеспечения.

Во-первых, это компиляторы Intel (С++, Fortran), обеспечивающие доступ к новейшим возможностям процессоров Intel без изменения программного кода и оптимизацию приложений на платформе Intel.

Во-вторых, анализатор производительности — Intel VTune Performance Analyzer, оптимизирующий приложение за счёт экономии времени и ресурсов разработчика с помощью определения и анализа проблемных мест приложения, а также нахождения и исправления ошибок. Версия Intel VTune Enterprize Analyzer обеспечивает анализ и диагностику производительности распределённых web-приложений.

Для диагностики ошибок в многопоточных приложениях разработчикам предлагается пакет Intel Threading Tools. Он состоит из двух частей. Thread Checker обеспечивает определение ошибок не синхронизированного доступа к данным двумя и более потоками, а Thread Profiler — получение картины дисбаланса потоков для OpenMP-распределённых приложений.

И, наконец, библиотеки Intel Performance Libraries обеспечивают определение типа процессора во время загрузки приложения и загрузку наилучшего кода для данного типа процессора, а также сокращают необходимость написания процессор-ориентированного кода.

Представленные программные продукты доступны для операционных систем Windows и Linux на всех платформах Intel

Анализатор производительности VTune 7.0

Обо всех этих продуктах и шла, в разной степени, речь в докладах этого потока. Евгений Харченко очень подробно осветил возможности анализатора VTune, причём все эти возможности были продемонстрированы на реальных приложениях.

Процесс оптимизации приложения представлен на следующей иллюстрации.

Анализатор производительности VTune 7.0

Для оптимизации приложения Intel предлагает использовать и Intel VTune Performance Analyzer for Linux 2.0.

Intel VTune Performance Analyzer собирает, систематизирует и отображает данные о производительности ПО, начиная с общесистемного уровня и до уровня конкретного модуля, функции, строки программного кода.

Intel VTune Performance Analyzer 7.0 поддерживает платформы семейств Intel, Itanium, XScale; операционные системы Windows и Linux; Java и .Net; локальный и удалённый сбор данных; интерфейс командной строки; до 64 процессов. Кроме того, интегрируется в Visual Studio 7, обеспечивает различные функциональные возможности.

Первая функциональная возможность — это Sampling. Во время работы исследуемого приложения VTune собирает информацию о временных затратах и событиях процессора, ассоциированных с модулем, функцией и строкой кода.

Используется для тестирования 32- и 64-битных приложений Windows, 32- и 64-битных динамических библиотек, библиотек COM+, Java-приложений, приложений .NET и ASP.NET.

При использовании Sampling не надо специально модифицировать код, достаточно скомпилироваться/слинковаться с отладочной информацией, используя релизную конфигурацию с включённой оптимизацией. При этом технология Sampling распространяется на всю систему, что приводит к отображению результатов не только на тестируемое приложение, но и на все работающие в ОС модули.

VTune предоставляет возможность построения графа вызовов функций. Call-graph собирает данные о иерархии и количестве вызовов, временных затратах по каждой функции (собственное время — время используемое функцией, общее время — собственное время с вызываемыми из нее функциями; общее время ожидания, время ожидания), и отображает данные в виде графа и таблиц.

Анализатор производительности VTune 7.0

Call-graph-технологии позволяют анализировать алгоритмические проблемы, предоставляя данные о иерархии вызовов и критическом пути исполнения (обратите внимание, на рисунке широкое ребро графа указывает критический путь исполнения).

Инструментарий производится автоматически, без вмешательства пользователя, достаточно только скомпилироваться/слинковаться с отладочной информацией.

Отличие от технологии Sampling заключается в том, что в данном случае профилируется только тестируемый модуль.

Технологию call-graph можно применять также для тестирования 32- и 64-битных приложений Windows, 32- и 64-битных динамических библиотек, библиотек COM+, Java-приложений, приложений .NET и ASP.NET.

Таким образом, Sampling и Call-graph дополняют друг друга, предоставляя в совокупности целостную картину

Кроме этих двух технологий, VTune отслеживает производительность системы путём сбора данных о производительности аппаратных и программных средств, отображает их в режиме реального времени и интегрально по окончании сессии, сопоставляет эти данные с данными Sampling. Эта функциональность возложена на Counter monitor.

С помощью системных счётчиков можно определить, насколько эффективно работает система: как используются аппаратные средства (в частности, процессор), память, достаточна ли пропускная способность, или какие системные ресурсы наиболее критичны.

Следующая часть VTune — это Intel Tuning Assistant, база знаний, способная идентифицировать проблему и предоставить советы по оптимизации приложения на основе собранных данных о производительности. Для получения справочной информации достаточно щёлкнуть мышкой по существующей спрогнозированной проблеме.

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

Второй анализатор — это Intel for Linux 2.0. Его функциональные возможности несколько ограничены и включают Sampling-технологию (причём она ограничена только сбором информации о событиях процессора), Call-graph, Source code, обработку данных, обеспечивающую возможность переноса проекта с одной машины на другую, дополняет данную версию дополнение Man-страницы и HTML-руководство.

Одновременно с VTune Performance Analyzer 7.1 и VTune Performance Analyzer for Linux поставляется VTune Performance Analyzer Driver Kit. Эта программа позволяет собрать драйвер для VTune для специфического ядра системы. Содержит GPL код драйвера, инсталляционные скрипты, документацию и бинарники для поддерживаемых ядер. Доступна по следующему адресу.

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

Правильный выбор алгоритма является безусловным приоритетом при работе над производительностью, причём алгоритмы имеют определённые требования к структурированию памяти и могут иметь проблемы с зависимостью по данным.

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

Использование системных и библиотечных функций увеличивает производительность приложения.

Зависимость по данным приводит к непредсказуемым ошибкам.

Использование потоков улучшает производительность, а знание специфики процессора позволяет минимизировать количество непредсказуемых условных переходов.

Обратите внимание на использование кэша — используйте меньше памяти для сокращения загрузки кэша; выровняйте данные и храните их в памяти в соответствии с порядком доступа; используйте память блоками, меньшими размера кэша.

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

Следующие несколько слайдов иллюстрируют советы Евгения Харченко.

Анализатор производительности VTune 7.0

Анализатор производительности VTune 7.0

Разделение переменных и возможность параллелизации увеличивают скорость вычисления значений переменных

Анализатор производительности VTune 7.0

Выделить память один раз гораздо быстрее, чем по частям

Анализатор производительности VTune 7.0

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

Применение технологии Hyper-Threading и реальные примеры параллелизации приложений

Следующие два доклада потока «Программное обеспечение» были посвящены использованию технологии Hyper-Threading при разработке программного обеспечения.

Оба доклада начинались с объяснения технологии Hyper-Threading и возможностей параллелизма при создании эффективного программного обеспечения. Далее первый доклад (Фритц Гернет) был посвящён стандарту OpenMP и инструментальным средствам Intel Threading Tools, а во втором докладе (Алекс Климовицкий) были раскрыты проблемы синхронизации данных и пути их решения.

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

О чём же шла речь в докладах?

Преимущества технологии HT иллюстрируются следующим слайдом:

Применение технологии Hyper-Threading и реальные примеры параллелизации приложений

Преимущества технологии HT, прозрачной для ОС и приложений, проявляются при многозадачности и многопотоковости.

При разработке многопоточных приложений используются две модели разработки: использование параллелизма на уровне задач и использование параллелизма на уровне данных.

Во-первых, это использование параллелизма на уровне задач. Эта модель сводится к разделению рабочих задач на независимые задачи, с тем, чтобы они могли выполняться одновременно. Для разработки трёхмерных игр и трёхмерных моделей может быть использовано ПО Virtools Dev 2.1, которое применяет метод разбиения по функциям:

Рабочие потоки обрабатывают частичные системы, при этом визуализация ожидает события окончания.

Использование параллелизма на уровне задач обеспечивает ограниченный прирост (до 13% на однопроцессорной машине с технологией HT) производительности по причине неравномерного распределения нагрузки.

И вторая модель — это использование параллелизма на уровне данных. В этом случае параллелизм сводится к разделению данных на непересекающиеся наборы, с тем, чтобы потоки могли обрабатывать эти наборы данных раздельно (одновременно).

Применение технологии Hyper-Threading и реальные примеры параллелизации приложений

Для реализации этой модели многопотоковости в трёхмерном игровом приложении предлагается использовать ПО Karma компании MathEngine.

Применение технологии Hyper-Threading и реальные примеры параллелизации приложений

Вычислительное устройство рассчитывает действующие силы (контактные силы, силы трения и силы взаимодействия).

Интегрирующее устройство вычисляет новые координаты объектов, исходя из равнодействующей всех сил.

Для разбиения по областям используются два подхода.

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

Статическое распределение. Также два рабочих потока, но число сегментов делится пополам, и каждый поток получает на обработку половину сегментов. Данный способ обеспечивает повышение производительности, так как снижается количество излишних операций синхронизации.

Как показали тесты, использование параллелизма на уровне данных обеспечивает увеличение производительности до 30% на однопроцессорной машине с технологией HT.

Для реализации многопотоковости предлагается использовать следующие средства: интерфейсы прикладного программного программирования/библиотеки (Win 32 threading API, P-threads, MPI), средства языков программирования (Java, C#) и расширение языков программирования, в частности OpenMP.

OpenMP — это расширение компилятора для упрощения процесса реализации многопотоковости без внесения изменения в код C/C++. OpenMP включает три компонента: директивы компилятора (#pragma), интерфейс прикладного программирования и Run-time-библиотеки.

Использует модель параллелилизма Fork-Join (разветвление-соединение), в которой основной поток порождает группу дополнительных потоков, объединяющихся в конце области параллельного исполнения.

Применение технологии Hyper-Threading и реальные примеры параллелизации приложений

Список директив OpenMP:

omp parallel — главная директива, она порождает группу потоков

omp sections и omp for, директивы распределения работы

private, shared, reduction определяют область действия переменных

schedule определяет способ распределения работы

omp critical и omp barrier являются директивами синхронизации.

Пример 1.

void func()

{

int a, b, c, d;

#pragma omp parallel sections

{

#pragma omp section

a=a+b

#pragma omp section

c=c+d

}

}

Директива parallel порождает группу из N потоков, всё, что находится внутри, выполняется N раз, при этом вся память является общей.

Директива sections определяет задачи без итерации, соответственно, оператор a=a+b будет выполняться в первом потоке, а оператор c=c+d — во втором. Таким образом, директива sections реализует параллелизм на уровне задач.

Пример 2.

void func()

{

int a[N], sum=0;

#pragma omp parallel for

for (int i=0; i<n;
{

sum+=a[i]
}

}

Директива for реализует параллелизм на уровне данных, распределяя итерации цикла по потокам.

Перейдём к проблемам синхронизации.

Синхронизация неизбежна при распределении данных или ресурсов между потоками.

— #pragma omp single (выполнение следующего оператора одним потоком)

— #pragma omp barrier (в данной точке потоки дожидаются всех остальных)

— #pragma omp atomic (выполняет следующую операцию доступа к памяти неделимо)

— #pragma omp critical (разрешает только одному потоку в один момент выполнять следующую операцию)

Для синхронизации всех обращений к одному общему сумматору можно воспользоваться редукцией:

void func()

{

int a[N], sum=0;

#pragma omp parallel for reduction(+: sum)

for (int i=0; i<n;
{

sum+=a[i]
}

}

В этом случае переменная sum будет локальной в каждом потоке, но по завершении всех потоков выполнится операция редукции (в данном случае сложение) по переменной sum.

Итак, OpenMP предоставляет широкие возможности по разработке многопотоковых приложений. Это и усовершенствованное определение области действия переменной, и инициализация, и усовершенствованные директивы синхронизации, возможность использования интерфейса прикладного программирования OpenMP и переменных окружения (контроль числа потоков, низкоуровневая ручная синхронизация:), а также распределение работы с использованием модели очередей задач (использование нестандартизированных директив Intel). OpenMP обеспечивает совместимость со стандартами Win32 и P-threads.

В заключение были приведены некоторые методы использования потоков.

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

Устранение ошибок наложения адресов кэш-памяти (по умолчанию размер стека потока равен 1Мб, поэтому обращение к стекам может привести к наложению адресов, что может значительно снизить масштабируемость с применением технологии HT).

Для повышения производительности необходимо отключить функции printf.

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

Использование одного вычислительного потока на один логический процессор сокращает нагрузку на ОС по распределению потоков и синхронизации.

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

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

Intel Integrated Performance Primitives — инструмент для разработки не только мультимедиа-приложений

Второй день потока «Программное обеспечение» начала Ася Нежданова с доклада о инструменте Intel Integrated Performance Primitives.

В докладе очень последовательно и не спеша изложено о месте Intel Integrated Performance Primitives (IPP) в линейке программных продуктов Intel, выделены преимущества и необходимость использования IPP. Особое внимание было уделено новым функциям IPP, связанным с криптографией и обработкой строк.

IPP — это библиотека низкоуровневых блоков (примитивов), необходимых для многих областей, единый кроссплатформенный API, оптимизация для всей линейки процессоров Intel, экономичное и быстрое решение для написания высокопроизводительных приложений. Библиотека поддерживает 32-битные Linux и Windows на Intel IA-32 (Pentium II, Pentium III, Pentium 4, Intel Xeon), 64-битные Linux и Windows на Intel Itanium, Linux и WinCE на Intel Personal Internet Client Architecture.

Преимущества, которые даёт IPP, — сокращение времени выпуска и уменьшение стоимости разработки программных продуктов; использование всех возможностей новейших процессоров Intel; а также высокая степень переносимости приложений.

IPP 4.0. является единым кроссплатформенным продуктом, в который добавлены функции криптографии и обработки строк, а также новые функции для обработки аудио, видео, обработки сигналов, изображений, для кодирования и распознавания речи, обработки JPEG. Все функции оптимизированы для новых процессоров Intel. IPP обеспечивает богатый набор примеров использования функций IPP (добавлено 52 примера) и обладает расширенным набором поддерживаемых интерфейсов C#, Delphi, Visual Basic.

Intel Integrated Performance Primitives - инструмент для разработки не только мультимедиа-приложений

Таким образом, в IPP содержатся около 2,7 тысячи функций, работающих с различными типами и в различных режимах, что в результате дает около 10 тысяч различных функций.

В библиотеку IPP Cripto входит широкий спектр криптографических функций (симметричные шифры, хэш-функции, криптография с открытым ключом), оптимизированных для Intel IA-32, Itanium, XScale:

Intel Integrated Performance Primitives - инструмент для разработки не только мультимедиа-приложений

Одно из достоинств IPP Cripto — соответствие международным стандартам в области криптографии.

Следует подчеркнуть, что использование функции IPP для процессоров Intel значительно увеличивает производительность. В частности, по данным докладчика, использование функции IPP в протоколе OpenSSL для Intel IA32 увеличивает производительность на 50%.

Перейдём к обработке строк. Создание функций по обработке строк связано, во-первых, с широкой областью их применения (текстовые процессоры, компиляторы и т.д.), кроме того, на процессорах Intel возможно обеспечить более высокую производительность по их обработке.

Строка представляется как указатель на строку с указанием длины строки.

Что позволяют выполнять функции IPP по обработке строк? Сравнение, поиск вхождений строки, удаление ненужных символов по краям, соединение и разбиение строк, замена, удаление фрагментов, преобразование символов к нижнему и верхнему регистру.

Все функции оптимизированы для Intel Pentium 4 и идеально подходят для реализации .NET C# класса String.

IPP String Processing даёт при использовании такие преимущества, как производительность, локализация в функциях изменения Case, кроме того, в следующей версии будут предложены функции регулярных выражений.

Доклад, как и предполагалось, был предназначен для ознакомления разработчиков с новыми возможностями IPP, что докладчику удалость выполнить в полном объеме.

Как добиться высокой производительности и качества ПО?

Следующий доклад Евгения Харченко назывался «Как добиться высокой производительности и качества ПО?». Несмотря на то, что в аннотации доклада была сделана заявка на обзор возможностей компилятора С/С++ Intel, на самом деле план состоял из следующих пунктов:

  1. компиляторы Intel
  2. анализаторы производительности
    • Intel VTune Performance Analyzer
    • Intel Threading Tools

и, соответственно, большая часть доклада была посвящена обзору возможностей анализаторов производительности, то есть являлась повторением доклада, прозвучавшего днём раньше.

Итак, относительно компиляторов: они полностью совместимы по коду с двоичными файлами Microsoft и, в основном, по исходному коду — с GNU Compiler Collection. Используют последние возможности процессоров Intel.

Были выделены некоторые факторы повышения производительности ПО.

SIMD-методика Netbur Single Instruction (упакованные данные до 128 бит в длину обеспечивают параллельную обработку данных, позволяют использовать функции С, а векторизация определяет, какие операции могут быть выполнены параллельно).

Использование программной конвейеризации и предварительной выборки данных.

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

Использование высокооптимизированных библиотек стандарта C, а также диспетчеризации ЦП, которая позволяет выбирать программный код в период выполнения, в зависимости от фактического типа процессора.

Эффективность разработки многопотоковых приложений обеспечивается использованием OpenMp и автопараллелизатором компилятора Intel (-Qparallel).

А дальше, как уже говорилось, речь шла об анализаторах производительности. Доклад был очень ёмким по содержанию, обо всём говорилось очень быстро и кратко.

Компания Microsoft: будущее платформы Microsoft для разработчиков

Последний доклад потока «Программное обеспечение» был посвящен обзору направлений развития платформы Microsoft для разработчиков. Докладчик — представитель компании Microsoft в Москве Алексей Фёдоров — размеренно, подробно доводил до сведения слушателей информацию о таких готовящихся к выпуску продуктах, как Microsoft Windows «Longhorn,» SQL Server «Yukon,» Visual Studio «Whidbey» и других.

Ко второму дню IDF уже все устали, чувствовалась «ленца» как у докладчиков, так и у участников Форума.

Заключение

В завершение статьи хотелось бы высказать некоторые пожелания организаторам Форума. Во-первых, в замечательном большом зале Российской академии наук, несмотря на хорошую акустику, вопросы, задаваемые участниками, было плохо слышно как докладчику, так и слушателям — неплохо было бы на время вопросов дать микрофон. Далее, изображения (скриншоты) плохо воспринимались, самые важные элементы были практически не видны — возможно, целесообразнее было бы использовать больший экран.

В целом же, с информативной точки зрения, Форум был очень полезен.







Вам также может понравиться
30738435c6b9e22a5745f5bcc0626c6a
Читать
  • Бизнес и рынок

Обзор платежного стикера Tinkoff Pay: Apple Pay уже не нужен? — THG.RU

  • 22.02.2023
Читать
  • Бизнес и рынок

Главные новости за неделю — THG.RU

  • 27.02.2022
6613398c41f1db9ee850536aa43afc25
Читать
  • Бизнес и рынок

Почему курс криптовалют подвержен изменениям? — THG.RU

  • 18.01.2022
Читать
  • Бизнес и рынок

Страница не найдена — THG.RU

  • 07.01.2022
6165e7668c59d2daddd63d7c644ebdb0
Читать
  • Бизнес и рынок

Большая распродажа ко Дню холостяка: скидки на Xiaomi 11T, POCO X3 Pro и Redmi Buds 3 Pro — THG.RU

  • 12.11.2021
528520b6faf134863315c4503cf02884
Читать
  • Бизнес и рынок

Способы покупки криптовалюты в РФ в 2021 году — THG.RU

  • 29.10.2021
a13d4276934098af8e5576e3b9998325
Читать
  • Бизнес и рынок

Лучшее на CES 2021: выбор THG — THG.RU

  • 14.01.2021
294663d487a19e68830f877e31557624
Читать
  • Бизнес и рынок

С новым годом! — THG.RU

  • 31.12.2020

Добавить комментарий Отменить ответ

Ваш адрес email не будет опубликован. Обязательные поля помечены *


Подписывайтесь на наши страницы в социальных сетях
Telegram

Свежие статьи

  • Почему конец партии в дураке решает расчет, а не везение
  • Обзор ноутбука ASUS ROG Zephyrus Duo 2026 (GX651)
  • Тонометр на запястье и титан с керамикой: в России стартовали продажи HUAWEI WATCH D3 и HUAWEI WATCH 6
  • М.Видео начинает предзаказ на HUAWEI MatePad Air: ультратонкий планшет с OLED-экраном PaperMatte
  • Обзор игрового кресла Zone 51 Chevron: крепкий середняк с претензией на звание боевого товарища
Популярные записи
  • Напряжённая карточная партия при свечах 1
    Почему конец партии в дураке решает расчет, а не везение
    • 12.11.2026
  • Без имени 2
    Обзор ноутбука ASUS ROG Zephyrus Duo 2026 (GX651)
    • 14.10.2026
  • WATCH 6 продакт фото2 3
    Тонометр на запястье и титан с керамикой: в России стартовали продажи HUAWEI WATCH D3 и HUAWEI WATCH 6
    • 14.10.2026
  • Wooki 晴光蓝AiryBlue 4
    М.Видео начинает предзаказ на HUAWEI MatePad Air: ультратонкий планшет с OLED-экраном PaperMatte
    • 29.09.2026
  • Photo 2026 09 28 15 47 5
    Обзор игрового кресла Zone 51 Chevron: крепкий середняк с претензией на звание боевого товарища
    • 28.09.2026
Последние записи
  • Contract signing meeting stockcake
    Чем созаёмщик отличается от поручителя
    • 28.09.2026
  • 10USB30
    10 лучших флешек USB 3.0: сравнительный обзор на любой бюджет
    • 05.07.2026
  • 17
    HONOR MagicPad 4: ультратонкий планшет с процессором уровня ПК стартовал в России
    • 04.07.2026
Категории
  • 4G
  • Аудио и видео
  • Без рубрики
  • Бизнес и рынок
  • Видеокарты
  • Домашний компьютер
  • Игры и индустрия
  • Конкурсы
  • Накопители
  • Новости
  • Обзоры
  • Образование
  • Периферия
  • Платформы
  • Подборки
  • Проекторы и мониторы
  • Процессоры
  • Сети и WiFi
  • Смартфоны и ноутбуки
  • Собери сам
  • Софт и утилиты
  • Статьи
  • Техника для дома и сада
  • Фото
Архив
THG
  • Обзоры
  • Статьи
  • Подборки
  • Новости
  • Форум
  • Контакты
  • Главная
IT-новости, обзоры смартфонов, гаджетов и компьютерного железа

Powered by
Necessary cookies enable essential site features like secure log-ins and consent preference adjustments. They do not store personal data.
None
Functional cookies support features like content sharing on social media, collecting feedback, and enabling third-party tools.
None
Analytical cookies track visitor interactions, providing insights on metrics like visitor count, bounce rate, and traffic sources.
None
Advertisement cookies deliver personalized ads based on your previous visits and analyze the effectiveness of ad campaigns.
None
Unclassified cookies are cookies that we are in the process of classifying, together with the providers of individual cookies.
None
Powered by