Доступ к «суперкомпьютеру»: первым делом я проверил, правда ли он 64-битный
На одном из предметов нам выдали доступ к «суперкомпьютеру» — так это тогда называлось. Это был вычислительный грид: ui.grid.lumii.lv в Латвийском университете и сеть BalticGrid, куда можно было отправлять задания. И он был 64-битный. Тогда это было много: у нас дома ещё стояли 32-битные компьютеры. Все говорили: «О, там памяти много». А меня первым делом интересовало другое.
Нам дали консоль по SSH, какие-то команды, компилятор. Я сразу полез смотреть, что это за 64 бита, и устроил тест скорости. Берём миллиард раз и перемножаем сначала 32-битные числа, потом 64-битные. На обычном 32-битном компьютере умножение длинных чисел идёт, скажем, на порядок дольше. А тут — хоп, с той же скоростью. Действительно 64 бита.
Друзья поразились самому подходу. Они воспринимали 64-битный процессор только с точки зрения памяти: адресация шире, и всё. А я им: «Нет, у него ещё и все регистры длинные». В олимпиадном программировании часто нужно складывать большие числа и писать свою длинную арифметику, а тут половина её готова из коробки.
От домашки, которую мы там делали в январе 2008 года, у меня сохранился отчёт. Простой цикл от нуля до двух миллиардов на ui.grid.lumii.lv шёл 17 секунд, в среде BalticGrid — 21. Потом я написал проверку, простое ли 96-битное число 0x19D971EC4223A489D6986D7B. Задание попало на узел с Itanium 2 и работало 1256 секунд — и нашло делитель 0x3B9ACA09, то есть 1 000 000 009. С четырьмя потоками вышло 752 секунды, а версия на MPI уехала на машину в Каунасе и считала 1119.
Пользы от всего этого я для себя так и не нашёл. Если что-то надо было посчитать, проще было запустить на своём компьютере — пусть считает хоть полдня, — чем идти на «суперкомпьютер»: закидывать туда файлы, компилировать, отправлять задание в очередь и упираться в лимиты.