Курсовая работа

Курсовая по информатике и вычислительной технике в НИЯУ МИФИ: системный уровень, аппаратная архитектура и benchmark

Как писать курсовую по информатике и вычислительной технике в НИЯУ МИФИ: выбрать системную задачу, реализовать прототип и провести воспроизводимый benchmark.

Содержание +

Курсовая по информатике и вычислительной технике в НИЯУ МИФИ естественно тяготеет к системным задачам. В актуальном перечне образовательных программ направление 09.03.01 связано с компьютерными системами и технологиями, а исторически и предметно подготовка включает сетевые аппаратно-программные комплексы, параллельную обработку, микропроцессорные системы и защищённые технологии.

Официальные страницы:
https://admission.mephi.ru/admission/baccalaureate-and-specialty/education/programs
https://admission.mephi.ru/about/specialty/090301-oz-vpo

Выберите уровень

Тема может быть про:

  • CPU;
  • memory;
  • network;
  • embedded;
  • OS;
  • distributed system;
  • FPGA;
  • storage.

Не пытайтесь исследовать весь компьютер.

Сформулируйте измеримый вопрос

Например:

«Как изменяется latency сетевого сервиса при росте batch size?»

Или:

«Как layout данных влияет на скорость обработки массива, превышающего размер cache?»

Такая постановка задаёт experiment.

Hardware context

Зафиксируйте:

  • CPU;
  • cores;
  • RAM;
  • storage;
  • network;
  • OS.

Benchmark без hardware почти невозможно повторить.

Software environment

Сохраните:

  • compiler;
  • version;
  • flags;
  • library;
  • kernel.

-O0 и -O3 могут дать больше разницы, чем ваш алгоритм.

Baseline

Всегда нужен ориентир.

Например:

  • standard library;
  • single-thread;
  • naive algorithm.

Без baseline ускорение не имеет смысла.

Correctness first

Сначала убедитесь, что обе реализации дают одинаковый результат.

Быстрая программа с другой математикой не является оптимизацией.

Используйте differential tests.

Memory hierarchy

Разделяйте:

  • registers;
  • cache;
  • RAM;
  • storage.

Задержки различаются на порядки.

Алгоритм может упираться в память, а не CPU.

Cache locality

Для массива сравните row-major и плохой stride.

Измерьте время при разных working set.

Можно увидеть переход через L1/L2/L3.

Data layout

Array of Structures и Structure of Arrays могут вести себя по-разному.

Если тема вычислительная, это хороший эксперимент.

SIMD

Vectorization ускоряет однотипные операции.

Но нужно подтвердить:

  • compiler report;
  • instruction;
  • benchmark.

Не утверждайте SIMD только потому, что цикл короткий.

Branch prediction

Предсказуемое условие быстрее случайного.

Сгенерируйте разные distributions.

Не делайте вывод на одном удобном input.

Multithreading

Измеряйте:

T1
T2
T4
T8.

Рассчитайте speedup.

Число threads не равно ускорению.

Amdahl

Если часть программы остаётся последовательной, максимальный speedup ограничен.

Сопоставьте измерение с теорией.

Contention

Threads могут ждать mutex.

Profiler покажет, где.

Не ставьте lock вокруг всей критичной функции.

False sharing

Разные variables в одной cache line могут тормозить потоки.

Это хороший пример системной проблемы без race condition.

NUMA

Если hardware многосокетный, локальность памяти влияет на performance.

Но не включайте NUMA в курсовую на обычном laptop.

Метод должен соответствовать среде.

Network

Измеряйте:

  • latency;
  • throughput;
  • jitter;
  • loss.

Не используйте только ping.

Он не характеризует application workload.

TCP/UDP

Выбор зависит от требований.

TCP даёт reliability и order.

UDP даёт иной trade-off.

Не называйте один протокол «быстрее вообще».

Serialization

Сравните JSON и binary format по:

  • size;
  • encode time;
  • decode time.

Но учитывайте удобство и interoperability.

Storage

Различайте:

  • sequential read;
  • random read;
  • write;
  • cached/uncached.

OS cache может полностью изменить результат.

Database system

Можно исследовать:

  • index;
  • transaction;
  • query plan.

Покажите EXPLAIN или аналог.

Не оптимизируйте SQL только по времени одного запуска.

Embedded

Для микроконтроллера важны:

  • memory;
  • interrupts;
  • cycle;
  • power;
  • interface.

Результат на PC нельзя напрямую переносить на MCU.

Interrupt latency

Если система real-time, измерьте worst-case response.

Среднее время может быть маленьким, но один большой spike нарушит deadline.

RTOS

Для task задайте:

  • period;
  • priority;
  • execution time;
  • deadline.

Не ставьте всем highest priority.

FPGA

Если используется programmable logic, покажите:

  • resources;
  • frequency;
  • latency;
  • throughput.

Сравнение с CPU должно учитывать transfer overhead.

Fixed point

Для embedded/FPGA можно уменьшать разрядность.

Но оцените:

  • range;
  • quantization;
  • error.

Не заменяйте float только ради скорости без контроля качества.

Benchmark methodology

Проводите:

  • warm-up;
  • multiple runs;
  • same input;
  • fixed configuration.

Показывайте median и spread.

Один замер слаб.

Timer resolution

Для короткой функции объединяйте много операций.

Иначе overhead самого таймера может быть сопоставим с измерением.

Profiling

До изменения кода найдите hotspot.

Покажите top functions.

Не оптимизируйте 1% runtime.

Performance counters

Если доступны, полезны:

  • cache misses;
  • branch misses;
  • cycles.

Они помогают объяснить, почему два кода отличаются.

Power

Для embedded или accelerator можно оценить energy per operation.

Иногда вариант медленнее, но энергоэффективнее.

Это отдельный критерий.

Fault

Для системной работы полезно проверить:

  • lost packet;
  • disk full;
  • restart;
  • corrupted input.

Не тестируйте только happy path.

Reproducible benchmark

Сделайте script:

build -> generate input -> run -> collect -> plot.

Не переносите числа вручную.

Графики

Полезны:

  • n -> time;
  • threads -> speedup;
  • load -> p95;
  • working set -> throughput.

Одна ось должна иметь понятную единицу.

Практическая глава

Схема:

1. system problem;
2. baseline;
3. architecture;
4. implementation;
5. correctness;
6. benchmark;
7. profiling;
8. optimization;
9. repeated benchmark;
10. limits.

Контекст НИЯУ МИФИ

ИВТ в МИФИ имеет выраженный системный и инженерный характер.

Поэтому сильная курсовая может находиться ближе к architecture, networking, embedded или parallel computing, чем к обычной разработке интерфейса.

Защита

Будьте готовы назвать hardware, compiler flags, baseline, способ benchmark, bottleneck и предел ускорения.

Сильная курсовая по ИВТ в НИЯУ МИФИ объясняет не только сколько работает система, но и почему она ведёт себя именно так.

Ещё по теме