СИСТЕМА ОБЛАЧНОГО РАБОЧЕГО СТОЛА, И СПОСОБ КОДИРОВАНИЯ СО СЖАТИЕМ ПОСЛЕДОВАТЕЛЬНОСТИ ИЗОБРАЖЕНИЙ, И СООТВЕТСТВУЮЩИЙ НОСИТЕЛЬ ДАННЫХ
CLOUD DESKTOP SYSTEM AND METHOD OF CODING WITH COMPRESSION OF IMAGE SEQUENCES, AND CORRESPONDING DATA STORAGE

Область техники, к которой относится настоящее изобретение
Настоящее изобретение связано с областью облачных вычислений и, в частности, с системой облачного рабочего стола и со способом кодирования со сжатием последовательности изображений и соответствующим носителем данных.
Предшествующий уровень техники настоящего изобретения
В условиях быстрого развития мобильного Интернета приложения для облачных рабочих столов используются все большим числом людей. Концепция облачного рабочего стола отделяет среду рабочего стола персонального компьютера от физической машины за счет режима облачных вычислений, и становится службой рабочего стола, которую можно предоставлять дистанционно. С другой стороны, вычислительные ресурсы и ресурсы памяти, необходимые для среды рабочего стола персонального компьютера, сконцентрированы на сервере для замены локальных вычислительных ресурсов и ресурсов памяти клиента. Вычислительные ресурсы и ресурсы памяти сервера являются коллективно используемыми и масштабируемыми, и можно по мере необходимости распределить ресурсы различным клиентам и улучшить использование ресурсов. С помощью приложений для облачных рабочих столов клиент может получить доступ к облачному рабочему столу для работы с офисными документами на терминальном устройстве, которое можно подключить к сети, например, на персональном компьютере ПК, на ноутбуке, на нетбуке, на планшетном ПК или на мобильном телефоне, и это означает наступление новой эры мобильного офиса.
В рамках архитектуры облачного рабочего стола VDI (инфраструктура виртуальных рабочих столов) один сервер может одновременно содержать от десятков до сотен виртуальных машин. Центр управления сервером может назначать виртуальные машины пользователям. После того, как пользователи подключены к виртуальным машинам с помощью предустановленного на терминале клиента протокола транспортного уровня, пользователям предоставляется виртуальный рабочий стол.
Для предоставления пользователям содержимого виртуального рабочего стола сервер одновременно сжимает и кодирует последовательности изображений рабочих столов десятков и даже сотен виртуальных машин. Для таких задач кодирования требуется большой объем ресурсов ЦП, что приводит к ограничению максимального числа виртуальных машин, которые можно разместить (запустить) на одном сервере. Соответственно возрастают затраты.
Краткое раскрытие настоящего изобретения
Ниже приведено краткое изложение подробно описанного в настоящем документе предмета изобретения. Это краткое изложение не предназначено для ограничения объема правовой охраны формулы настоящего изобретения.
В настоящем изобретении предложена система облачного рабочего стола и способ кодирования со сжатием последовательности изображений и соответствующий носитель данных, для снижения, по меньшей мере, использования ЦП компьютера сервера.
В настоящем изобретении предложен способ кодирования со сжатием последовательности изображений для системы облачного рабочего стола, при этом система включает в себя сервер и, по меньшей мере, одно внешнее устройство, которые соединены с помощью шины. Способ используется для сервера, и он предусматривает:
вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме;
получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования; и
вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным.
В настоящем изобретении также предложена система облачного рабочего стола, причем система включает в себя сервер и, по меньшей мере, одно внешнее устройство; компьютер сервера включает в себя модуль кодирования изображения, память и процессор; при этом в памяти хранится компьютерная программа для кодирования со сжатием последовательности изображений, и процессор выполняет компьютерную программу для реализации следующих этапов:
вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме;
получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования; и
вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным.
В настоящем изобретении дополнительно предложен машиносчитываемый носитель данных, причем на носителе хранится компьютерная программа для кодирования со сжатием последовательности изображений, компьютерная программа выполняется, по меньшей мере, одним процессором для реализации следующих этапов:
вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться на сервере в параллельном конвейерном режиме;
получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования; и
вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным, при этом сервер и множество внешних устройств образуют систему облачного рабочего стола.
Имеются следующие полезные эффекты настоящего изобретения:
Согласно системе облачного рабочего стола, способу кодирования со сжатием последовательности изображений и соответствующего носителя из настоящего изобретения, процедура кодирования, которая пригодна для выполнения в параллельном конвейерном режиме, имеет высокую степень сложности и потребляет большие ресурсы ЦП в ходе процесса кодирования со сжатием последовательности изображений рабочего стола, переносится для своего выполнения из компьютера сервера на внешнее устройство. Одновременно с повышением скорости кодирования можно также снизить использование ЦП компьютера сервера. Таким образом, один сервер может создать больше виртуальных машин для использования большим числом пользователей, что снижает расходы и решает проблему, когда работа пользователя не является плавной в режиме высокого разрешения экрана.
Дополнительные аспекты будут рассмотрены при чтении и изучении фигур и подробного описания.
Краткое описание фигур
На фиг. 1 показана блок-схема алгоритма способа кодирования для системы облачного рабочего стола по варианту осуществления настоящего изобретения;
На фиг. 2 показана блок-схема платформы системы облачного рабочего стола, основанной на неоднородной платформе с поддержкой OpenCL по варианту осуществления настоящего изобретения;
На фиг. 3 показана упрощенная блок-схема системы облачного рабочего стола по варианту осуществления настоящего изобретения;
Подробное раскрытие настоящего изобретения
В настоящем изобретении предложена система облачного рабочего стола и способ кодирования со сжатием последовательности изображений и соответствующий носитель данных. Настоящее изобретение будет подробно описано ниже со ссылками на соответствующие фигуры совместно с вариантами осуществления. Следует понимать, что описанные в настоящем документе конкретные варианты осуществления являются просто иллюстративными для настоящего изобретения и не предназначены для ограничения изобретения.
Пример 1
Как показано на фиг. 1, в варианте осуществления настоящего изобретения предложен способ кодирования изображения для системы облачного рабочего стола, при этом система включает в себя сервер и, по меньшей мере, одно внешнее устройство, причем сервер и, по меньшей мере, одно внешнее устройство соединены шиной. Способ используется для сервера, и он предусматривает следующие этапы с S101 по S103:
На этапе S101 проводится вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме;
На этапе S102 проводится получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования.
На этапе S103 проводится вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным.
В варианте осуществления настоящего изобретения как сервер, так и (периферийное) внешнее устройства относятся к стороне сервера системы облачного рабочего стола. Следовательно, чтобы отличить сервер от внешнего устройства, термин «компьютер сервера» используется в настоящем изобретении для обозначения сервера.
В варианте осуществления настоящего изобретения проводится вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме, затем проводится получение от внешнего устройства итоговых данных, найденных (внешним устройством) после выполнения процедуры кодирования, и, наконец, проводится вызов модуля кодирования изображения, так что модуль кодирования изображения завершает кодирование изображения для облачного рабочего стола согласно итоговым данным. Таким образом, процедура кодирования, которая пригодна для выполнения в параллельном конвейерном режиме, имеет высокую степень сложности и потребляет большие ресурсы ЦП в ходе процесса кодирования со сжатием последовательности изображений рабочего стола, перенесена для своего выполнения из компьютера сервера на внешнее устройство. Одновременно с повышением скорости кодирования можно также снизить использование ЦП компьютера сервера. Таким образом, один сервер может создать больше виртуальных машин для использования большим числом пользователей, что снижает расходы и решает проблему, когда работа пользователя не является плавной в режиме высокого разрешения экрана.
Конечно, в варианте осуществления настоящего изобретения можно применить стандарт OpenCL (открытый язык вычислений) в конкретной реализации, так что у программы будет высокая степень переносимости.
Шиной может быть шина PCIe (peripheral component interconnect express).
В варианте осуществления настоящего изобретения кодировщик по стандарту Н.264 может быть выбран в качестве модуля кодирования; программируемая логическая интегральная схема может быть выбрана в качестве внешнего устройства; и процедура дискретного косинусного преобразования может быть выбрана в качестве процедуры кодирования.
Например, как показано на фиг. 2, в варианте осуществления настоящего изобретения сервером является компьютер сервера (на стороне компьютера сервера), ПЛИС (программируемая логическая интегральная схема) является устройством (на стороне устройства), и компьютер сервера и ПЛИС соединены шиной PCIe. Высокая пропускная способность шины PCIe делает незначительной задержку передачи данных между стороной компьютера сервера и стороной устройства. К одному компьютеру сервера можно подключить несколько устройств ПЛИС. Сервер Spice (процесс виртуальной машины) выполняется на стороне компьютера сервера. Часть процедуры кодирования по Н.264, которая непригодна для выполнения в параллельном конвейерном режиме, также выполняется на стороне компьютера сервера, в то время как часть процедуры кодирования по Н.264, которая более сложная и которая пригодна для выполнения в параллельном конвейерном режиме, например, процедура DCT (дискретное косинусное преобразование), выполняется на устройстве ПЛИС.
В варианте осуществления настоящего изобретения этап вызова внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме, может включать в себя:
установление, после отслеживания запроса подключения от любой виртуальной машины, ассоциации между виртуальной машиной и внешним устройством; и
вызов ассоциированного внешнего устройства для выполнения процедуры кодирования.
После отслеживания запроса подключения от любой виртуальной машины и до установления соединения между виртуальной машиной и внешним устройством, способ может дополнительно предусматривать:
выполнение процесса отслеживания устройства, чтобы заставить процесс отслеживания устройства запустить главный поток для отслеживания запроса виртуальной машины, и чтобы заставить процесс отслеживания устройства проверить доступные внешние устройства и создать множество интерактивных потоков согласно количеству доступных внешних устройств.
Этап получения от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования, может включать в себя:
создание сокета, чтобы заставить назначенный интерактивный поток получить итоговые данные с ассоциированного внешнего устройства через сокет и передать итоговые данные на модуль кодирования изображения.
Способ кодирования изображения в варианте осуществления настоящего изобретения специально описан согласно конкретной системе облачного рабочего стола на неоднородной платформе OpenCL. В способе предусмотрены следующие этапы с S1 по S8:
На этапе S1: Запускается процесс отслеживания устройства. Процесс отслеживания устройства создает главный поток. Главный поток создает сокет согласно заранее заданному номеру порта и выполняет отслеживание (прослушивание). Одновременно процесс отслеживания устройства проверяет все доступные устройства ПЛИС за счет вызова (инициирования) OpenCL API (прикладного программного интерфейса), создает то же самое количество (N) интерактивных потоков согласно количеству доступных устройств ПЛИС, и назначает одно неизменное внешнее устройство ПЛИС (периферийную ПЛИС) каждому интерактивному потоку. Интерактивный поток отвечает за взаимодействие между внешним устройством ПЛИС и кодировщиком Н.264 на компьютере сервера. Когда интерактивный поток только что создан, он проводит инициализацию своей соответствующей платформы устройства ПЛИС, и создает ядро программы за счет вызова OpenCL API. Ядро программы завершает преобразование DCT во время процесса кодирования.
На этапе S2: При запуске кодирования последовательности изображений рабочего стола сервер Spice вызывает функцию Open кодировщика Н.264. Функция Open также создает сокет для запроса установления соединения с процессом отслеживания устройства, в дополнение к завершению инициализации кодировщика.
На этапе S3: Когда главный поток процесса отслеживания устройства отслеживает (слышит) запрос соединения виртуальной машины, главный поток в ответ на запрос устанавливает соединение с виртуальной машиной, и назначает, согласно принципу распределения нагрузки, один интерактивный поток для обработки взаимодействия между виртуальной машиной и внешним устройством ПЛИС. Интерактивный поток устанавливает ассоциацию между виртуальной машиной и ее соответствующим внешним устройством ПЛИС.
На этапе S4: Сервер Spice посылает данные YUV (способ кодирования цвета) захваченного изображения рабочего стола на кодировщик Н.264 для сжатия.
На этапе S5: В момент, когда кодировщик Н.264 выполняет кодирование со сжатием принятых данных YUV, когда выполняется стадия, соответствующая ядру в указанном выше этапе S1, текущие требуемые данные пересылаются в процесс отслеживания устройства по каналу связи через сокет (передача данных через сокет). Когда интерактивный поток процесса отслеживания устройства принимает данные, он выполняет функцию ядра за счет вызова OpenCL API на внешнем устройстве ПЛИС, соответствующем виртуальной машине. После завершения выполнения функции ядра интерактивный поток считывает результат выполнения с внешнего устройства ПЛИС, и затем посылает результат выполнения на кодировщик Н.264 по каналу связи через сокет.
На этапе S6: Кодировщик Н.264 процесса виртуальной машины возвращает сжатый поток кода на сервер Spice после завершения кодирования текущего изображения.
На этапе S7: После завершения всего кодирования процесс виртуальной машины на сервере Spice вызывает функцию Close кодировщика Н.264. При выполнении функции Close, в дополнение к завершению освобождения кодировщика, по каналу связи через сокет также посылается команда Uninit. После того, как интерактивная программа принимает команду Uninit, интерактивная программа отменяет ассоциацию между виртуальной машиной и ее соответствующим внешним устройством ПЛИС, и затем завершается работа канала связи по сокету между процессом виртуальной машины и процессом отслеживания устройства.
На этапе S8: Перед удалением каждого интерактивного потока на соответствующем внешнем устройстве ПЛИС выполняются прекращение работы ядра и освобождение памяти.
Пример 2
Как показано на фиг. 3, в варианте осуществления настоящего изобретения предложена система облачного рабочего стола, причем система включает в себя сервер и, по меньшей мере, одно внешнее устройство; компьютер сервера включает в себя модуль кодирования изображения, память и процессор; при этом в памяти хранится компьютерная программа для кодирования со сжатием последовательности изображений, и процессор выполняет компьютерную программу для реализации следующих этапов:
вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме;
получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования;
вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным.
Кодирующим модулем является кодировщик по стандарту Н.264; внешним устройством является программируемая логическая интегральная схем; а процедурой кодирования является процедура дискретного косинусного преобразования.
В варианте осуществления настоящего изобретения этап вызова внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме, может включать в себя:
установление, после отслеживания (прослушивания) запроса подключения от любой виртуальной машины, ассоциации между виртуальной машиной и внешним устройством; и
вызов ассоциированного внешнего устройства для выполнения процедуры кодирования.
Процессор выполняет компьютерную программу для дальнейшей реализации следующих этапов:
выполнение процесса отслеживания устройства, чтобы заставить процесс отслеживания устройства запустить главный поток для отслеживания запроса виртуальной машины, и чтобы заставить процесс отслеживания устройства проверить доступные внешние устройства и создать множество интерактивных потоков согласно количеству доступных внешних устройств.
Этап установления, после отслеживания запроса подключения от любой виртуальной машины, ассоциации между виртуальной машиной и внешним устройством, включает в себя:
установление соединения с виртуальной машиной после того, как главный поток отслеживает запрос соединения виртуальной машины, и назначение интерактивного потока, так что назначенный интерактивный поток устанавливает ассоциацию между виртуальной машиной и внешним устройством, соответствующем интерактивному потоку.
Этап получения от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования, включает в себя:
создание сокета, чтобы заставить назначенный интерактивный поток получить итоговые данные с ассоциированного внешнего устройства через сокет и передать итоговые данные на модуль кодирования изображения.
В варианте осуществления настоящего изобретения проводится вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме за счет вызова внешнего устройства, затем проводится получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования, и, наконец, проводится вызов модуля кодирования изображения, так что модуль кодирования изображения завершает кодирование изображения для облачного рабочего стола согласно итоговым данным. Таким образом, процедура кодирования, которая пригодна для выполнения в параллельном конвейерном режиме, имеет высокую степень сложности и потребляет большие ресурсы ЦП в ходе процесса кодирования со сжатием последовательности изображений рабочего стола, перенесена для своего выполнения из компьютера сервера на внешнее устройство. Одновременно с повышением скорости кодирования можно также снизить использование ЦП компьютера сервера. Таким образом, один сервер может создать больше виртуальных машин для использования большим числом пользователей, что снижает расходы и решает проблему, когда работа пользователя не является плавной в режиме высокого разрешения экрана.
Показан вариант осуществления настоящего изобретения.
Как показано на фиг. 2, вариант осуществления настоящего изобретения предназначен для реализации системы облачного рабочего стола, основанного на неоднородной платформе OpenCL (открытый язык вычислений), в которой основанная на стандарте OpenCL неоднородная платформа установлена на стороне сервера облачного рабочего стола. Часть кодирования со сжатием последовательности изображений рабочего стола перенесена на внешнее устройство, причем внешним устройством может быть ПЛИС. Таким образом, внешнее устройство представляет собой аппаратное устройство ускорения для снижения использования ЦП сервера, для улучшения взаимодействия пользователя с облачным рабочим столом, и для решения проблемы, когда работа пользователя не является плавной в режиме высокого разрешения экрана.
В варианте осуществления настоящего изобретения на сервере системы облачного рабочего стола набор аппаратных устройств ПЛИС ускорения подключен с помощью интерфейса PCIe. На стороне компьютера сервера процесс отслеживания устройства используется для управления устройствами ускорения, и назначения модулей кодирования DCT (дискретное косинусное преобразование) со сжатием последовательности изображений для различных рабочих столов устройствами ПЛИС аппаратного ускорения согласно текущей загруженности ресурсов ЦП. Таким образом, улучшается производительность системы сервера и устраняется проблема запаздывания/неравномерности, вызванная нехваткой ресурсов ЦП. В подсистеме ускорения ПЛИС после того, как входная последовательность потока фрагментов изображения рабочего стола обработана логической схемой, выходной спектр результата преобразования сосредоточен в низкочастотной области, и результат возвращается на компьютер сервера по интерфейсу PCIe. При этом сервер работает совместно с устройствами ускорения для завершения процесса кодирования со сжатием потока изображений рабочего стола в системе облачного рабочего стола.
В частности, в варианте осуществления настоящего изобретения аппаратура системы состоит из сервера и устройств ПЛИС аппаратного ускорения. Устройство ускорения могут быть типа ПЛИС, но они не ограничены этим типом аппаратного устройства. Сервер и устройства ПЛИС соединены шиной PCIe, и один сервер может быть соединен с несколькими устройствами ПЛИС. Кроме того, на устройствах ПЛИС выполняется преобразование DCT, что эффективно снижает ресурсы ПЛИС, снижает требования к количеству ПЛИС и, таким образом, снижает повышение затрат, вызванных увеличением количества ПЛИС.
В варианте осуществления настоящего изобретения процесс отслеживания устройства выполняется на стороне сервера, и процесс отслеживания устройства отвечает за управление устройствами ПЛИС и за взаимодействие между устройствами ПЛИС и кодировщиками Н.264 на компьютере сервера. Например:
Процесс отслеживания устройства работает для управления и взаимодействия на компьютере сервера, процесс отслеживания устройства запускает главный поток. Главный поток создает сокет и выполняет отслеживание. Одновременно процесс отслеживания устройства проверяет все доступные устройства ПЛИС за счет вызова OpenCL API, и создает то же самое количество (N) интерактивных потоков согласно количеству доступных устройств ПЛИС. Один интерактивный поток отвечает за взаимодействие между одним внешним устройством ПЛИС и кодировщиком Н.264 на компьютере сервера.
Когда интерактивный поток только что создан, он проводит инициализацию своей соответствующей платформы устройства ПЛИС, и создает ядро программы за счет вызова OpenCL API. Ядро программы завершает процедуру преобразования DCT во время процесса кодирования. При запуске кодирования последовательности изображений рабочего стола сервер Spice вызывает функцию Open кодировщика Н.264. Функция Open также создает сокет для запроса установления соединения с процессом отслеживания устройства, в дополнение к завершению инициализации кодировщика. На стороне компьютера сервера, когда главный поток процесса отслеживания устройства отслеживает запрос соединения виртуальной машины, в ответ на запрос устанавливается соединение, и один интерактивный поток назначается согласно принципу распределения нагрузки для обработки взаимодействия между виртуальной машиной и внешним устройством ПЛИС. Интерактивный поток устанавливает ассоциацию между виртуальной машиной и ее соответствующим внешним устройством ПЛИС. В момент, когда кодировщик Н.264 виртуальной машины выполняет кодирование со сжатием последовательности изображений рабочего стола по стандарту Н.264, когда выполняется стадия, соответствующая ядру на первом этапе, подлежащий текущему вызову тип ядра и требуемые данные пересылаются в процесс отслеживания устройства по каналу связи через сокет. Когда интерактивный поток процесса отслеживания устройства принимает данные, он выполняет функцию ядра, соответствующую типу ядра, за счет вызова OpenCL API на внешнем устройстве ПЛИС, соответствующем виртуальной машине. После завершения выполнение функции ядра интерактивный поток считывает результат выполнения с внешнего устройства ПЛИС, и затем посылает результат выполнения на кодировщик Н.264 по каналу связи через сокет. После завершения всего кодирования процесс виртуальной машины на сервере Spice вызывает функцию Close кодировщика Н.264. При выполнении функции Close, в дополнение к завершению освобождения кодировщика, по каналу связи через сокет также посылается команда Uninit. После того, как интерактивная программа принимает команду Uninit, интерактивная программа отменяет ассоциацию между виртуальной машиной и ее соответствующим внешним устройством ПЛИС, и затем завершается работа канала связи по сокету между процессом виртуальной машины и процессом отслеживания устройства. Перед удалением каждого интерактивного потока следует выполнить прекращение работы ядра и освобождение памяти на соответствующем внешнем устройстве ПЛИС.
В варианте осуществления настоящего изобретения модуль кодирования DCT, который пригоден для выполнения обработки в параллельном конвейерном режиме, имеет высокую степень сложности и потребляет большие ресурсы ЦП в ходе процесса кодирования со сжатием последовательности изображений рабочего стола, перенесен для своего выполнения из компьютера сервера на внешнее устройство ПЛИС. Одновременно с повышением скорости кодирования можно также снизить использование ЦП компьютера сервера. Таким образом, один сервер может создать больше виртуальных машин для использования большим числом пользователей, что снижает расходы и решает проблему, когда работа пользователя не является плавной в режиме высокого разрешения экрана. Кроме того, в настоящем изобретении используется стандарт OpenCL, который обеспечивает высокую степень переносимости программы.
Пример 3
В варианте осуществления настоящего изобретения предложен машиносчитываемый носитель данных, причем на носителе хранится компьютерная программа для кодирования со сжатием последовательности изображений, компьютерная программа выполняется, по меньшей мере, одним процессором для реализации следующих этапов:
вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться на сервере в параллельном конвейерном режиме;
получение от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования;
вызов модуля кодирования изображения для принудительного завершения модулем кодирования изображения кодирования и сжатия последовательности изображений для облачного рабочего стола согласно итоговым данным, при этом сервер и множество внешних устройств образуют систему облачного рабочего стола.
В варианте осуществления настоящего изобретения вызов внешнего устройства для выполнения процедуры кодирования, которая заранее установлена в программируемом модуле кодирования изображения и может выполняться в параллельном конвейерном режиме, может включать в себя:
установление, после отслеживания запроса подключения от любой виртуальной машины, ассоциации между виртуальной машиной и внешним устройством;
вызов ассоциированного внешнего устройства для выполнения процедуры кодирования.
Процессор выполняет компьютерную программу для дальнейшей реализации следующих этапов:
выполнение процесса отслеживания устройства, чтобы заставить процесс отслеживания устройства запустить главный поток для отслеживания запроса виртуальной машины, и чтобы заставить процесс отслеживания устройства проверить доступные внешние устройства и создать множество интерактивных потоков согласно количеству доступных внешних устройств.
этап установления, после отслеживания запроса подключения от любой виртуальной машины, ассоциации между виртуальной машиной и внешним устройством, включает в себя:
установление соединения с виртуальной машиной после того, как главный поток отслеживает запрос соединения виртуальной машины, и назначение интерактивного потока, так что назначенный интерактивный поток устанавливает ассоциацию между виртуальной машиной и внешним устройством, соответствующим интерактивному потоку.
Этап получения от внешнего устройства итоговых данных, найденных после выполнения процедуры кодирования, включает в себя:
создание сокета, чтобы заставить назначенный интерактивный поток получить итоговые данные с ассоциированного внешнего устройства через сокет и передать итоговые данные на модуль кодирования изображения.
Кодирующим модулем является кодировщик по стандарту Н.264; внешним устройством является программируемая логическая интегральная схем; а процедурой кодирования является процедура дискретного косинусного преобразования.
Специалист в этой области техники понимает, что описанные выше функциональные модули или блоки во всех или в части этапов способа, система и аппаратура могут быть программными, программно-аппаратным, аппаратными и их подходящими комбинациями. В случае аппаратной реализации разделение на функциональные модули или блоки в указанном выше описании может не соответствовать разделению на физические компоненты. Например, один физический компонент может выполнять несколько функций, или одна функция или этап может совместно выполняться несколькими физическими компонентами. Некоторые или все компоненты могут быть реализованы как программы, выполняемые процессорами, например, цифровыми сигнальными процессорами или микроконтроллерами, аппаратурой или интегральными схемами, например, заказными специализированными интегральными схемами. Такое программное обеспечение может распространяться на машиносчитываемом носителе данных, который может включать в себя носитель данных для компьютера (или физический носитель данных) и коммуникационную среду (или среду передачи). Как известно специалистам в этой области техники, термин «компьютерный носитель данных» включает в себя как энергозависимые, так и энергонезависимые, съемные и несъемные носители, реализованные любым способом или по любой технологии для хранения информации (например, машиносчитываемые команды программы, структуры данных, модули программы или другие данные). Компьютерный носитель данных включает в себя, помимо прочего, оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), электрически стираемое программируемое постоянное запоминающее устройство (ЭСППЗУ), флеш-память или другие технологии памяти, постоянное запоминающее устройство на компакт-диске (CD-ROM), цифровой многоцелевой диск (DVD) или другую оптическую дисковую память, магнитную кассету, магнитную ленту, память на магнитном диске или другую аппаратуру магнитной памяти, или любые другие носители данных, используемые для хранения нужной информации, которые могут быть доступны для компьютера. Более того, специалистам в этой области техники хорошо известно, что коммуникационная среда обычно включает в себя считываемые компьютером команды программы, структуры данных, модули программ или другие данные в виде модулированного сигнала данных, например, несущего сигнала или другого механизма передачи, и может включать в себя любую среду передачи информации.
Хотя настоящая патентная заявка была описана с помощью конкретных примеров настоящего изобретения, специалист в этой области техники может предложить модификации настоящего изобретения без отклонения от идеи изобретения. Специалист в этой области техники может внести различные модификации без отклонения от объема настоящего изобретения, так что оно по-прежнему будет в рамках объема настоящего изобретения.
Промышленная применимость
Согласно системе облачного рабочего стола, способу кодирования со сжатием последовательности изображений и соответствующему носителю из настоящего изобретения, процедура кодирования, которая пригодна для выполнения в параллельном конвейерном режиме, имеет высокую степень сложности и потребляет большие ресурсы ЦП в ходе процесса кодирования со сжатием последовательности изображений рабочего стола, переносится для своего выполнения из компьютера сервера на внешнее устройство. Одновременно с повышением скорости кодирования можно также снизить использование ЦП компьютера сервера. Таким образом, один сервер может создать больше виртуальных машин для использования большим числом пользователей, что снижает расходы и решает проблему, когда работа пользователя не является плавной в режиме высокого разрешения экрана.