Conecte uma GPU ao Raspberry pi

15

Quero conectar uma GPU GT640 a um modelo Raspberry pi B. Sei que não há uma conexão direta e os dados da transferência são muito diferentes, mas. Existe alguma chance de conectar esses dispositivos para aproveitar o poder de processamento da GPU? não é necessário ter uma comunicação em tempo real, mas isso é possível em teoria?

Arturo Veras
fonte
Estou planejando usar o MCS9990 (PCIe para 4 portas USB 2.0 Host Controller) para criar uma placa que conecte o GT640 PCI 3.0 16x ao RPi USB 2.0. Acho que a única dificuldade é o driver desse chip, mas tenho tempo para desenvolvê-lo. Se eu implementar isso, o que acontece com os outros softwares (driver CUDA e GForce) que funcionam sobre o driver da placa?
Arturo Veras
Encontrei uma interface que fará o trabalho. É um controlador periférico PCI Express Gen 2 para USB 3.0 . Possui uma porta PCI Express Gen 2 x1 e uma porta cliente USB 3.0 SuperSpeed. Sei que o USB 3.0 também suporta USB 2.0: + USB de alta velocidade ( USB 2.0 ) 480 Mbit / s + USB SuperSpeed ​​( USB 3.0 ) 5 Gbit / s + PCI Express externo 2.0 × 1 4 Gbit / s + PCI Express 3.0 externo × 16 32Gbit / s Vou ser limitado pela porta USB 2.0 Raspberry pi.
Arturo Veras
3
Então eu sugiro seriamente que você evitar a tentar fazer isso
nagyben
Programar drivers é muito difícil, especialmente quando é algo que nunca foi feito antes
nagyben
O processador principal do Raspberry Pi já é uma GPU baseada no VideoCore IV.
Erkin Alp Güney

Respostas:

3

quase impossível.

é melhor tentar usar o PC box barato, porque há um risco muito alto de fritar o seu GT640 e / ou Raspberry Pi.

lenik
fonte
Por que é quase impossível? Eu estava pensando em usar um chipset adaptador PCIe para USB como MCS9901CV-CC, eu quero tentar o caminho inverso.
Arturo Veras
@ArturoVeras porque esses dispositivos não devem estar conectados e / ou usados ​​juntos. quanto mais os drivers e softwares ausentes que você precisa escrever, o desempenho seria péssimo, tornando todo o esforço discutível.
18714 lenik
Talvez eu esteja perdendo o objetivo. Corrija-me se eu estiver errado, a idéia é conectar a framboesa, de alguma forma, a uma GPU. Mais tarde, podemos fazer um cluster com isso e ter mais poder de processo. A idéia é não aproveitar a velocidade de transmissão PCIe em vez dos milhares de núcleos das GPUs. Então, se eu puder me comunicar, usando o GPIO oa chip como MCS9901CV, será ótimo, porque isso significa que eu posso adicionar mais Raspberry pi e criar um cluster e pronto!
Arturo Veras
1
@ArturoVeras, você conseguiu conectar um processador mais simples ao RaspPi GPIO e se comunicar razoavelmente com ele? Concordo com o lenik, que é uma tarefa extremamente difícil (estude a arquitetura PCIe e a comunicação da GPU primeiro) e o benefício é muito pequeno. Talvez como exercício, tente primeiro se comunicar com a GPU conectada diretamente ao barramento PCIe no seu PC.
ssavec
Não, eu não. Estou estudando o protocolo PCIe e ver se consigo me comunicar com o Raspberry pi GPIO. O que você acha do uso de um PE4L-PM060A ?, É um adaptador PCIe para mPCIe. Percebo que a interface PCI 1x reduz apenas a largura de banda PC1 16x, não me importo com isso. Esse tipo de coisa pode me ajudar porque eu posso usar uma placa de desenvolvimento que possui interface mPCIe.
Arturo Veras
3

Seria possível, mas esteja ciente de que você precisará escrever seus próprios drivers e resolver os problemas de energia, porque duvido que o RasPi consiga alimentar uma GPU PCI / PCI-E completa por conta própria. Lembre-se também de que a CPU também afetará a energia da GPU; portanto, pode ser uma ideia pesquisar antes de tentar. <--- Além disso, você pode usar um cabo riser de 1x a 16x, comumente usado em plataformas de mineração gpu. Existem outros cabos riser alimentados que também utilizam placas adaptadoras para USB.

Zeusking19-Code
fonte
Essa é a minha preocupação agora, as questões de energia. Quais são os problemas que tenho em mente se quiser usar uma fonte de alimentação externa para a GPU?
Arturo Veras
1

Você pode usar um startKIT que possui um slot de placa PCI Express x1 que pode ser usado para fazer interface com uma GPU adequada (você provavelmente precisará escrever seus próprios drivers) e, em seguida, fazer interface com o Pi através do cabeçalho GPIO.

Em resumo: sim, você pode, todo o hardware existente existe e está prontamente disponível, tudo o que você precisa fazer é escrever a lógica da cola, mas não espere que seja fácil.


fonte
Talvez conectando o GPIO ao PCIe com um MCS9901?
Arturo Veras
O startKIT adiciona apenas uma interface de hardware entre PCIe e de RPi? Os drivers que você mencionou devem ser escritos no startKit ou no RPi? Qual é a dificuldade de programar um driver?
Arturo Veras
Muito difícil, provavelmente. Na verdade, não tenho certeza do quanto isso é viável, mas, em teoria, com o startKIT, você terá o hardware e o ambiente necessários para fazer o que quiser.
1
O que você acha do USB 2380 . Parece ser a solução, o único problema é que o GT640 é 16x PCIe e o USB 2380 é para 1x PCIe, mas acho que isso não é problema.
Arturo Veras
@ArturoVeras Difícil dizer sem acesso aos detalhes do produto, mas parece que deve ser possível, ainda assim, esperar que seja difícil. Além disso, você provavelmente não será capaz de obter a plena utilização do poder das placas quando tiver o Pi como host de qualquer maneira.
1

Portanto, para despertar o fio morto, eu não faria isso pessoalmente em um Raspberry Pi. Eu recomendaria pelo menos o Pi 3 com um adaptador mPCIe para PCIe projetado para GPU de mesa e alimentado por uma fonte de alimentação dedicada. Além disso, você precisa garantir que a versão do Linux tenha suporte para driver; se não houver drivers, alguém precisará escrevê-los e isso poderá levar meses com os ativos e o código-fonte corretos. É 100% possível fazer isso dessa maneira, mas você provavelmente terá que ter talento suficiente para escrevê-lo para a comunidade, se ainda não o tiver feito.

Robschwab1
fonte
É claro que todos os drivers Linux lançados pela NVidia serão direcionados para o hardware semelhante ao PC - não acredito que o OP conseguirá que a taxa de transferência de dados faça alguma coisa útil, em vez de FPS (quadros por segundo) até supondo que ele pudesse obter qualquer saída de exibição útil, aposto que seria medida em FPM ou PFH! 8-)
SlySven
Além disso, a NVidia distribui apenas binários fechados em vez de drivers de código-fonte aberto (da mesma maneira que obtemos apenas os blobs binários usados ​​no RPi para operar a GPU), o que torna o desenvolvimento de drivers muito, muito mais difícil, se não impossível ... IMHO .
SlySven
Isso também é verdade e deve ser levado em consideração. Qualquer código que você possa encontrar e fazer engenharia reversa para o pi 3 deve ser valorizado. É provável que uma equipe de hackers éticos ou algumas empresas se unam para criar uma solução. Em ambos os sentidos, seria interessante e muito engraçado ver isso.
Robschwab1
0

Outro problema que você enfrenta é que a CPU afunilava a placa de vídeo, pois sua freqüência era de apenas 700 MHz. Eu tentaria isso com um GT 210 muito mais barato (que você pode encontrar por US $ 20 - US $ 30). Em relação aos drivers, você pode encontrar os drivers Nvidia de código aberto e compilá-los no ARM.

Órbita
fonte
Qual é o problema específico disso? Eu só preciso de alguns cálculos da GPU. Não preciso de aplicativos em tempo real.
Arturo Veras
E esse cartão? Computador de placa única SBC-A510 . Possui uma CPU de 800 MHz e traz um slot PCIe 1x.
Arturo Veras
0

Apenas esbarrando em um tópico antigo. É quase impossível, mas a principal razão é o capitalismo e a burocracia, e não os motoristas.

Certamente, escrever drivers é muito difícil, mas trabalhe com uma equipe épica e isso seria feito antes do nascer do sol.

Ainda mais difícil seria obter acesso aos códigos-fonte existentes para toda a placa de vídeo e talvez até aos códigos-fonte para o BCM2835, BCM2836 ou BCM2837 (Pi 1, 2 e 3, respectivamente). Você precisa deles para aprender como os cartões funcionam por dentro e encontrar uma maneira de interagir com eles.

Você precisaria ser um OEM para obter apenas uma chance de obter os códigos-fonte. Mesmo a fundação Raspberry Pi em si tem tido tem dificuldade com aqueles e tem que resolver em um blob pré-compilados para a interface com o processador e GPU.

Os requisitos de energia não seriam um problema, pois, no momento em que você está implorando pelo [nome da empresa], você já deveria ter percebido. Provavelmente um PSU de PC conectado à placa de vídeo e também alimentando o Pi através de seu trilho de 5V.

PNDA
fonte
0

O MCS9990 é uma ponte PCIe para USB / ISA, projetada para fornecer portas USB / ISA / GPIO adicionais em um sistema com interface PCIe. Ele não pode ser usado para conectar um dispositivo PCIe a um sistema que possui apenas USB, como um RPi. Portanto, essa abordagem está condenada desde o início.

Dmitry Grigoryev
fonte
-1

Seu único problema serão os drivers. Seria muito legal obter uma GPU da Nvidia para trabalhar em um Pi, mas isso é quase tão difícil quanto criar sua própria GPU do zero.

As pessoas estão certas, o hardware não é impossível, mas será incompleto. Você absolutamente precisará de drivers, no entanto. Mesmo se você pudesse escrever por conta própria, eles não seriam otimizados para utilizar tudo na velocidade e nos recursos da GPU.

Eu queria tentar isso com uma antiga Nvidia GForce, mas sou um péssimo programador sem experiência em hackers de hardware.

Achei que era um tiro no escuro, mas enviei um email à NVidia logo após o lançamento do RTX e perguntei se eles compilariam os drivers de algumas GPUs anteriores a 2010 para o Pi e os disponibilizariam para download e mexer ou liberar o código fonte para as pessoas se compilarem. Obviamente eles disseram "não".

Então, aqui está a questão: temos GPUs externas para laptops ( custos desconsiderados ) e o Wi-Fi no novo Pi 3B + deve ser rápido, por que não ver se isso poderia funcionar?

lockheed silverman
fonte
Não tenho certeza se isso fornece uma resposta ou é uma sugestão, embora útil.
Greenonline
@ Greenonline Este foi destinado a ser uma sugestão e um aswer (reler a última frase)
Lockheed Silverman