Cowboy · 2019-08-04 05:13
I ask because I want to know if there are any alternatives to the CUDA technologies offered by Nvidia. As a software developer who works on sensitive applications for a certain environment-based scientific organization, I don't want my code to be stolen by some hacker due to bloated and badly designed hardware or leaked through some backdoor by a government or company that thinks they need to have absolutely everything.
There are AMD GPUs that are able to perform parallel operations as well, but i'm guessing they are closed source as well? Could use a server-grade CPU, but at that point I am going to be limited to AMD/Intel unless I can find some SPARC or PowerPC chip. I can't be stuck with a dual core Allwinner or 2006 Intel CPU, there just isn't enough power to meet my demands. I know of the ultrasparc T1/T2, but the T1 suffers from the problem of sharing 1 FPU with 8 cores, and the T2 fixes this problem, but has a crypto core that is (supposedly) undocumented. Also server platforms that have no graphical interface options (Perhaps over ethernet? Not a necessary feature as this is a headless project)
Thanks for input! Ultrasparc T2 definitely looks good. 8 Cores x 1.6GHz | ALU x 2 per core + FPU per core.
Meddler · 2019-08-04 15:04
>>18416
That infographic is outdated, drivers for Mali GPUs were merged earlier in 2019.
Regarding your question here's a solution: https://github.com/ROCm-Developer-Tools/HIP
Switch · 2019-08-04 17:03
> I don't want my code to be stolen by some hacker due to bloated and badly designed hardware or leaked through some backdoor by a government or company that thinks they need to have absolutely everything.
1. If and when you get hacked, it's probably going to be because of misconfiguration or vulnerable software.
2. Why would you care if your code is stolen? Why isn't it open source anyway, especially if it's scientific in nature?
Technician · 2019-08-04 19:46
>18418
>1. If and when you get hacked, it's probably going to be because of misconfiguration or vulnerable software.
I already dealt with that problem. I design the projects on an airgapped computer with a minimal linux OS and only the necessary software.
>2. Why would you care if your code is stolen? Why isn't it open source anyway, especially if it's scientific in nature?
I would care because I don't want it to be used for malicious purposes. The code that we use is always open sourced after a certain period where it can be assured that penetration is at a minimum (After finding the initial bugs and inefficiencies.). If the gov or another company/org gets the code, they can package it and sell it after doing some modifications and closed sourcing, or employ it as part of one of their projects (gov loves to contract with private companies.)
Nanashi No Gombe · 2019-08-04 22:35
>>18416
do you have a well enough defined use case for a GPU or many core chip? Parallelization is not like magic sauce that can be used as an ingredient to make any program exponentially faster, you would need to develop a parallelization scheme. That means familiarizing yourself with the way a GPU works. Essentially you need to write a script that handles single units of work that are not dependent on each other. A ray tracer is a great example, since the calculation of one individual ray hitting a surface is irrelevant for the calculation of the next (if only collisions are queried anyway). I guess this partially applies to multithreaded programs as well. Maybe this is already all too familiar to you.
For these kinds of computational projects trying to make use of GPU power, there is no need to rely on CUDA. It is proprietary NVIDIA locked technology, why would you want to after all. For this kind of purpose you could instead just use OpenCL, which is essentially a different slice of the same cake as CUDA, but all major GPU platforms. OpenCL was developed by the same benevolent entity behind OpenGL, the Khronos Group. That offers you a nice, purely open source setup consisting of amdgpu and opencl. You trade away some programmatic simplifications and syntactic sugar the CUDA platform offers, but that does not mean you cannot tap the full potential of your GPU with OpenCL. Performance gain is a lot more dependent on your abstraction and implementation of a parallelized solution to your problem, than on differences between CUDA and OpenCL.
If that doesn't cut the dice (or if writing essentially shaders to do your computation is not applicable to your problem), you could check out OpenMP. In contrast to OpenCL, I have no experience with OpenMP, but the framework proclaims to be a "multi-platform shared memory multiprocessing programming interface", so there might be some merit to your particular case. This one taps your CPU instead.
With these two really strong options, I don't think it necessary for you to even consider CUDA as an alternative.
I would have an easier time elaborating if you would spill some more beans on what it is you are attempting to achieve. On the point of security, it is certainly wise to make considerations beforehand. People end up implementing security after the fact in my experience, but hardware backdoors actually being put to use is still a little far fetched (again, in my experience). Except for smartphone CPUs, I can def. see a mobile baseband uploading CPU registers practically all the time. Perhaps just avoid Intel Management Engine (or Intel altogether). Perfect security on that front is difficult, because a lot of it is still "hidden variables". I hope you succeed in finding your dream setup lainon, do share your insights.
Neo · 2019-08-04 23:12
>18417
>That infographic is outdated, drivers for Mali GPUs were merged earlier in 2019.
Merged? Into the linux kernel as FOSS? That's great if true, haven't been keeping up lately though.
>18421
Thanks for the advice. I have some experience with OpenMP and a little OpenGL, but none with OpenCL. I'm a bit confused on this matter because I am under the impression that CUDA is required to use the full functionality of Nvidia GPUs, and AMD GPUs are just not as advanced due to their lower adoption rate and software support. I have experience with parallelization, and this application definitely benefits from it (Processing large amounts of data similarly and then compiling it for future predictions and statistical data.)
Was considering the Sun Fire T1000/T2000 before as it is a 128 Thread 8 Core 128GB RAM setup that has had the CPU design open sourced by Sun. Unfortunately, the Ultrasparc T1 shares ONE floating point unit with 8 cores, and luckily the T2 has one FPU per core, but has a crypto core that I believe was undocumented.