💡 Инструкция: Выберите один ответ из пяти. На работу отведено 85 минут. После завершения откроются правильные ответы, объяснения и результаты по темам.
Вопрос 1 из 30
Какое объяснение для `x = [1e16, 1.0, -1e16]` выдержит проверку на другом допустимом входе?
(a+b)+c\neq a+(b+c)
Julia Julia · Порядок операций Копировать
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Стандарт IEEE скорее обеспечивает ассоциативность сложения, если все промежуточные значения конечны.
Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Вопрос 2 из 30
Какую проверку стоит добавить для участка с `x = [1e16, 1.0, -1e16]`?
Julia Julia · Порядок операций Копировать
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Проверить на отдельном примере, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Проверить на отдельном примере, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Проверить на отдельном примере, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Проверить на отдельном примере, что стандарт IEEE скорее обеспечивает ассоциативность сложения, если все промежуточные значения конечны.
Вопрос 3 из 30
Что должно остаться истинным после рефакторинга участка с `x = [1e16, 1.0, -1e16]`?
Julia Julia · Порядок операций Копировать
x = [1e16, 1.0, -1e16]
left = (x[1] + x[2]) + x[3]
right = x[1] + (x[2] + x[3])
@show left right sum(x)
Сохранить в реализации правило: Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Сохранить в реализации правило: Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Сохранить в реализации правило: Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Сохранить в реализации правило: Стандарт IEEE скорее обеспечивает ассоциативность сложения, если все промежуточные значения конечны.
Вопрос 4 из 30
Две реализации участка с `x = [1e16, 1.0, -1e16]` совпадают на обычных данных. Что необходимо проверить перед выпуском?
(a+b)+c\neq a+(b+c)
Приёмка должна подтвердить, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Приёмка должна подтвердить, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Приёмка должна подтвердить, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Приёмка должна подтвердить, что стандарт IEEE скорее обеспечивает ассоциативность сложения, если все промежуточные значения конечны.
Вопрос 6 из 30
Какой механизм Julia определяет поведение строки `rng_stable = StableRNG(123)`?
x_i=RNG(s,i)
Julia Julia · Случайные генераторы Копировать
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Вопрос 7 из 30
Что нужно подтвердить отдельным примером для `rng_stable = StableRNG(123)`?
Julia Julia · Случайные генераторы Копировать
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Проверить на отдельном примере, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Проверить на отдельном примере, что один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Проверить на отдельном примере, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Проверить на отдельном примере, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Вопрос 8 из 30
Какое решение устраняет риск вокруг `rng_stable = StableRNG(123)`, не меняя поведение на допустимых данных?
Julia Julia · Случайные генераторы Копировать
using Random, StableRNGs
rng_std = Xoshiro(123)
rng_stable = StableRNG(123)
@show rand(rng_std, 3) rand(rng_stable, 3)
Сохранить в реализации правило: Один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Сохранить в реализации правило: Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Сохранить в реализации правило: Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Сохранить в реализации правило: Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Вопрос 9 из 30
При переносе кода с `rng_stable = StableRNG(123)` в библиотеку какой критерий нельзя заменять впечатлением «пример работает»?
x_i=RNG(s,i)
Приёмка должна подтвердить, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Приёмка должна подтвердить, что один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Приёмка должна подтвердить, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Приёмка должна подтвердить, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Вопрос 11 из 30
Какое объяснение для `report = (` выдержит проверку на другом допустимом входе?
R=R(v_J,v_P,v_{BLAS})
Julia Julia · Версии библиотек Копировать
using LinearAlgebra, Pkg
report = (
julia=string(VERSION),
blas=BLAS.get_config(),
project=Base.active_project(),
)
@show report
Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Вопрос 12 из 30
Какую проверку стоит добавить для участка с `report = (`?
Julia Julia · Версии библиотек Копировать
using LinearAlgebra, Pkg
report = (
julia=string(VERSION),
blas=BLAS.get_config(),
project=Base.active_project(),
)
@show report
Проверить на отдельном примере, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Проверить на отдельном примере, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Проверить на отдельном примере, что один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Проверить на отдельном примере, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Вопрос 13 из 30
Какое решение устраняет риск вокруг `report = (`, не меняя поведение на допустимых данных?
Julia Julia · Версии библиотек Копировать
using LinearAlgebra, Pkg
report = (
julia=string(VERSION),
blas=BLAS.get_config(),
project=Base.active_project(),
)
@show report
Сохранить в реализации правило: Один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Сохранить в реализации правило: Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Сохранить в реализации правило: Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Сохранить в реализации правило: Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Вопрос 14 из 30
Как проверить, что новая реализация `report = (` не изменила обещанное пользователю поведение?
R=R(v_J,v_P,v_{BLAS})
Приёмка должна подтвердить, что один и тот же seed стандартного RNG обязан выдавать идентичный поток во всех будущих версиях Julia и на всех архитектурах.
Приёмка должна подтвердить, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Приёмка должна подтвердить, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Приёмка должна подтвердить, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Вопрос 16 из 30
Как нужно интерпретировать `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`, не добавляя к коду лишних гарантий?
|x-y|\le atol+rtol|y|
Julia Julia · Допуски Копировать
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Чем больше знаков после запятой записано в файл, тем меньше численная и модельная неопределённость результата.
Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Вопрос 17 из 30
Какую проверку стоит добавить для участка с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
Julia Julia · Допуски Копировать
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Проверить на отдельном примере, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Проверить на отдельном примере, что чем больше знаков после запятой записано в файл, тем меньше численная и модельная неопределённость результата.
Проверить на отдельном примере, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Проверить на отдельном примере, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Вопрос 18 из 30
Какой контракт следует закрепить при переработке строки `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
Julia Julia · Допуски Копировать
using Test
reference = [1e-12, 1.0, 1e8]
observed = reference .* (1 .+ [1e-3, 1e-10, 1e-12])
@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Сохранить в реализации правило: Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Сохранить в реализации правило: Чем больше знаков после запятой записано в файл, тем меньше численная и модельная неопределённость результата.
Сохранить в реализации правило: Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Сохранить в реализации правило: Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Вопрос 19 из 30
После обновления Julia или пакета поведение участка с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)` изменилось. Какой критерий приёмки остаётся корректным?
|x-y|\le atol+rtol|y|
Приёмка должна подтвердить, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Приёмка должна подтвердить, что чем больше знаков после запятой записано в файл, тем меньше численная и модельная неопределённость результата.
Приёмка должна подтвердить, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Приёмка должна подтвердить, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Вопрос 20 из 30
Какое ограничение стоит прямо указать в документации к участку с `@test isapprox(observed, reference; rtol=1e-9, atol=1e-14)`?
Указать в документации: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Указать в документации: Чем больше знаков после запятой записано в файл, тем меньше численная и модельная неопределённость результата.
Указать в документации: Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Указать в документации: Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Указать в документации: Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Вопрос 21 из 30
Какое объяснение для `any(ismissing, x) && throw(ArgumentError("missing measurement"))` выдержит проверку на другом допустимом входе?
Q(data)=Q(unit,range,missing,source)
Julia Julia · Качество данных Копировать
function validate_measurements(x; unit)
unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
any(ismissing, x) && throw(ArgumentError("missing measurement"))
all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
return unit === :cm ? x ./ 100 : x
end
После фиксации кода и seed единицы, происхождение и пропуски входных данных уже не могут повлиять на воспроизводимость результата.
Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Вопрос 22 из 30
Какой тест точнее всего зафиксирует границу поведения `any(ismissing, x) && throw(ArgumentError("missing measurement"))`?
Julia Julia · Качество данных Копировать
function validate_measurements(x; unit)
unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
any(ismissing, x) && throw(ArgumentError("missing measurement"))
all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
return unit === :cm ? x ./ 100 : x
end
Проверить на отдельном примере, что после фиксации кода и seed единицы, происхождение и пропуски входных данных уже не могут повлиять на воспроизводимость результата.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Проверить на отдельном примере, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Проверить на отдельном примере, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Проверить на отдельном примере, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Вопрос 23 из 30
Какую гарантию должна сохранить правка участка с `any(ismissing, x) && throw(ArgumentError("missing measurement"))`?
Julia Julia · Качество данных Копировать
function validate_measurements(x; unit)
unit in (:m, :cm) || throw(ArgumentError("unsupported unit"))
any(ismissing, x) && throw(ArgumentError("missing measurement"))
all(isfinite, x) || throw(ArgumentError("non-finite measurement"))
return unit === :cm ? x ./ 100 : x
end
Сохранить в реализации правило: Версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Сохранить в реализации правило: Качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Сохранить в реализации правило: После фиксации кода и seed единицы, происхождение и пропуски входных данных уже не могут повлиять на воспроизводимость результата.
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Сохранить в реализации правило: Допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Вопрос 24 из 30
Две реализации участка с `any(ismissing, x) && throw(ArgumentError("missing measurement"))` совпадают на обычных данных. Что необходимо проверить перед выпуском?
Q(data)=Q(unit,range,missing,source)
Приёмка должна подтвердить, что допуск выводят из масштаба, обусловленности и цели расчёта; абсолютное равенство и чрезмерно широкий `isapprox` одинаково опасны.
Приёмка должна подтвердить, что версии Julia, пакетов, BLAS и системных библиотек влияют на алгоритмы и округление; окружение должно сохраняться вместе с результатом.
Приёмка должна подтвердить, что качество данных включает единицы, пропуски, диапазоны и происхождение; воспроизводимый код не делает недостоверный вход достоверным.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Приёмка должна подтвердить, что после фиксации кода и seed единицы, происхождение и пропуски входных данных уже не могут повлиять на воспроизводимость результата.
Вопрос 26 из 30
Какое объяснение для `config = Dict("seed"=>42, "rtol"=>1e-8)` выдержит проверку на другом допустимом входе?
H=hash(code,env,data,config)
Julia Julia · Воспроизводимость результата Копировать
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
"julia"=>string(VERSION),
"project"=>Base.active_project(),
"data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
"config"=>config,
)
TOML.print(stdout, report)
Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Снимка графика и таблицы с округлёнными значениями обычно хватает для воспроизведения расчёта; окружение, параметры и контрольная сумма данных не обязательны.
Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Вопрос 27 из 30
Какой контрольный тест лучше всего проверит правило, связанное с `config = Dict("seed"=>42, "rtol"=>1e-8)`?
Julia Julia · Воспроизводимость результата Копировать
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
"julia"=>string(VERSION),
"project"=>Base.active_project(),
"data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
"config"=>config,
)
TOML.print(stdout, report)
Проверить на отдельном примере, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Проверить на отдельном примере, что снимка графика и таблицы с округлёнными значениями обычно хватает для воспроизведения расчёта; окружение, параметры и контрольная сумма данных не обязательны.
Проверить на отдельном примере, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Проверить на отдельном примере, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Проверить на отдельном примере, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Вопрос 28 из 30
Какую гарантию должна сохранить правка участка с `config = Dict("seed"=>42, "rtol"=>1e-8)`?
Julia Julia · Воспроизводимость результата Копировать
using SHA, TOML
config = Dict("seed"=>42, "rtol"=>1e-8)
data = rand(10)
report = Dict(
"julia"=>string(VERSION),
"project"=>Base.active_project(),
"data_sha256"=>bytes2hex(sha256(reinterpret(UInt8, data))),
"config"=>config,
)
TOML.print(stdout, report)
Сохранить в реализации правило: Сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Сохранить в реализации правило: Снимка графика и таблицы с округлёнными значениями обычно хватает для воспроизведения расчёта; окружение, параметры и контрольная сумма данных не обязательны.
Сохранить в реализации правило: Воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Сохранить в реализации правило: Manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.
Сохранить в реализации правило: Явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Вопрос 29 из 30
После обновления Julia или пакета поведение участка с `config = Dict("seed"=>42, "rtol"=>1e-8)` изменилось. Какой критерий приёмки остаётся корректным?
H=hash(code,env,data,config)
Приёмка должна подтвердить, что воспроизводимый результат содержит код, окружение, данные или их контрольную сумму, параметры и машинно читаемый отчёт; ручной снимок графика недостаточен.
Приёмка должна подтвердить, что явный генератор и seed воспроизводят поток в пределах обещаний реализации; для стабильного эталона между версиями используют специально предназначенный стабильный RNG.
Приёмка должна подтвердить, что сложение чисел с плавающей точкой неассоциативно, поэтому параллельное сокращение и другой порядок могут менять последние разряды без логической ошибки алгоритма.
Приёмка должна подтвердить, что снимка графика и таблицы с округлёнными значениями обычно хватает для воспроизведения расчёта; окружение, параметры и контрольная сумма данных не обязательны.
Приёмка должна подтвердить, что manifest содержит обычно хватает сведений о BLAS, драйверах и системных библиотеках, поэтому отдельный отчёт об окружении не требуется.