12

Практика сравнительного анализа вычислительной эффективности

AI999第4课:现代计算底座与张量化并行演化
00:00

На этой странице «сравнение вычислительной эффективности» превращается в воспроизводимый практический эксперимент:на одной и той же эволюционной задаче сравнивается сквозная эффективность традиционного последовательного перебора особей на CPU и тензорной пакетной обработки EvoX на GPU. Цель — не запомнить вывод «GPU быстрее», а понять, откуда именно берётся ускорение от тензорного параллелизма, какова его цена и где проходят границы применимости.

Две базовые линии, одна задача

  • Последовательная базовая линия на CPU: в цикле по одному вызывается функция оценки для каждой особи; каждое поколение требует N независимых вызовов, обновлений состояния и сбора результатов. Управление циклом, накладные расходы интерпретатора и разрозненные обращения к памяти размывают эффективную вычислительную мощность — чем больше особей, тем выше доля этих «невычислительных» затрат.
  • Тензорная реализация на GPU для сравнения: EvoX организует популяцию, входные данные оценки и состояние выполнения в виде тензоров и выполняет оценку и операторы пакетно на GPU, охватывая весь набор кандидатов одним вызовом, что радикально сокращает число последовательных циклов и переключений.
Сравнение вычислительной эффективности: последовательный цикл на CPU и тензорная пакетная обработка на GPUПротокол измерений: фиксированные задача, размер популяции, число поколений и случайное зерно · прогрев + синхронизация устройства перед замеромCPU последовательноGPU пакетно1,000,750,500,250Время на поколение (относительное)База 1,0×Ускорение ≈2,2×Ускорение ≈4,5×Ускорение ≈7,1×Последовательный цикл на CPUGPU пакетно b=64GPU пакетно b=256GPU пакетно b=1024Выгода: пакетный параллелизм · тензорные операторы · внутриустройственный параллелизмОграничения: размер пакета · затраты на копирование и запуск ядерПри слишком малом размере пакета растёт доля фиксированных затрат, и ускорение снижается; сначала убедитесь, что функция оценки поддаётся пакетированию, и только затем сравнивайте реализации на CPU и GPU.

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

Воспроизводимое сравнение требуетфиксировать задачу, размер популяции, число поколений и случайное зерно, после чего фиксировать: реальное время на поколение, общее время, пропускную способность (оценок/с), ускорение, а также загрузку GPU и объём видеопамяти. Перед замером необходимпрогрев, чтобы исключить влияние первой компиляции и выделения видеопамяти, а в точках замера выполнятьсинхронизацию устройства, а также учитывать время вычислений и время передачи данных между хостом и устройством раздельно. Без любого из этих шагов полученное ускорение может оказаться недостоверным.

Откуда берётся разница и чем она ограничена

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

Практический вывод

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