Моя цель:- Я пытаюсь создать программное обеспечение, в котором система (ноутбук, виртуальная машина или компьютер) с графическим процессором может использоваться совместно с системой, у которой нет графического процессора. Похожие проекты:- rCUDA, sCUDA, Juice Labs, Cricket.
Я столкнулся с трюком LD_PRELOAD, который может использоваться для перехвата вызовов API графического процессора и, таким образом, пересылки их по сети на удаленный графический процессор, выполнения их там и возврата результата обратно. Мои сомнения: -
Есть ли какие-либо другие возможные способы реализации этого.
Скажем, я использую трюк LD_PRELOAD, я выбираю перехват CUDA.
2.1 смогу ли я перехватить API-интерфейсы среды выполнения и драйвера, или мне нужно перехватить их оба.
2.2 существует более 500 API-интерфейсов драйверов cuda, не потребуется ли мне создавать базовую оболочку или фиктивные функции для всех этих API, чтобы их перехватить.
2.3 Можно ли реализовать эту оболочку или прокладку API с использованием Rust или C++, или мне следует сделать это на 'c', например, использование других языков вызывает проблемы с типами и прочим.
[b]Моя цель:-[/b] Я пытаюсь создать программное обеспечение, в котором система (ноутбук, виртуальная машина или компьютер) с графическим процессором может использоваться совместно с системой, у которой нет графического процессора. [b]Похожие проекты:-[/b] rCUDA, sCUDA, Juice Labs, Cricket. Я столкнулся с трюком LD_PRELOAD, который может использоваться для перехвата вызовов API графического процессора и, таким образом, пересылки их по сети на удаленный графический процессор, выполнения их там и возврата результата обратно. [b]Мои сомнения: -[/b] [list] [*]Есть ли какие-либо другие возможные способы реализации этого. [*]Скажем, я использую трюк LD_PRELOAD, я выбираю перехват CUDA.
[b]2.1[/b] смогу ли я перехватить API-интерфейсы среды выполнения и драйвера, или мне нужно перехватить их оба.
[b]2.2[/b] существует более 500 API-интерфейсов драйверов cuda, не потребуется ли мне создавать базовую оболочку или фиктивные функции для всех этих API, чтобы их перехватить.
[b]2.3[/b] Можно ли реализовать эту оболочку или прокладку API с использованием Rust или C++, или мне следует сделать это на 'c', например, использование других языков вызывает проблемы с типами и прочим. [/list]