Repository navigation
Windows 7 + CUDA 11 + Vulkan + AVX1, AVX2 ets #2364
Replies: 3 comments
|
Yes this function indeed breaks stock Windows 7, for the oldpc builds we don't ship it but for the more modern buiilds we do to speed up loading. As a tip https://github.com/YuZhouRen86/VxKex-NEXT/releases makes all KoboldCpp backends compatible along with other software. So people have options. Fully stock Windows 7 with the avx1 version of KoboldCpp. The mod above manually for more binaries, or VXKex. If we accidentally ship this function in our -oldpc.exe cuda let me know. I can't test cuda in my Windows 7 VM so if its shipped there its an accident. It should not be shipped just like our other old pc options. |
|
Спасибо разработчику за версию 1.118. Пожалуйста, если кто-то будет запускать это на 1155 или 775 сокете под Windows 7? То отпишитесь тут о результатах. |
|
Спасибо разработчику за версию 1.122.1. Пожалуйста, если кто-то будет запускать это на 1155 или 775 сокете под Windows 7? То отпишитесь тут о результатах. |
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
Долгая история о том как я заставил работать KoboldCPP на Windows 7 x64 + CUDA 11 and Vulkan + AVX1, AVX2
by Enigma (aka Kontomoka5932)
Итак проблема в том что в Windows 7 отсутствуют функции:
PrefetchVirtualMemory, SetProcessInformation, GetSystemTimePreciseAsFileTime, CopyFile2 и CreateFile2.
Избавляемся от SetProcessInformation и PrefetchVirtualMemory
Для Windows 7 x64 больше не выпускается драйверы NVidia и последняя поддерживаемая версия CUDA 11.
В коде файла ggml-cpu.c есть упоминание SetProcessInformation из-за которого программа компилируется так, что вызов SetProcessInformation присутствует - поэтому от него нужно избавиться.
Я делаю это так:
Я просто заменил этот код:
на этот:
В коде файлов llama-mmap.cpp, llama-util.h и llama_v2-util.h есть упоминание PrefetchVirtualMemory и от него тоже нужно избавиться!
Ищем код начинающийся на
и заменяем его на
Итак мы полностью избавились от упоминаний в коде об вызовов тех функций которых нет в Win 7.
Теперь компилируем KoboldCPP - выбираем два варианта:
1 - Koboldcpp Windows(kcpp-build-release-win.yaml)
2 - Koboldcpp Windows OldPC(test-unofficial-win-oldpc-avx2.yaml)
После компиляции распаковываем оба варианта в отдельные папки.
Основной наш вариант это OldPC avx2 (test-unofficial-win-oldpc-avx2.yaml).
Почему? - потому что он использует CUDA 11.
Заменяем msvcp140.dll
Новые версии msvcp140.dll вызывают GetSystemTimePreciseAsFileTime, CopyFile2 и CreateFile2 которых нет в ядре Windows 7.
Старые версии msvcp140.dll такие как 14.29.30139.0 и 14.44.35211.0 не содержат вызовы к функциям и работают!
Нужно заменить библиотеку msvcp140.dll на старую версию (14.29.30139.0 или 14.44.35211.0).
Зачем нам Koboldcpp Windows(kcpp-build-release-win.yaml? Из него нам нужно всего два файла: koboldcpp_vulkan.dll и koboldcpp_default.dll перепешите их в папку с OldPC avx2.
Запускайте koboldcpp-launcher.exe из OldPC avx2 (test-unofficial-win-oldpc-avx2.yaml) и выберите CUDA или Vulkan.
Они будут работать и если ваш процессор поддерживает AVX1, AVX2 или более новые функции то они будут работать!
Я надеюсь что моё сообщение привлечет внимание разработчика к этой проблемме и в новых версиях это исправят.
Протестировано на версиях 1.108.2 ~ 1.117.1
Конфигурация:
OS: Windows 7 x64
CPU: Xeon E5-1650 v4 (.., SSE4.2, AVX, AVX2, FMA3, ..)
RAM: 64 Gb
NVIDIA GeForce RTX 3080 Ti - 12 Gb
Driver: R472.12 (r470_00-280) / 30.0.14.7212 (9-13-2021)
Vulkan: Vulkan API 1.2.175
Удачи! :)
All reactions