Open AI Championship

Project

Sandbox

Round 1

Round 2

Finals

Песочница (на 10 января 2021 г.)

Recent comments

30 march 08:51: Korolev wrote comment on post Prizes
28 march 12:50: QWEQWEQWE wrote comment on post Prizes
13 march 18:43: Rustam_3 wrote comment on post Prizes
7 january 16:04: tsapelman wrote comment on post Finals: Results
5 january 15:34: amurushkin wrote comment on post CodeCraft 2020 App
5 january 15:28: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 15:24: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 15:24: Dan_Tat wrote comment on post CodeCraft 2020 App
5 january 14:38: amurushkin wrote comment on post CodeCraft 2020 App
5 january 14:29: Dan_Tat wrote comment on post CodeCraft 2020 App

VK Group

Telegram chat

Discord

GraalVM for Java and Kotlin

When measuring time consumed by your strategies, we use total cpu time across all thread. This means, e.g. that we also include time for GC and JIT. JIT, especially, has proven to be the bottleneck for Kotlin. So, thanks to our participants, another runtime for Java and Kotlin is now available - GraalVM native compilation.

This may improve your strategy a lot, if you are near the limit. If you submit as archive, your pom.xml needs to be updated as seen in the repository.



karloid

karloid

Saint Petersburg

Очень крутая штука, у меня время стратегии на котлине упало в 10 раз и стало нормально измеримо из самой страты через System.currentTimeMillis(). Потребление памяти упало в 5 раз

Dec 15, 2020 11:50:58 PM
karloid

karloid

Saint Petersburg

Еще бы запилить для GraalVM языковые иконки отличающиеся от стоковых Java\Kotlin как сделанно для PyPy так сказать что бы рекламировалось лишний раз, и было меньше раздумий почему у топа на джаве так быстро считается

.>

Dec 16, 2020 2:01:04 AM
ShmelX

ShmelX

Tula

Здравствуйте! И как этим пользоваться на примере java? Просто подменить файл pom.xml?

Dec 17, 2020 12:49:43 AM
kuviman

kuviman

Codeforces

ShmelX

ShmelX

Tula

Здравствуйте! И как этим пользоваться на примере java? Просто подменить файл pom.xml?

Подменить файл и выбрать компилятор с GraalVM при посылке

Dec 17, 2020 12:55:20 AM
ShmelX

ShmelX

Tula

kuviman

kuviman

Codeforces

Подменить файл и выбрать компилятор с GraalVM при посылке

А где компилятор выбирается при посылке?

Dec 17, 2020 1:08:47 AM
ShmelX

ShmelX

Tula

ShmelX

ShmelX

Tula

А где компилятор выбирается при посылке?

Попробовал с GraalVM на java. Мне, к сожалению, особо не помогло. Но хотя бы стратегия прошла верификацию. Надо было на C++ писать. :)

Dec 17, 2020 2:49:37 AM
MikeWazowski

MikeWazowski

Moscow

karloid

karloid

Saint Petersburg

Очень крутая штука, у меня время стратегии на котлине упало в 10 раз и стало нормально измеримо из самой страты через System.currentTimeMillis(). Потребление памяти упало в 5 раз

у меня на java тоже памяти стало заниматься в несколько раз меньше и потребляемое время стало похожим на то, что замеряется собственно в самом классе MyStrategy

Dec 17, 2020 10:47:09 AM
dbf

dbf

Moscow

ShmelX

ShmelX

Tula

Попробовал с GraalVM на java. Мне, к сожалению, особо не помогло. Но хотя бы стратегия прошла верификацию. Надо было на C++ писать. :)

Если время внутри стратегии сильно отличается от измеренного системой и используется GraalVM, то надо смотреть в сторону GC. Я вчера так просадил секунд на 10 свою стратегию из-за слишком сильного выделения памяти.

Dec 17, 2020 11:58:08 AM
ShmelX

ShmelX

Tula

dbf

dbf

Moscow

Если время внутри стратегии сильно отличается от измеренного системой и используется GraalVM, то надо смотреть в сторону GC. Я вчера так просадил секунд на 10 свою стратегию из-за слишком сильного выделения памяти.

В общем соревнование сводится не к сражению стратегий, а к оптимизации настроек компиляторов.. Вообще странно иметь одинаковые ограничения по времени и объему для столь разных языков.

Dec 17, 2020 12:31:41 PM
karloid

karloid

Saint Petersburg

ShmelX

ShmelX

Tula

В общем соревнование сводится не к сражению стратегий, а к оптимизации настроек компиляторов.. Вообще странно иметь одинаковые ограничения по времени и объему для столь разных языков.

Одинаковые условия для всех языков - это норма в спортивном\около-спортивном программировании.

Дальше ИМХО:

Да и в целом кажется честным.

Этот аспект заодно несет и “просветительскую” пользу - люди задумываются о производительности своих решений и языков, о разных компиляторах их особенностях и плюсах. Такое расширение кругозора исключительно полезно и косвенно должно принести пользу и в промышленном программировании, приложения будут потреблять меньше ресурсов, работать эффективнее и т.д.

Dec 17, 2020 5:37:36 PM
ShmelX

ShmelX

Tula

karloid

karloid

Saint Petersburg

Одинаковые условия для всех языков - это норма в спортивном\около-спортивном программировании. Дальше ИМХО: Да и в целом кажется честным. Этот аспект заодно несет и “просветительскую” пользу - люди задумываются о производительности своих решений и языков, о разных компиляторах их особенностях и плюсах. Такое расширение кругозора исключительно полезно и косвенно должно принести пользу и в промышленном программировании, приложения будут потреблять меньше ресурсов, работать эффективнее и т.д.

Может вы правы. Я узнал много нового . .Но когда сборщик мусора (скорее всего он) вдруг внезапно валит стратегию, это нервирует. Особенно бесит, когда после оптимизации стратегия не проходит верификацию и непонятно, что делать. Так что, следующие соревнования только на С++.

Dec 17, 2020 5:57:35 PM
karloid

karloid

Saint Petersburg

ShmelX

ShmelX

Tula

Может вы правы. Я узнал много нового . .Но когда сборщик мусора (скорее всего он) вдруг внезапно валит стратегию, это нервирует. Особенно бесит, когда после оптимизации стратегия не проходит верификацию и непонятно, что делать. Так что, следующие соревнования только на С++.

Я вижу вы заливаете стратегию как обычную джаву попробуйте Java GraalVM, нужно заливать с другим pom.xml, а все остальное должно работать так же как и с обычной джавой. скорее всего проблемы со временем уйдут совсем и JIT с GC не будут проблемой

Локально на свой пк ставить graalvm не обязательно, можно продолжать тестировать на обычном jvm

PS: GC становится проблемой если создавать прям очень много объектов, тут на раике основная проблема это JIT - тут можно посмотреть детали - https://github.com/MailRuChamps/raic-2020/issues/106

Dec 17, 2020 6:02:43 PM
karloid

karloid

Saint Petersburg

тут кстати создал связанный фича реквест : ставим лайки что бы кувиман увидел :) https://github.com/MailRuChamps/raic-2020/issues/114 [Feature request] Заменить иконки для Java\Kotlin GraalVM на отличимые

Dec 17, 2020 6:04:12 PM
ShmelX

ShmelX

Tula

karloid

karloid

Saint Petersburg

Я вижу вы заливаете стратегию как обычную джаву попробуйте Java GraalVM, нужно заливать с другим pom.xml, а все остальное должно работать так же как и с обычной джавой. скорее всего проблемы со временем уйдут совсем и JIT с GC не будут проблемой Локально на свой пк ставить graalvm не обязательно, можно продолжать тестировать на обычном jvm …

Что-то я совсем запутался. Скачал с Github Java-GraalVM-native взял оттуда pom.xm и подменил им файл в базовой стратегии с сайта AICUP. Верификатор выдал ошибку компиляции: Или я что-то делаю не так? Может еще какие-то файлы надо править/добавить? Log ниже: tdout: [INFO] Scanning for projects… [INFO] [INFO] ————–< com.codegame.aicup2020.devkit:aicup2020 >————— [INFO] Building aicup2020 1.0-SNAPSHOT [INFO] ——————————–[ jar ]——————————— [INFO] Downloading from central: https://repo.maven.apache.org/maven2/org/graalvm/nativeimage/native-image-maven-plugin/20.2.0/native-image-maven-plugin-20.2.0.pom [INFO] ———————————————————————— [INFO] BUILD FAILURE [INFO] ———————————————————————— [INFO] Total time: 11.797 s [INFO] Finished at: 2020-12-17T19:38:26Z [INFO] ———————————————————————— [ERROR] Plugin org.graalvm.nativeimage:native-image-maven-plugin:20.2.0 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.graalvm.nativeimage:native-image-maven-plugin:jar:20.2.0: Could not transfer artifact org.graalvm.nativeimage:native-image-maven-plugin:pom:20.2.0 from/to central (https://repo.maven.apache.org/maven2): Transfer failed for https://repo.maven.apache.org/maven2/org/graalvm/nativeimage/native-image-maven-plugin/20.2.0/native-image-maven-plugin-20.2.0.pom: Unknown host repo.maven.apache.org: Name or service not known -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/PluginResolutionException

stderr: + ‘[‘ compile ’!=‘ base ’]’ ++ ls -1 /src/ ++ wc -l + 2 -eq 1 + rm -rf ./Dockerfile ./compile.sh ./pom.xml ./run.sh ./src ./target + cp -rf /src/pom.xml /src/src ./ + mvn package –batch-mode

Dec 17, 2020 10:59:19 PM
karloid

karloid

Saint Petersburg

ShmelX

ShmelX

Tula

Что-то я совсем запутался. Скачал с Github Java-GraalVM-native взял оттуда pom.xm и подменил им файл в базовой стратегии с сайта AICUP. Верификатор выдал ошибку компиляции: Или я что-то делаю не так? Может еще какие-то файлы надо править/добавить? Log ниже: tdout: [INFO] Scanning for projects… [INFO] [INFO] ————–< com.codegame.aicup2020.devkit:aicup2020 >————— [INFO] Building aicup2020 1.0-SNAPSHOT [INFO] ——————————–[ jar ]——————————— [INFO] Downloading from central: …

А при отсылке стратегии выбрали Java(GraalVm) в выпадающем списке? Если выбрать просто Java то будет ошибка как у вас кажется.

Dec 17, 2020 11:04:58 PM
ShmelX

ShmelX

Tula

karloid

karloid

Saint Petersburg

А при отсылке стратегии выбрали Java(GraalVm) в выпадающем списке? Если выбрать просто Java то будет ошибка как у вас кажется.

Вот это я лажанулся.. Нет не менял.. Спасибо! Поменял и верификатор сразу пропустил. 2 дня потерял на это. :). Стратегия продолжает вылетать по лимиту времени в играх, но вроде стало полегче. :Буду дальше разбираться.

Dec 17, 2020 11:37:43 PM
ShmelX

ShmelX

Tula

ShmelX

ShmelX

Tula

Вот это я лажанулся.. Нет не менял.. Спасибо! Поменял и верификатор сразу пропустил. 2 дня потерял на это. :). Стратегия продолжает вылетать по лимиту времени в играх, но вроде стало полегче. :Буду дальше разбираться.

Это оказывается старая попытка доигрывала, поэтому разницы не заметил. А в новой общее время работы за игру упало с 40 сек упало до 2сек, т.е. в 20раз. Так что, все норм. Большое спасибо.

Dec 17, 2020 11:54:28 PM
dionisxon

dionisxon

Yandex

Если вы шлете архив, ваш pom.xml стоит обновить соответственно (смотрите в репозиторий).

А если отправляю только MyStrategy.kt и выбираю Kotlin (GraalVM), то все должно заработать? Отправляю один и тот же MyStrategy.kt выбирая “Kotlin” и решение принимается. Выбираю “Kotlin (GraalVM)” и проходит проверку один раз из 3-4. Сообщение при этом “Player crashed: IO error: failed to fill whole buffer” - означает ли это, что произошел краш в работе стратегии или она крашнулась из-за проблем с time limit?

Dec 18, 2020 3:28:33 PM
griboedov

griboedov

Sevastopol

dionisxon

dionisxon

Yandex

А если отправляю только MyStrategy.kt и выбираю Kotlin (GraalVM), то все должно заработать? Отправляю один и тот же MyStrategy.kt выбирая “Kotlin” и решение принимается. Выбираю “Kotlin (GraalVM)” и проходит проверку один раз из 3-4. Сообщение при этом “Player crashed: IO error: failed to fill whole buffer” - означает ли это, что произошел краш в работе стратегии или она крашнулась из-за проблем с time limit?

Player crashed: IO error: failed to fill whole buffer - это на самом сервере какие-то затыки, Обычно падает у всех 4-х участников

Dec 18, 2020 4:09:35 PM
dionisxon

dionisxon

Yandex

karloid

karloid

Saint Petersburg

Очень крутая штука, у меня время стратегии на котлине упало в 10 раз и стало нормально измеримо из самой страты через System.currentTimeMillis(). Потребление памяти упало в 5 раз

А вы какие-то манипуляции проводили перед отправкой? Отправляю один и тот же MyStrategy.kt в “Kotlin” и в “Kotlin (GraalVM)”. В первом проходит по времени, во втором TLE. Локальные раны укладываются в 6 секунд в сражении со своей же стратегией. Но дальнейшие улучшения уже не влазят и при отправке в “Kotlin”.

Dec 20, 2020 7:02:43 PM
karloid

karloid

Saint Petersburg

dionisxon

dionisxon

Yandex

А вы какие-то манипуляции проводили перед отправкой? Отправляю один и тот же MyStrategy.kt в “Kotlin” и в “Kotlin (GraalVM)”. В первом проходит по времени, во втором TLE. Локальные раны укладываются в 6 секунд в сражении со своей же стратегией. Но дальнейшие улучшения уже не влазят и при отправке в “Kotlin”.

Безотносительно того что сама система с третьего раза в среднем принимает страту (из за отказа тестирования) - У меня были таймлимиты в некоторых сценариях проверки, в духе Раунд1 против пустых врагов, из-за бажной логики.

Могу порекомендовать попробовать

1) обложиться логами которые будут на верификации показывать что конкретно тормозит, мб какое-то место (поиск пути например) вызывается неожиданное количество раз 2) что бы пройти верификацию и посмотреть как оно играет в обычных играх - можно добавить условие - в духе если общее время больше 35с, то отдавать пустой ответ. 3) локально потестировать в режиме Раунд1 против пустых противников с граалем

Dec 20, 2020 8:11:47 PM
dionisxon

dionisxon

Yandex

karloid

karloid

Saint Petersburg

Безотносительно того что сама система с третьего раза в среднем принимает страту (из за отказа тестирования) - У меня были таймлимиты в некоторых сценариях проверки, в духе Раунд1 против пустых врагов, из-за бажной логики. Могу порекомендовать попробовать 1) обложиться логами которые будут на верификации показывать что конкретно тормозит, мб какое-то место (поиск пути например) вызывается неожиданное количество раз 2) что бы пройти верификацию и посмотреть как оно играет в обычных играх - можно добавить условие - в духе если общее время больше 35с, то отдавать пустой ответ. 3) локально потестировать в режиме Раунд1 против пустых противников с граалем

Начал писать логи: с граалем на сервере упирается в лимит за 350-450 тиков, без него - за 750. Затраченное время на конкретные операции в обоих запусках сопоставимо, подход к лимиту по времени плавный, просто с граалем скорость выше. Локально пока не научился собирать, мб попадаю на какие-нибудь слабые места.

Dec 20, 2020 10:30:40 PM