💡 Инструкция: Выберите один ответ из пяти. Время — 85 минут. Верный вариант в каждом вопросе один; после завершения доступны общий результат, профиль по 6 темам и объяснения.
Вопрос 7 из 30
Для темы «Пул работников» в тесте «Параллельные вычисления» приведён дефектный блок. Какое замечание рецензента можно принять?
MATLAB Фрагмент для рецензии Копировать
p = parallel.pool(4);
Переписать вычислительный шаг следующим образом. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. p = parpool("threads","auto",4);
Принять эту редакцию как полную замену текущего блока. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. p = parpool(4);
Использовать показанный вариант вместо дефектного фрагмента. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Контрольный пример должен воспроизводиться на чистом запуске проекта. p = gcp("nocreate");
if isempty(p), p = parpool("local",4); end
Внести показанную замену без изменения входного контракта. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Пул работников» также сверить класс данных и сохранение ожидаемой структуры выхода. if gcp, parpool(4); end
Заменить исходный блок этой реализацией. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Пул работников» также сверить класс данных и сохранение ожидаемой структуры выхода. p = parallel.pool(4);
Вопрос 12 из 30
Показанный код из темы «Передача данных» не соответствует постановке. Какая редакция восстанавливает вычислительный договор?
MATLAB Фрагмент для рецензии Копировать
global lookup
parfor k=1:N, out(k)=work(items(k),lookup); end
Переписать вычислительный шаг следующим образом. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Передача данных» также сверить класс данных и сохранение ожидаемой структуры выхода. parfor k=1:N
lookup=load("lookup.mat"); out(k)=work(items(k),lookup);
end
Принять эту редакцию как полную замену текущего блока. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Передача данных» также сверить класс данных и сохранение ожидаемой структуры выхода. global lookup
parfor k=1:N, out(k)=work(items(k),lookup); end
Использовать показанный вариант вместо дефектного фрагмента. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. C = parallel.pool.Constant(@() load("lookup.mat"));
parfor k=1:N
out(k)=work(items(k),C.Value.lookup);
end
Заменить исходный блок этой реализацией. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Передача данных» также сверить класс данных и сохранение ожидаемой структуры выхода. lookup=load("lookup.mat");
parfor k=1:N
out(k)=work(items(k),lookup);
end
Внести показанную замену без изменения входного контракта. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Контрольный пример должен воспроизводиться на чистом запуске проекта. spmd lookup=load("lookup.mat"); end
parfor k=1:N, out(k)=work(items(k),lookup); end
Вопрос 17 из 30
Рецензент разбирает фрагмент по теме «Детерминизм» в тесте «Параллельные вычисления». Какой вариант исправляет саму операцию?
MATLAB Фрагмент для рецензии Копировать
rng(42);
parfor k=1:N, out(k)=rand; end
Использовать показанный вариант вместо дефектного фрагмента. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. Для темы «Детерминизм» также сверить класс данных и сохранение ожидаемой структуры выхода. rng("shuffle");
parfor k=1:N, out(k)=rand; end
Внести показанную замену без изменения входного контракта. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. streams = parallel.pool.Constant(@() RandStream("Threefry","Seed",42));
parfor k=1:N
s = streams.Value;
s.Substream = k;
out(k) = rand(s);
end
Заменить исходный блок этой реализацией. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. Допуск и критерий принятия зафиксировать до просмотра результата. Для темы «Детерминизм» также сверить класс данных и сохранение ожидаемой структуры выхода. parfor k=1:N, out(k)=rand("seed",k); end
Переписать вычислительный шаг следующим образом. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Детерминизм» также сверить класс данных и сохранение ожидаемой структуры выхода. rng(42);
parfor k=1:N, out(k)=rand; end
Принять эту редакцию как полную замену текущего блока. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. Для темы «Детерминизм» также сверить класс данных и сохранение ожидаемой структуры выхода. parfor k=1:N, rng(42); out(k)=rand; end
Вопрос 19 из 30
В рецензии формализуют требование «получить воспроизводимые независимые случайные потоки в parfor». Какая запись верна на заявленной области входов?
u_k\sim U(1,1),\quad stream=k
u_k\sim U(1,0),\quad stream=k
u_k\sim U(0,1),\quad stream=k
u_k\ref U(0,1),\quad stream=k
u_k\sim U(0,1),\quad stream=j
Вопрос 21 из 30
Проверяется реализация операции: не отправлять рабочим процессам учётные данные вместе с параметрами вычисления. Какая реализация даёт требуемый результат, а не соседний?
save("cfg.mat","cfg"); parfor k=1:N, load cfg.mat; end
publicCfg = rmfield(cfg,"credentials");
parfor k=1:N, out(k)=compute(items(k),publicCfg); end
setenv("TOKEN",cfg.credentials.token); parfor k=1:N, out(k)=compute(items(k),cfg); end
parallel.pool.Constant(cfg.credentials);
parfor k=1:N, out(k)=compute(items(k),cfg); end
Вопрос 22 из 30
В расчёте по теме «Риски безопасности» обнаружено содержательное расхождение. Какую замену следует принять после проверки?
MATLAB Фрагмент для рецензии Копировать
save("cfg.mat","cfg"); parfor k=1:N, load cfg.mat; end
Заменить исходный блок этой реализацией. На минимальном примере сопоставить форму выхода и два контрольных значения с независимым эталоном. Контрольный пример должен воспроизводиться на чистом запуске проекта. Для темы «Риски безопасности» также сверить класс данных и сохранение ожидаемой структуры выхода. parallel.pool.Constant(cfg.credentials);
Переписать вычислительный шаг следующим образом. После замены проверить обычный и граничный входы, заранее вычислив ожидаемый результат. Результат проверки оформить так, чтобы его можно было повторить без ручной подгонки. setenv("TOKEN",cfg.credentials.token); parfor k=1:N, out(k)=compute(items(k),cfg); end
Использовать показанный вариант вместо дефектного фрагмента. Добавить регрессионный пример, на котором исходная версия расходится с требованием по значению или размерности. В журнале проверки сохранить вход, ожидаемый результат и фактическое расхождение. save("cfg.mat","cfg"); parfor k=1:N, load cfg.mat; end
Принять эту редакцию как полную замену текущего блока. Сравнить результат с формулой на двух входах, где меняются ориентация данных и масштаб величин. Допуск и критерий принятия зафиксировать до просмотра результата. publicCfg = rmfield(cfg,"credentials");
parfor k=1:N, out(k)=compute(items(k),publicCfg); end
Внести показанную замену без изменения входного контракта. Перед принятием проверить предпосылки операции, форму результата и один численный инвариант. Отдельно убедиться, что ближайшая неверная реализация этот контроль не проходит. parfor k=1:N, out(k)=compute(items(k),cfg); end