Получается система, минимально необходимая для собранного проекта с удобными .bat запускаторами для винды. Весит это всё равно довольно много, но меньше на msys2 сделать сложно. Только руками резать библиотеки, в которых на 100% уверен, что они не нужны.
Как-то так для добавления и поиска (переписывал под свою задачу, поэтому не ядра, а device, чтобы добавлением и поиском занимались конкретные вычисляющие ядра):
Если что-то не укладывается в некую принципиальную концепцию, заранее извиняюсь. Времени читать статью не было. Читал только код на гитхабе. А комментирую здесь, чтобы по русски.
А судя по всему нигде. Я сам очень люблю этот проект. У меня давно развёрнута система на его базе с раздутым тулчейном, из которой я при помощи pacman'а извлекаю достаточные для конкретных продуктов подсистемы. И вот как-то раз я решил развернуть новую. Каково же было моё удивление, когда система после установки отказалась обновляться, ругаясь на ключи. Систему я все таки развернул, отключив проверку ключей, но вот антивирус ругался на неё изрядно. Вы можете проделать тот же эксперимент.
Докер требует VT-x и установки. Данное решение работает (очень не быстро, но это и не нужно было) без обоих этих условий. А устанавливать ещё и запрещено было.
Тут скорее вкусовщина. Я хотел сделать максимум работы тыкая кнопочки в удобном графическом интерфейсе на линуксе под kvm. От этого конечно огрёб необходимость удаления лишних пакетов. Но опять-таки это само по себе было интересным опытом.
Очень странно сформулированный вопрос. Тем более, что не по теме. Но если предположить, что вопрос задаёт человек, желающий найти работу в области IT, и прикидывает как и чем ему придётся заниматься, то это очень сильно зависит от того, куда Вы попадёте. Мне повезло, и я никогда не был программистом, выполняющим конкретное задание в стиле за N часов тебе нужно написать K функций согласно ТЗ. Но в любом случае, на старте карьеры всё зависит от образования и места работы. Плюс одно и то же действие разные люди делают за разное время. Так что свой вопрос Вы можете задать себе из будущего.
Весь вопрос в том, чтобы ничего не устанавливать. А конкретная задача была не особо требовательна к ресурсам и выполнялась и так. Если бы нужно было что-то серьёзное вычислять, то да. Я не утверждаю, что решение годится для повсеместного использования.
А вот про dd я кое чего не понял. bs=1M, это судя по всему для ускорения. А вот sync зачем? Я так понимаю, что перед началом следующей операции (в данном случае это удаление), предыдущие должны быть завершены полностью. Или тут есть нюансы? В тестах всё работало, но возможно разные файловые системы могут вести себя по разному.
Сейчас у msys2 очень большие проблемы. Они судя по всему не справляются с проверкой базы пакетов. Поэтому они вообще перестали их подписывать. Ставьте на свой страх и риск. Дак вот страх и риск действительно есть. В пакетах встречаются вирусы.
Я посмотрел по коду и не понял откуда такое жёсткое ограничение на тип значения. Если взять, например float и брать в качестве пустого значения std::numeric_limits<Value>::max() (что возможно с ключом --expt-relaxed-constexpr), то всё будет работать так же. Должно работать и для double (но я не проверял). Точно будет работать, если хранить не в массиве пар, а в двух массивах (для ключей и для значений). Может возникнуть вопрос, как по возвращаемому значению понимать валидно ли оно, ведь операция сравнения для чисел с плавающей точкой вообще говоря не валидна. Но так делать и не надо, если возвращать результаты в отдельный массив структур <Value value, bool exists>.
Ну и да. размер любой таблицы в 1 ГБ это передоз для GPU! Для теста может и нормально, но в реальных условиях где всю остальную задачу размещать, если GPU не топовая. А такая реализация только и хороша тем, что работает на чём угодно. Я к тому, что хотелось бы увидеть результаты тестов, например для 256 МБ. А ведь в этом случае рехеширований будет ЗАМЕТНО больше.
Спасибо!
Ключи не могли устареть. Это была свежая установка с только что скачанного инсталлера.
А на тему извлечения систем, нужно создать свой пакет с помощью PKGBUILD, примерно так:
А потом выполнить примерно такой скрипт для его установки в отдельную, специально для него подготовленную систему:
Получается система, минимально необходимая для собранного проекта с удобными .bat запускаторами для винды. Весит это всё равно довольно много, но меньше на msys2 сделать сложно. Только руками резать библиотеки, в которых на 100% уверен, что они не нужны.
Как-то так для добавления и поиска (переписывал под свою задачу, поэтому не ядра, а device, чтобы добавлением и поиском занимались конкретные вычисляющие ядра):
Если что-то не укладывается в некую принципиальную концепцию, заранее извиняюсь. Времени читать статью не было. Читал только код на гитхабе. А комментирую здесь, чтобы по русски.
А судя по всему нигде. Я сам очень люблю этот проект. У меня давно развёрнута система на его базе с раздутым тулчейном, из которой я при помощи pacman'а извлекаю достаточные для конкретных продуктов подсистемы. И вот как-то раз я решил развернуть новую. Каково же было моё удивление, когда система после установки отказалась обновляться, ругаясь на ключи. Систему я все таки развернул, отключив проверку ключей, но вот антивирус ругался на неё изрядно. Вы можете проделать тот же эксперимент.
Извините за то, что ответил разом на все комментарии месяца через два после появления вопросов. К сожалению, так сложились обстоятельства.
Докер требует VT-x и установки. Данное решение работает (очень не быстро, но это и не нужно было) без обоих этих условий. А устанавливать ещё и запрещено было.
Тут скорее вкусовщина. Я хотел сделать максимум работы тыкая кнопочки в удобном графическом интерфейсе на линуксе под kvm. От этого конечно огрёб необходимость удаления лишних пакетов. Но опять-таки это само по себе было интересным опытом.
Virtual Box нужно устанавливать. Это противоречит базовой концепции.
Очень странно сформулированный вопрос. Тем более, что не по теме. Но если предположить, что вопрос задаёт человек, желающий найти работу в области IT, и прикидывает как и чем ему придётся заниматься, то это очень сильно зависит от того, куда Вы попадёте. Мне повезло, и я никогда не был программистом, выполняющим конкретное задание в стиле за N часов тебе нужно написать K функций согласно ТЗ. Но в любом случае, на старте карьеры всё зависит от образования и места работы. Плюс одно и то же действие разные люди делают за разное время. Так что свой вопрос Вы можете задать себе из будущего.
И да. Нет сети.
Весь вопрос в том, чтобы ничего не устанавливать. А конкретная задача была не особо требовательна к ресурсам и выполнялась и так. Если бы нужно было что-то серьёзное вычислять, то да. Я не утверждаю, что решение годится для повсеместного использования.
А вот про dd я кое чего не понял. bs=1M, это судя по всему для ускорения. А вот sync зачем? Я так понимаю, что перед началом следующей операции (в данном случае это удаление), предыдущие должны быть завершены полностью. Или тут есть нюансы? В тестах всё работало, но возможно разные файловые системы могут вести себя по разному.
Не в сложившихся реалиях. Если бы было, как нужно, был бы только линукс.
Никак. Код был скопипащен с линуксового теста. В статье всё исправлено.
Сейчас у msys2 очень большие проблемы. Они судя по всему не справляются с проверкой базы пакетов. Поэтому они вообще перестали их подписывать. Ставьте на свой страх и риск. Дак вот страх и риск действительно есть. В пакетах встречаются вирусы.
Я посмотрел по коду и не понял откуда такое жёсткое ограничение на тип значения. Если взять, например float и брать в качестве пустого значения std::numeric_limits<Value>::max() (что возможно с ключом --expt-relaxed-constexpr), то всё будет работать так же. Должно работать и для double (но я не проверял). Точно будет работать, если хранить не в массиве пар, а в двух массивах (для ключей и для значений). Может возникнуть вопрос, как по возвращаемому значению понимать валидно ли оно, ведь операция сравнения для чисел с плавающей точкой вообще говоря не валидна. Но так делать и не надо, если возвращать результаты в отдельный массив структур <Value value, bool exists>.
Ну и да. размер любой таблицы в 1 ГБ это передоз для GPU! Для теста может и нормально, но в реальных условиях где всю остальную задачу размещать, если GPU не топовая. А такая реализация только и хороша тем, что работает на чём угодно. Я к тому, что хотелось бы увидеть результаты тестов, например для 256 МБ. А ведь в этом случае рехеширований будет ЗАМЕТНО больше.