I want to connect a GPU GT640 to a Raspberry pi model B. I know there is not a direct connection and the tranfer data are very differents but. Is there any chance to connect this devices in order to take advantage of GPU processing power? is not necessary to have a real time communication, but is this possible in theory?
-
I am planning to use MCS9990 (PCIe to 4-Port USB 2.0 Host Controller) to make a board that connects the GT640 PCI 3.0 16x with the RPi USB 2.0. I think the only difficulty is the driver of that chip but i have time to develop it. If i implement this, what about the other software, (CUDA and GForce driver) they work on top of the board driver?– Arturo VerasJan 23, 2014 at 18:23
-
I found an interface that will do the job. It is a PCI Express Gen 2 to USB 3.0 peripheral Controller. It features one PCI Express Gen 2 x1 port and one USB 3.0 SuperSpeed client port. I know that USB 3.0 also supports USB 2.0: + USB Hi-Speed (USB 2.0) 480 Mbit/s + USB SuperSpeed (USB 3.0) 5 Gbit/s + External PCI Express 2.0 ×1 4 Gbit/s + External PCI Express 3.0 ×16 32Gbit/s I am going to be limited by the USB 2.0 Raspberry pi port.– Arturo VerasJan 29, 2014 at 16:36
-
3Then i seriously suggest you avoid trying to do this– nagybenFeb 23, 2014 at 23:18
-
Programming drivers is very difficult, especially when it is something that has never been done before– nagybenFeb 24, 2014 at 17:41
-
Raspberry Pi's main processor already is a GPU based on VideoCore IV.– Erkin Alp GüneyMay 17, 2017 at 9:34
8 Answers
almost impossible.
you'd better try to use cheap PC box instead, because there's a very high risk to fry your GT640 and/or Raspberry Pi.
-
Why is almos imposible ? i was thinking to use a PCIe to usb adapter chipset like MCS9901CV-CC, i want to try the inverse way. Jan 16, 2014 at 20:28
-
@ArturoVeras because these devices are not supposed to be connected and/or used together. let alone the missing drivers and software you have to write, the performance would be abysmal, rendering the whole endeavour moot.– lenikJan 16, 2014 at 23:44
-
Maybe i am missing the point. Correct me if I'm wrong, the idea is to connect the raspberry, some how, to a GPU. Later we can do a cluster with this and have more process power. The idea is not to take advantage of transmission PCIe speed instead of the GPUs thousand cores. So , if i can communicate, using GPIO o a chip like MCS9901CV, there will be great because that means that i can add more Raspberry pi and make a cluster and voila!. Jan 17, 2014 at 13:52
-
1@ArturoVeras have you managed to connect some simpler processor to the RaspPi GPIO and communicate reasonably with it? I agree with lenik, that it is extremely difficult task (study the PCIe architecture and GPU communication first) and the benefit is very small. Maybe as an exercise first try to communicate with GPU connected directly to the PCIe bus in your PC.– ssavecJan 17, 2014 at 16:24
-
No i don't. I am studying the PCIe protocol and see if i can communicate with the Raspberry pi GPIO. What to you think of using a PE4L-PM060A?, is a PCIe to mPCIe adapter. I notice that PCI 1x interface only reduce the PC1 16x bandwidth, i do not mind that. This kind of things can help me because i can use a development board that it has mPCIe interface. Jan 20, 2014 at 17:16
It would be possible, but please be aware that you will need to write your own drivers and sort out the power issues, because I doubt the RasPi will be able to power a full PCI/PCI-E GPU on it's own. Please also bare in mind that the CPU will also affect the GPU's power, so it may be an idea to research before you try. <--- Adding to that, you can use a 1x to 16x powered riser cable commonly used in gpu mining rigs. There are other powered riser cables that utilize adapter cards for USB as well.
-
That's my concern right now, the power issues. What are the issues that i have in mind if i want to use an external power supply to the GPU ? Jan 29, 2014 at 18:25
You could use a startKIT which has a PCI Express x1 card slot which you could use to interface to a suitable GPU (you would likely have to write your own drivers), and this could then interface with the Pi though the GPIO header.
So in short: yes you can, all the hardware to do so exists and is readily available, all you have to do is write glue logic, but don't expect it to be easy.
-
-
The startKIT only adds a hardware interface between PCIe and de RPi? The drivers that you mention must be written in the startKit or in the RPi? What is the difficulty of programming a driver? Jan 20, 2014 at 17:09
-
Very difficult probably. I'm not actually sure how feasible this is, but in theory with the startKIT you will have the required hardware and environment to do what you want to.– user8894Jan 20, 2014 at 19:00
-
1What do you think about USB 2380. It seems to be the solution, the only problem is that GT640 is 16x PCIe and USB 2380 is for 1x PCIe, but i think this is not problem at all. Jan 21, 2014 at 18:40
-
@ArturoVeras Difficult to say with no access to product details, but seems like it should be possible, still, expect it to be difficult. Also you probably won't be able to get the full utilisation of the cards power when it has the Pi as a host anyway.– user8894Jan 21, 2014 at 20:31
So, to wake the dead thread, I would not do it on a Raspberry Pi personally. I would recommend at least the Pi 3 with a mPCIe to PCIe adapter designed for desktop GPU and powered by a dedicated power supply. Also you need to make sure that the version of Linux has driver support for it; if there's no drivers someone has to write them, and that can take months with the right assets and source code. It is 100% possible to do this way, but you will likely have to be talented enough to write it for the community if it has not been done already.
-
Of course any Linux drivers that NVidia release are going to be targeted at the PC-like hardware - I cannot believe that the OP is going to be able to get the data throughput to do anything useful, instead of FPS (frames per second) even assuming he could get any useful display output I'd bet it would be measured in FPM or PFH! 8-)– SlySvenApr 27, 2016 at 3:42
-
Also NVidia only distributes closed binaries rather than open source code drivers (in the same way that we only get the binary blobs that is used on the RPi to operate the GPU) which makes developing drivers much, much harder if not impossible... IMHO.– SlySvenApr 27, 2016 at 3:53
-
This is also true and should be taken into account. Any code that you can find and reverse engineer for the pi 3 should be cherished. Likely it will take a team of ethical hackers or a few companies to come together to create a solution. In either sense it would be interesting and borderline funny to see. May 23, 2016 at 4:31
Another problem you face is that the CPU would bottleneck the graphics card since it is clocked at only 700 MHz. I would try this with a much cheaper GT 210 (Which you can find for $20 - $30). Regarding your drivers you could find the open-source Nvidia drivers and compile it on ARM.
-
What is the specific problem with this? i just need some computation from the GPU i do not need real time aplications. Feb 5, 2014 at 18:19
-
What about this card? SBC-A510 Single Board Computer. It has a 800 MHz CPU and brings with a PCIe 1x slot. Feb 6, 2014 at 14:55
Just bumping to an old thread. It's nearly impossible, but the main reason is capitalism and bureaucracy, not writing drivers.
Sure, writing drivers is very difficult, but work with an epic team and it would be done before sunrise.
Even harder would be to get access to existing source codes for the whole video card and maybe even source codes for either the BCM2835, BCM2836, or BCM2837 (Pi 1, 2, and 3 respectively). You need those to learn how the cards work on the inside and find a way to interface with it with each other.
You would have to be an OEM to get just even a chance to get the source codes. Even the Raspberry Pi foundation itself has had has difficulty with those and has to settle on a pre-compiled blob to interface with the processor and GPU.
Power requirements wouldn't be an issue at all since, by the time you're begging [company name], you would have already figured it out. Probably a PC PSU connected to the video card and also powering the Pi via its 5V rail.
The MCS9990 is a PCIe to USB/ISA bridge, designed to provide additional USB / ISA / GPIO ports on a system with PCIe interface. It cannot be used to connect a PCIe device to a system which only has USB, such as an RPi. So this approach is doomed from the start.
Your only problem will be drivers. It would be so cool to get a Nvidia GPU to work on a Pi, but this is almost as hard as building your own GPU from scratch.
People are right, the hardware isn't impossible, but it WILL be sketchy. You absolutely will need drivers, however. Even if you could write your own, they would not be optimized to utilize all to the speed and features on the GPU.
I wanted to try this with an old Nvidia GForce, but I am a lousy programmer with no hardware hacking experience.
I figured it was a long shot, but I emailed NVidia just after the RTX was released, and asked if they would either compile the drivers for a few Pre-2010 GPUs for the Pi and make them available to download and tinker with, or release the source code for people to compile themselves. Obviously they said "no."
So here is the thing, we have external GPUs for laptops (costs disregarded) and the Wi-Fi in the new Pi 3B+ is supposed to be fast, why not see if that could work?
-
I'm not sure if this provides an answer, or is a suggestion, albeit a useful one. Oct 31, 2018 at 6:03
-
@ Greenonline This was intended to be a suggestion and an aswer (Reread the last sentence) Nov 2, 2018 at 23:33