Flux.jl GPU support for M1 Mac? - julia

I am currently using a laptop with the M1 Mac chip. The Flux.jl docs only mention support for Nvidia GPU's. Is it possible to train my models using my local GPU or is there no support for the M1 Mac yet? Note: Julia 1.7 beta 3 is currently being shipped with M1 Mac support so it seems like this would be feasible but I am not a GPU expert.

I'm not sure that there is much reason (so far) to support an 8 core GPU on the M1 when typical Nvidia CUDA core counts are in the hundreds or the thousands. That may change with future CPU's, perhaps.

Related

Can an OpenCL .cl file compiled to SPIR-V be cross-compiled to Metal?

For context, I am researching upgrades into our OpenCL code at work as we are quite far behind current spec. The team I work in develops on all three of the major OSes and as far as I can tell Apple doesn't support past OpenCL 1.2 on any of their machines instead prompting you to learn and use Metal performance shaders.
I would like to update our code base to C++ for OpenCL which is based on OpenCL 2.0 or 3.0 depending on which version you use. C++ for OpenCL is fine on Windows and Linux as they have GPU drivers which support up to and past the 2.0 requirement, but Mac might have a problem with it without official support in the drivers. So I had the idea that if we could cross compile the CL kernels to Metal for the Mac users they would be able to run a Metal version of the code locally.
Has anyone got any solutions to this problem.

How to use Flux.jl on an AMD GPU?

I currently do not have an Nvidia GPU on my laptop but I still want to be able to speed up training. Per the Flux docs, it says Nvidia GPU's are supported out of the box but doesn't mention AMD GPU's at all. Is it possible to work with Flux on an AMD GPU?
This should in principle be possible, since AMDGPU.jl provides a similar interface for AMD GPUs as CUDA.jl does for NVIDIA GPUs, and Flux is claimed to be agnostic to array types. However, at best this will only work on Linux, since AMDGPU.jl relies on AMD's ROCm platform, and ROCm is only supported on Linux, since ROCm is indeed specifically built around the Linux kernel.

Big difference in performance using OpenVINO model on CPU vs Intel Compute Stick 2

I own an Intel Compute Stick 2 that I intend to use to process object detection networks.
After installing OpenVINO on my machine (Ubuntu 18.04), I tried running the object detection python demo on a video. When running it on the Intel stick, I would get a speed of around 7.5 frames per second, while running it on my laptop Intel CPU is a lot faster at 44 frames per second.
Even if my laptop is a decent gaming laptop, I was surprised by the fact that processing on the Intel stick is so much slower. I plan to use the Intel stick on another device, not my laptop, but I would like to understand why there is this big difference in performance. Anyone had a similar experience?
You're getting an expected performance of Intel® Neural Compute Stick 2.
Check out the following discussions regarding the performance of Intel® Neural Compute Stick 2.
Raspberry Pi and Movidius NCS Face Recognition
Share | Intel Neural Compute Stick 2 (Intel Neural Compute Stick 2) related tests
Battle of Edge AI — Nvidia vs Google vs Intel

Use OpenCL on AMD APU but use discrete GPU for the X server

Is it possible to enable OpenCL on an A10-7800 without using it for the X server? I have a Linux box that I use for GPGPU programming. A discrete GEForce 740 card is used for both the X server and running OpenCL & Cuda programs I develop. I would also like the option of running OpenCL code on the APU's integrated GPU cores.
Everything I've read so far implies that if I want to use the APU for OpenCL, I have to install Catalyst and, AFAIK, that means using it for the X server. Is this true? Would there be an advantage to using the APU for my X server and using the GEForce solely for GPGPU code?
I had a similar goal, so I've built a system with AMD APU (4 regular cores + 6 GPUs) and Nvidia discrete graphics board. Sorry to say it wasn't easy to make it work, so I asked a question on the Ask Ubuntu forum, didn't get any answers, experimented a lot with hardware and software setup, and finally have posted my own answer to my question.
I'll describe my setup again here - who knows, what might happen with my auto-answered question on the Ask Ubuntu?
At first, I had to enable the integrated graphics hardware via a BIOS flag. This flag is called IGFX Multi-Monitor on my motherboard (ASUS A88X-PRO).
The second step was to find a right mix of a low-level graphics driver and high-level OpenCL implementation. The low-level driver for AMD processors is called AMD Catalyst and has a file name fglrx. I didn't install this driver from the Ubuntu software center - instead I used a version 15.302, directly downloaded from the AMD site. I had to install a significant number of prerequisites for this driver. The most important finding was that I had to skip running the aticonfig command after the fglrx installation - this command actually configures the X server to use this driver for graphics output, and I didn't want that.
Then I've installed the AMD SDK Ver 3.0 (release 130.136, earlier releases didn't work with my fglrx) - it's the OpenCL implementation from AMD. The clinfo command reports both CPUs and GPUs with correct number of cores now.
So, I have a hybrid AMD processor, supported by the OpenCL, with all the graphics output, supported by a discrete graphics card with Nvidia processor.
Good luck!
I maintain a Linux server (OpenSUSE, but the distribution shouldn't matter) containing both NVIDIA and (a discrete) AMD GPU. It's headless, so technically I do not know whether the X server will create additional problems, but I don't think so. You can always configure xorg.conf to use exactly the driver you want. Or for that matter: install Catalyst, but delete the X server driver file itself, which is not the same thing that you need for OpenCL.
There is one problem with a mixed-vendor system that I noticed, however: AMDs OpenCL driver (ICD) will go spelunking for a libGL.so library, I guess in order to do OpenCL/OpenGL-interop. If it finds any of the NVIDIA-supplied libGL.so's, it will get confused and hang - at least on my machine. I "solved" this by deleting all libGL.so's (I do not need it on a headless compute server), but that might not be an acceptable solution for you. Maybe you can arrange things such that the AMD-supplied libGL.so's take precedence, possibly by installing the AMD driver last.

Intel OpenCL SDK for Windows XP?

I want to know if there is any version of Intel's opencl implementation for windows XP?I have searched quite a lot about it and didnt find anything .But thought i'd confirm here.
None. They list only Vista and Windows 7. I doubt XP will be supported.
AMD support XP at present, if what you really want is OpenCL for CPU.
Found on the Internet:
Making OpenCL features available - Wings 3D
For old Intel processors (like P4) or on-board GPU (like Intel G33/31): ATI Stream SDK 2.3 is the last version that supports Windows XP SP3

Resources