courses:high_performance_computing:questions
Differences
This shows you the differences between two versions of the page.
Next revision | Previous revisionLast revisionBoth sides next revision | ||
courses:high_performance_computing:questions [2016/10/31 01:21] – created kel | courses:high_performance_computing:questions [2016/11/20 00:55] – kel | ||
---|---|---|---|
Line 1: | Line 1: | ||
====== Вопросы к проверке знаний ====== | ====== Вопросы к проверке знаний ====== | ||
+ | ===== 1. Уровни абстракции технологий ===== | ||
+ | Расположите в порядке увеличения степени абстракции технологии высокопроизводительных вычислений: | ||
+ | - OS Threads, SSE/MMX, C++11 Threads/ | ||
+ | - SSE/MMX, OS Threads, TBB/ | ||
+ | - SSE/MMX, OS Threads, C++11 Threads/ | ||
+ | - OS Threads, TBB/ | ||
+ | |||
+ | ===== 2. Закон Амдала ===== | ||
+ | Что показывает закон Амдала: | ||
+ | - Прирост производительности в зависимости от доли последовательного кода и числа вычислительных элементов | ||
+ | - Прирост производительности в зависимости от числа вычислительных элементов и используемой технологии распараллеливания | ||
+ | - Число вычислительных элементов, | ||
+ | - Долю последовательного кода, производительность которого невозможно повысить | ||
+ | |||
+ | ===== 3. Завершение потоков ===== | ||
+ | Как называются функции, | ||
+ | - Функции завершения потока | ||
+ | - join-функции | ||
+ | - Cancellation / interruption points | ||
+ | - Signal handlers | ||
+ | |||
+ | ===== 4. Spin mutex ===== | ||
+ | Чем отличается spin mutex от обычного mutex: | ||
+ | - Остаётся всегда в user space | ||
+ | - Остаётся всегда в kernel space | ||
+ | - Ничем не отличается | ||
+ | - Позволяет читателям производить операции параллельно | ||
+ | |||
+ | ===== 5. Wait/notify ===== | ||
+ | В каком состоянии находится примитив синхронизации (mutex) в приведённом коде на 1, 3 и 4 строках: | ||
+ | <code c++> | ||
+ | 0: boost:: | ||
+ | 1: | ||
+ | 2: while (messageQueue.empty()) | ||
+ | 3: | ||
+ | 4: | ||
+ | </ | ||
+ | - Во всех строках захвачен | ||
+ | - Во всех строках освобождён | ||
+ | - Захвачен в 1 и 4 строках, | ||
+ | - Захвачен в 1 строке, | ||
+ | |||
+ | ===== 6. Ранжирование алгоритмов ===== | ||
+ | Расположите алгоритмы синхронизации в порядке увеличения потенциальной производительности в жёсткой конкурентной среде: | ||
+ | - Грубая, | ||
+ | - Тонкая, | ||
+ | - Неблокирующая, | ||
+ | - Грубая, | ||
+ | |||
+ | ===== 7. Выбор алгоритма ===== | ||
+ | Отметьте вид алгоритмов синхронизации, | ||
+ | - Грубая | ||
+ | - Тонкая | ||
+ | - Оптимистичная | ||
+ | - Неблокирующая | ||
+ | |||
+ | ===== 8. Wait-free алгоритм ===== | ||
+ | Выберите корректное определение wait-free класса алгоритмов: | ||
+ | - Любой поток ожидает, | ||
+ | - Любой поток может выполнить свои функции за конечное число шагов, если ни один другой поток не находится в критической секции | ||
+ | - Система в целом продвигается вперед не зависимо ни от чего | ||
+ | - Любой поток может выполнить свои функции за конечное число шагов, не зависимо ни от чего | ||
+ | |||
+ | ===== 9. Определение типа ошибки ===== | ||
+ | Какая ошибка потенциально может возникнуть в приведённом коде: | ||
+ | <code c++> | ||
+ | void f() { | ||
+ | first_mutex.lock(); | ||
+ | second_mutex.lock(); | ||
+ | ... | ||
+ | } | ||
+ | |||
+ | void g() { | ||
+ | second_mutex.lock(); | ||
+ | first_mutex.lock(); | ||
+ | ... | ||
+ | } | ||
+ | </ | ||
+ | - Гонка данных (Data Race) | ||
+ | - Взаимная блокировка (Deadlock) | ||
+ | - Проблема ABA | ||
+ | - Инверсия приоритетов | ||
+ | |||
+ | ===== 10. Реализация lock-free алгоритмов ===== | ||
+ | Почему lock-free алгоритмы легче реализовать на языке со сборщиком мусора, | ||
+ | - Невозможна инверсия приоритетов | ||
+ | - Наличие существующих базовых контейнеров в java.util.concurrent | ||
+ | - Невозможна проблема ABA | ||
+ | - Наличие CAS-операций | ||
+ | |||
+ | ===== Консенсус ===== | ||
+ | Какое консенснусное число CAS-операций: | ||
+ | - 1 | ||
+ | - 2 | ||
+ | - 2N-2 (где N-число ячеек памяти, | ||
+ | - Бесконечность | ||
+ | |||
+ | |||
courses/high_performance_computing/questions.txt · Last modified: 2016/11/24 00:07 by kel