Перейти к содержанию
Fire Monkey от А до Я

Евгений Корепов

Пользователи
  • Постов

    736
  • Зарегистрирован

  • Посещение

  • Победитель дней

    97

Евгений Корепов стал победителем дня 20 декабря 2021

Евгений Корепов имел наиболее популярный контент!

3 Подписчика

Информация о Евгений Корепов

  • День рождения 22 июля

Информация

  • Пол
    Мужчина
  • Город
    Ухта

Посетители профиля

14 170 просмотров профиля
  1. Разобрался с помощью коллег из https://t.me/fmx_flood, спасибо kami! Определение: nvmlDeviceGetHandleByPciBusId_v2 : function (const pciBusId : PAnsiChar; pHandle: p_nvmlDevice_t) : nvmlReturn_t; stdcall; Импорт: function ProcNV(var Fun: Pointer; const FunName: WideString) : boolean; begin Fun := nil; Fun := GetProcAddress(LibHandleNV, PWideChar(FunName)); Result := Assigned(Fun); end; ... ProcNV(@nvmlDeviceGetHandleByPciBusId_v2, 'nvmlDeviceGetHandleByPciBusId_v2'); Использование: В функцию GPUusageNVIDIA надо вместо GPU ID передавать PCI BUS ID. PCI BUS ID получаем так clStatus := clGetDeviceInfo(PlatformDevices[DevN], CL_DEVICE_PCI_BUS_ID_NV, SizeOf(AValueCardinal), @AValueCardinal, @Returned_Size); if (clStatus = CL_SUCCESS) and (Returned_Size = 4) then ADevicesOpenCL[NumDevicesOpenCL].DevicePCIBusID := AValueCardinal; Ну и получение GPU_Handle : var ABusIDText : String; ... ABusIDText := '00000000:' + PCIBusID.ToString.PadLeft(2, '0') + ':00.0'; AnvmlReturn := nvmlDeviceGetHandleByPciBusId_v2(PAnsiChar(AnsiString(ABusIDText)), @GPU_Handle); If AnvmlReturn <> 0 then raise EAbort.Create(''); В nvmlDeviceGetHandleByPciBusId_v2 передается pciBusId, параметр должен быть вида domain:bus:device.function, к примеру '00000000:08:00.0'
  2. Владимир огромное спасибо! Ваш код очень помог мне в одном проекте. А есть ли путь для решения проблемы не совпадения нумерации GPU? У меня на разных стендах абсолютно разные результаты, каждый раз создавать SlotGPU.txt с соответствиями очень не хочется. Бывает что нумерации совсем безумные, типа 4 5 2 3 1 0 И определить их можно только нагружая один из GPU и наблюдая результат выдаваемый nvmlDeviceGetMemoryInfo Я пытаюсь определить соответствие получая CL_DEVICE_PCI_BUS_ID_NV и CL_DEVICE_PCI_SLOT_ID_NV PlatformID 0 | DeviceID 0 | DeviceNum 0 | PCI Bus 5 Slot 0 | NVIDIA GeForce RTX 3070 | GPU_usage 11 % | Temperature 51 | FanSpeed 40 % | Power 41 PlatformID 0 | DeviceID 1 | DeviceNum 1 | PCI Bus 7 Slot 0 | NVIDIA GeForce RTX 3070 | GPU_usage 100 % | Temperature 76 | FanSpeed 82 % | Power 239 PlatformID 0 | DeviceID 2 | DeviceNum 2 | PCI Bus 3 Slot 0 | NVIDIA GeForce RTX 2070 SUPER | GPU_usage 100 % | Temperature 62 | FanSpeed 71 % | Power 148 PlatformID 0 | DeviceID 3 | DeviceNum 3 | PCI Bus 2 Slot 0 | NVIDIA GeForce GTX 960 | GPU_usage 100 % | Temperature 63 | FanSpeed 72 % | Power 148 Но у меня не хватает мозгов правильно импортировать функцию nvmlDeviceGetHandleByPciBusId_v2 ( const char* pciBusId, nvmlDevice_t* device )(https://docs.nvidia.com/deploy/nvml-api/group__nvmlDeviceQueries.html#group__nvmlDeviceQueries) То ли я параметры не правильно перевожу в pascal, то ли еще что - при вызове получаю только NVML_ERROR_INVALID_ARGUMENT Буду безмерно благодарен за помощь! )
  3. Светить портом базы данных в интернет - худшая идея.
  4. Этот текст гугль находит по многим ресурсам с апреля 2020, думаю они или нашли уже себе разработчика, или забили на проект )
  5. Не совсем понял ваш вопрос, что именно вам требуется получить? Скажите, тогда смогу посоветовать как или в какой реализации браузера это доступно.
  6. FireDAC, он из коробки, бесплатно и покрывает 99% всех нужд. И отлично работает.
  7. Если проект был сохранен в редакции не имеющей лицензии Linux, то вы никак не сможете добавить платформу Linux. Сам работаю дома на профе и у заказчика на энтерпрайзе и бесит эта хрень. Выход - удалите в проекте .dproj файл и откройте его в энтерпрайзе, добавьте платформу, сохраните и скопируйте файл .dproj в отдельную папку. Если проект был изменен и сохранен в профе, заменяйте .dproj на сохраненный.
  8. Ширина задана в исходных кодах константой.
  9. Да, используйте поиск по этому форуму по Admob. Вот к примеру один из результатов поиска
  10. Не используйте первую попавшуюся, используйте нормальные дистрибутивы. Но если даже у вас настолько странная ОС, то всегда можете анализировать dmesg
  11. Выполняете любимую консольную команду выводящую сведения о железе (к примеру lspci -v) и парсите вывод.
  12. https://unix.stackexchange.com/questions/58846/viewing-linux-library-executable-version-info
  13. В Линуксе просто нет никаких стандартов для размещения версии внутри бинарника. Ембаркадера об этом не в курсе, но по привычке воткнула пустую заглушку ))) Забейте, и просто делайте свою константу с версией.
  14. Тут все просто - нужно ждать. Ваш код работает корректно только в идеальных условиях. Но если вторая сторона не ответила мгновенно, то вы уже ничего не получите. Перед отправкой/получением вам надо проверить наличие соединения функцией FTCPClient.IOHandler.CheckForDisconnect() - при отсутствии соединения она сгенерит исключение: try FTCPClient.IOHandler.CheckForDisconnect(); except on E: EIdException do begin LogError('TUTM5StreamProtocol.Run CheckForDisconnect ERROR ' + E.Message); Reconnect(); end; end; Читать с ожиданием данных можно несколькими способами: 1. Задавать FTCPClient.IOHandler.ReadTimeout в надежде что в отведенное время что то придет. 2. Использовать FTCPClient.IOHandler.ReadLnWait() для чтения строки. 3. Или обрабатывать проверять наличие данных и читать по мере их поступления: if FTCPClient.IOHandler.CheckForDataOnSource(FConnectParams.Timeouts.TCPReadTimeout) then читаем....
  15. Запоминайте в php последний номер добавленной записи (id), добавьте в api метод вроде GetLastRecordsIDs, который будет возвращать все ID нужных таблиц. Клиент пусть долбится в этот метод раз в N секунд и сверяет свои последние ID с ID сервера, при не совпадении - запрос новых данных. В php хранить последние идешники можно как угодно - файл, сессия, ну или memcache чтоб уж совсем быстро было. Я бы хранил в сессии, и сессию сделал в memcached.
×
×
  • Создать...