В конце апреля на конференции «Российские интернет-технологии» (РИТ++/2011) компания PROMT представила доклад о своей новой разработке в области машинного перевода.
Гибридная технология PROMT совмещает в себе метод машинного перевода, основанный на правилах (его сейчас используют разнообразные решения PROMT и онлайн-сервис компании Translate.Ru), и статистический метод.
Это позволяет сохранить основное преимущество традиционной технологии PROMT – создание связного и грамматически правильного перевода – и прибавить к нему сильные стороны статистического метода – быстрое добавление терминологии из двуязычного текста и обеспечение гладкости получаемого текста.
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
В первой лекции рассматриваются основные виды параллелизма и способы написания высокопроизводительных приложений.
В конце рассматривается поддержка параллелизма в Java.
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
The document discusses concurrency and synchronization in distributed computing. It provides an overview of Petr Kuznetsov's research at Telecom ParisTech, which includes algorithms and models for distributed systems. Some key points discussed are:
- Concurrency is important due to multi-core processors and distributed systems being everywhere. However, synchronization between concurrent processes introduces challenges.
- Common synchronization problems include mutual exclusion, readers-writers problems, and producer-consumer problems. Tools for synchronization include semaphores, transactional memory, and non-blocking algorithms.
- Characterizing distributed computing models and determining what problems can be solved in a given model is an important area of research, with implications for distributed system design.
Лекция 1. Основные понятия стандарта MPI. Дифференцированные обменыAlexey Paznikov
ЛЕКЦИЯ 1. Основные понятия стандарта MPI. Дифференцированные обмены
Курс "Параллельные вычислительные технологии" (ПВТ), осень 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
http://cpct.sibsutis.ru/~apaznikov/teaching
В первой лекции рассматриваются основные виды параллелизма и способы написания высокопроизводительных приложений.
В конце рассматривается поддержка параллелизма в Java.
ЛЕКЦИЯ 1. Актуальность параллельных вычислений. Анализ параллельных алгоритмов. Многоядерные вычислительные систем с общей памятью
Курс "Параллельные вычислительные технологии" (ПВТ), весна 2015
Сибирский государственный университет телекоммуникаций и информатики
Пазников Алексей Александрович
к.т.н., доцент кафедры вычислительных систем СибГУТИ
http://cpct.sibsutis.ru/~apaznikov
The document discusses concurrency and synchronization in distributed computing. It provides an overview of Petr Kuznetsov's research at Telecom ParisTech, which includes algorithms and models for distributed systems. Some key points discussed are:
- Concurrency is important due to multi-core processors and distributed systems being everywhere. However, synchronization between concurrent processes introduces challenges.
- Common synchronization problems include mutual exclusion, readers-writers problems, and producer-consumer problems. Tools for synchronization include semaphores, transactional memory, and non-blocking algorithms.
- Characterizing distributed computing models and determining what problems can be solved in a given model is an important area of research, with implications for distributed system design.
The document discusses weakly supervised learning from video and images using convolutional neural networks. It describes using scripts as weak supervision for learning actions from movies without explicit labeling. Methods are presented for jointly learning actors and actions from scripts, and for action learning with ordering constraints. The use of CNNs for object and action recognition in images is also summarized, including work on training CNNs using only image-level labels without bounding boxes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and emphasizes that undefined behavior does not guarantee a predictable result. It concludes with a quiz to find bugs in a code sample and links to additional reading materials.
AddressSanitizer, ThreadSanitizer, and MemorySanitizer are compiler-based tools that detect bugs like buffer overflows, data races, and uninitialized memory reads in C/C++ programs. AddressSanitizer instruments loads and stores to detect out-of-bounds memory accesses. ThreadSanitizer intercepts synchronization calls to detect data races between threads. MemorySanitizer tracks initialized and uninitialized memory using shadow memory to find uses of uninitialized values. The tools have found thousands of bugs with low overhead. Future work includes supporting more platforms and languages and detecting additional bug classes.
This document discusses common C++ bugs and tools to find them. It describes various types of memory access bugs like buffer overflows on the stack, heap, and globals that can lead to crashes or security vulnerabilities. Threading bugs like data races, deadlocks, and race conditions on object destruction are also covered. Other undefined behaviors like initialization order issues, lack of sequence points, and integer overflows are explained. The document provides examples of each type of bug and quizzes the reader to find bugs in a code sample. It recommends resources for further reading on debugging techniques and thread sanitizers that can detect races and data races.
This document provides examples and snippets of code for MapReduce, Pig, Hive, Spark, Shark, and Disco frameworks. It also includes two sections of references for related papers and Disco documentation. The examples demonstrate basic MapReduce jobs with drivers, mappers, and reducers in Java, Pig and Hive queries, Spark and Shark table operations, and a Disco MapReduce job.
4. SSE (Streaming SIMD Extensions)
Версия Возможности
1
Восемь 128-битных регистров для 4 чисел по 32 бит (с плавающей
точкой)
2
Теперь 2 64-битных числа в регистре
3
Уже 13 инструкций
4.1
47 инструкций (ускорение видео)
4.2
54 инструкции (операции со строками)
float a[4] = { 300.0, 4.0, 4.0, 12.0 };
float b[4] = { 1.5, 2.5, 3.5, 4.5 };
__asm {
movups xmm0, a ; // поместить из a в регистр xmm0
movups xmm1, b ; // поместить из b в регистр xmm1
mulps xmm0, xmm1 ; // перемножить пакеты плавающих точек
movups a, xmm0 ; // выгрузить результаты из регистра xmm0 по адресам a
};
4
5. Закон Амдала
●
a — доля последовательного кода
●
p — число процессоров
1
S=
(1−a )
a+
p
5
6. Процессы и потоки
Стэк
●
потока
main()
Стэк
Стэк
потока … потока
●
●
В начале выполнения процесс — 1 поток
Потоки могут создавать новые в пределах
одного процесса
Все потоки имеют общие сегменты кода и
данных
Каждый поток имеет свой стек выполнения
●
Сегмент кода
●
Единица планирования ОС - поток
Сегмент данных
6
9. Boost
Обёртка над потоками ОС (Posix или Win threads)
boost::thread_group th_group;
for(...i)
{
boost::thread* th = new boost::thread(boost::bind(&Класс::<функция>,
this, i));
th_group.add_thread(th);
}
th_group.join_all();
9
10. OpenMP
●
Стандарт интерфейса для многопоточного
программирования над общей памятью
●
Набор средств для языков C/C++ и Fortran:
– Директивы компилятора (#pragma omp ...)
– Библиотечные подпрограммы (get_num_threads())
– Переменные окружения (OMP_NUM_THREADS)
10