Ненадежный код GPGPU (OpenCL и т. Д.) - это безопасно? Какие риски? - PullRequest
11 голосов
/ 08 января 2011

Существует много подходов к запуску ненадежного кода на типичном ЦП: песочницы, поддельные корни, виртуализация ...

Как насчет ненадежного кода для GPGPU (OpenCL, cuda или уже скомпилированный)?

Предполагая, что память на видеокарте очищена перед запуском такого стороннего ненадежного кода,

  • есть ли угрозы безопасности?
  • Какие риски?
  • Есть ли способ предотвратить их?
    • Возможно ли песочница возможно / доступно на gpgpu?
    • может быть, бинарный инструментарий?
    • другие техники?

P.S. Меня больше интересует безопасность уровня двоичного кода gpu, а не безопасность языка программирования gpgpu высокого уровня (но эти решения также приветствуются). Я имею в виду, что ссылки на коды операций gpu (машинный код a.k.a) приветствуются.

Ответы [ 2 ]

2 голосов
/ 11 января 2011

Код GPU определенно может быть рискованным.Современные графические процессоры не обеспечивают защиту памяти, поэтому, по сути, каждое ядро ​​графического процессора может получить доступ ко всей видеопамяти.Я не уверен, возможно ли получить доступ к памяти хоста (возможно, через отображение памяти?).Ядра не выгружаются, они могут «перегружать» графический процессор, и это приводит к зависанию, если оно также используется для вывода графики.(Обычно драйвер завершает работу ядер, которые не выходят через несколько секунд)

Предположительно, новая серия графических процессоров AMD имеет некоторые функции защиты памяти, но я сомневаюсь, что они используются в данный момент.Можно разделить мультипроцессоры GPU на несколько сегментов с помощью аппаратного обеспечения текущего поколения (GeForce 4xx +, Radeon 6xxx +), но это не совсем то же самое, что многозадачность с прерыванием в реальном времени.;)

2 голосов
/ 08 января 2011

Риски такие же, как и в любой программе на Си.Кроме того, вы можете заморозить весь рабочий стол.Мне удалось сделать это один раз, выполнив очень длинный расчет.В результате экран больше не обновлялся, поэтому, например, время в виджете часов не изменилось за этот период.Таким образом, вы должны использовать две видеокарты - одну для видеокарты.

...