How can I analyze my OpenGL/C++ program and get a detailed view on what is happening in the GPU when the application is running?
I have a MacBook air running an Intel GPU (specifically an Intel HD Graphics 5000 GPU), however Intel's version of the analysis programs don't appear to be compatible with Macs (when I try to run it on my computer, it 'works' but many features are missing and it's practically useless.)
Related
I am trying to use CUDA with GTX 570.
I am using Ubuntu 14.04 and CUDA has been installed successfully.
I think I should use desktop or gui interface with on-board VGA
and run GTX 570 solely for CUDA, but seems not working well. (I set up on-board VGA as default in BIOS, but after installing CUDA, Ubuntu only provide gui in GTX 570 port.)
So, is it okay to use GTX 570 for both gui and CUDA? What is the standard way to use it?
If your on-board VGA is still active at boot time, and only goes dark when Ubuntu loads, then it should be possible via a rearrangement of your xorg.conf file, to get Ubuntu to use the on-board VGA for display also. In this case, you would remove all reference to the GTX570 from your xorg.conf, and this is the best approach.
You can use the GTX570 for both display and CUDA.
There will be two areas of limitation:
Interactivity - when running CUDA apps, your display will be unresponsive. For learning purposes, most CUDA kernels run for significantly less than 1 second, so this is not likely to be much of an issue for you (the display will freeze while the CUDA kernel is running). But if you want to run longer CUDA kernels, your system will be unresponsive during that time, and you may even run into Linux watchdog timeout issues. This document may also be interesting reading for you.
Debugging - When there is no X-server that is using the GTX570, then it can be easily used for debugging. However, you will not be able to debug (e.g. set breakpoints in CUDA device code) your CUDA apps when the GUI/display is also running on the GTX570.
will any memory bound application benefit from high memory throughput of tesla(cc2.0) more than high number of cuda cores of geforce (cc5.0)?
how can i run exe filed compiled on machine with geforce card on another machine with tesla card without installing VS2010 and cuda on tesla machine (ie i want this exe file to be stand alone application)?
will any memory bound application benefit from high memory throughput of tesla(cc2.0) more than high number of cuda cores of geforce (cc5.0)?
A memory bound CUDA application will likely run fastest on whichever GPU has higher memory bandwidth. There are certainly other factors that could affect this, but this is a reasonable general principle. I'm not sure which 2 cards you are referring to, but it's entirely possible that a particular GeForce GPU could have higher memory bandwidth than a particular Tesla GPU. The cc2.0 Tesla GPUs (e.g. M2050, C/M2070, C/M2075, M2090) probably do have higher memory bandwidth (over 100GB/s) than the cc5.0 GeForce GPUs I am aware of (e.g. GeForce GTX 750/750Ti -- less than 90GB/s).
how can i run exe filed compiled on machine with geforce card on another machine with tesla card without installing VS2010 and cuda on tesla machine (ie i want this exe file to be stand alone application)?
There are a few things that are pretty easy to do, which will make it easier to move a compiled CUDA code from one machine to another.
make sure the CUDART library is statically linked. This should be the default settings for recent CUDA versions. You can read more about it here. If you are using other libraries (e.g. CUBLAS, etc.) you will want to make sure those other libraries are statically linked also (if possible) or bundle the library (.so file in linux, .dll in windows) with your application.
compile for a range of compute architectures. If you know, for example that you only need to and want to target cc2.0 and cc5.0, then make sure your nvcc compile command line contains switches that target both cc2.0 and cc5.0. This is a fairly complicated topic, but if you review the CUDA sample codes (makefiles or VS projects) you will find examples of projects that build for a wide variety of architectures. For maximum compatibility, you probably want to make sure you are including both PTX and SASS in your executables. You can read more about it here and here.
Make sure the machines have compatible drivers. For example, if you compile a CUDA code using CUDA 7.0 toolkit, you will only be able to run it on a machine that has a compatible GPU driver installed (the driver is a separate item from the toolkit. A GPU driver is required to make use of a GPU, the CUDA toolkit is not.) For CUDA 7, this roughly means you want an r346 or newer driver installed on any machine that you want to run a CUDA 7 compiled code on. Other CUDA toolkit versions have other associated minimum driver versions. For reference, this answer gives an idea of the approximate minimum GPU driver versions needed for some recent CUDA toolkit versions.
I have an intel i7 haswell cpu, and I would like to start exploring OpenCL development. In particular, I am interested to run OpenCL code on the integrated GPU.
Unfortunately, by now, I was not able to find any SDK on Intel's site..
May you provide some links, together with a summary of the current status of OpenCL tools for the Linux platform and Intel hardware?
I think this would be useful to many other people..
Thanks a lot!
Intel does not provide free support for OpenCL on their iGPUs under Linux - you have to buy the Intel Media Server Studio, minimum $499. On Windows, you can download a free driver to get OpenCL capability for the iGPU: https://software.intel.com/en-us/articles/opencl-drivers#philinux.
Note that you can use any OpenCL SDK you want - it doesn't have to be Intel. The SDK is only useful for building your program. For running an OpenCL program, you need an appropriate runtime (driver) from the manufacturer. The AMD SDK will give you access to the CPU as an OpenCL device, but not the iGPU.
There is Open Source OpenCL implementation for Intel GPUs on Linux called Beignet, maintained by bunch of guys from Intel.
Sadly, couldn't personally try and check if Your's GPU is properly supported, but on their wiki they states:
Supported Targets
4th Generation Intel Core Processors "Haswell", need kernel patch currently, see the "Known Issues" section.
Beignet: self-test failed" and almost all unit tests fail. Linux 3.15 and 3.16 (commits f0a346b to c9224fa) enable the register whitelist by default but miss some registers needed for Beignet.
This can be fixed by upgrading Linux, or by disabling the whitelist:
# echo 0 > /sys/module/i915/parameters/enable_cmd_parser
On Haswell hardware, Beignet 1.0.1 to 1.0.3 also required the above workaround on later Linux versions, but this should not be required in current (after 83f8739) git master.
So, it's worth a shoot. Btw, it worked well on my 3rd generation HD4000.
Also, toolchain and driver in question includes bunch of GPU-support test cases.
For anyone who comes across this question as I did, the existing answers have some out-of-date information; Intel now offers free drivers for Linux on the site posted above: https://software.intel.com/en-us/articles/opencl-drivers#philinux
The drivers themselves are only supported on 5th, 6th and 7th gen Core processors (and a bunch of other Celerons and Xeons, see link), with earlier processors such as 4th gen still needing the Media Server Studio.
However, they now offer a Linux Community version of Media Server Studio which is free to download.
They also have a Driver Support Matrix for Intel Media SDK and OpenCL which has some useful information about compatibility: https://software.intel.com/en-us/articles/driver-support-matrix-for-media-sdk-and-opencl
You may check intel open source Beignet OpenCL library: http://arrayfire.com/opencl-on-intel-hd-iris-graphics-on-linux/
For me (ubuntu 15.10 + Intel i5 4th generation GPU) it works quite well.
P.S.
Also I must say that I managed to download "media server" for linux a couple of months ago (but didn't used it yet). So you may check it also.
I have a laptop running Ubuntu, it has a 32 Bits processor (Intel Core 2 Duo T6400 2.00GHz) and a graphics card Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller. I would like to know if I can program with OpenCL in this system. If yes what do I need?
I have been searching Google, ofcourse. I found this page:
http://software.intel.com/en-us/articles/download-intel-opencl-sdk/
But I only found a RPM package in the Linux section. I can install it in my Ubuntu system, but the package is for a 64 bit system.
Unfortunately you will need the following distributions:
http://software.intel.com/en-us/articles/opencl-release-notes/
Novell* SUSE* Linux Enterprise Server 11 Service Pack 1 (64-bit version)
Red Hat* Enterprise Linux 6 (64-bit version).
If you cannot change distribution, an alternate way is to use NVIDIA's CUDA SDK in emulation mode. It will be slow, but will work.
Try AMD's APP SDK (link). It has 32 bit version and runs on Intel CPUs without any problems.
Using Intel GPUs for OpenCL is impossible right now.
Intel does not support GPU accelerated OpenCL as of now. The OpenCL SDK you linked in your question will run on your CPU. So yes, no matter what GPU you have in your system, you will be able to do OpenCL -- albeit on the CPU.
Furthermore Intel only provides an RPM. You can try to use Alien to install it on your Ubuntu system, if you had a 64bit CPU. The only thing you could do now would be to get an NVIDIA or AMD GPU and use their OpenCL SDKs respectively. Or get a new computer with Intel CPU / and 64 bit support.
I have a notebook with ATI Mobility Radeon HD 5650, and want to use the card for computing =) After installing AMD APP SDK v.2 (installation was OK) I tried to run code samples, provided with AMD. But there is a problem: when I run a sample, it doesn't find my ATI card - in the list of available OpenCL devices there is only CPU (Intel Core i5), but not GPU.
How to solve this problem and run some code on GPU?
Your video card drivers must support OpenCL. I suggest you try downloading the newest drivers from your vendor. Unfortunately most mobile graphic cards are supported by the distributor of the PC and not of the graphics card vendor, so I am not sure if you can find any according drivers.
Not all ATI's GPU support OpenCL, looking into the list of supported devices you can see that this card is not there, neither with beta support. So basically you can only buy different card (what can be rather problematic with a laptop).
I have the same problem in my Acer 3820TG. However, the OpenCL programming is needed the driver version over 8.753.1. It seems that Acer doesn't support in currently.
One way to overcome this problem is to force install the newer mobility drivers from AMD.
You can follow the the steps from:
http://www.sevenforums.com/drivers/177042-force-install-drivers.html
and then try the related-stable driver to install.
(It means it also supports the HD5650-M , but it is different SUBSYS num.)
In my testing, don't install the newest driver(Or you would have the OSDC problem). I install the driver version at about 8.79-8.80(10-11_vista64_win7_64_dd_ccc or
10-12_vista64_win7_64_dd_ccc) and then it seems that it can work.