Do Intel, AMD, and Nvidia really support OpenCL?

In summary, OpenCL is a legitimate option for GPU computing in terms of graphics and computational capabilities. It is capable of working with both CPU's and GPUs from different vendors and has been designed to support heterogeneous systems. Resources such as "GPU Computing Gems Emerald Edition" and "Programming Massively Parallel Processors" can be helpful for learning OpenCL, and the official Khronos specification is a valuable resource to have.
  • #1
Fusiontron
108
2
I'm working on a project using GPUs to simulate heat transfer. We are trying to create a superset which will execute on all the main architectures. How legit is OpenCL for this purpose?
 
Technology news on Phys.org
  • #2
Fusiontron said:
I'm working on a project using GPUs to simulate heat transfer. We are trying to create a superset which will execute on all the main architectures. How legit is OpenCL for this purpose?

Hey Fusiontron.

The way OpenGL works is that the graphics card vendor (i.e. ATI/nVidia/Intel etc) provide a code library (DLL file) that implements the actual routines that are created by the OpenGL standards board, of which many of the members are from graphics cards companies.

What you have to do when you code the routines is query the DLL for the OpenGL version and any extensions that you wish to use.

If the OpenGL is set to a specific version or greater than a specific version, you are gauranteed to have all the standardized features of that particular version.

Basically you have to do two things:

1) Query the supported version. If the version supports everything you need and the system has a version greater than or equal to your version, then you are done and you can guarantee that the code that relies on having that version will run ok.

2) If you do not have a high enough implementation then you have to query for extensions and use them.

Extensions are basically non-standard features that vendors implement. These features can be experimental or they can be highly optimized routines that make use of new features in the architecture of the graphics device itself.

The features are vendor specific in most cases and in some cases you can use these extensions to do the same things that you can do in higher OpenGL version standards when the device has a lower standard. This is actually the kind of thing that was done in the video game Doom 3 to support the older video cards: custom extensions had to be used.

In terms of computing with regard to graphics, there are OpenGL standards that gaurantee specific computational platforms which will be useful for you, since once the standard for your graphics card is guaranteed, you just run the same code for every card that adheres to the standard.

I'm not sure about OpenCL specifically, but for OpenGL it is not hard to program GPU's and get results back if you use a high enough implementation.
 
  • #3
I can vouch for OpenCL. It's dependent on your graphics card. Some of the newer ones support OpenCL, from both ATI and Nvidia. I can also vouch for the fact that it is pretty difficult to program. Whether or not it's suited to your purpose <shrugs>, depending on the computational algorithm you use it may be. If your problem domain is already highly parallelizable, then GPU computing with OpenCL will work great for you. (You may need to designate a month or three to learning it if you've never had exposure to parallel computing before).

OpenCL is about as legitimate as DirectX or CUDA, but unlike DirectX or CUDA, OpenCL was designed to be capable of working with a heterogeneous system of CPU's and GPUs. This means that it's capable of working with CPU's and GPUs from different vendors equally well.

Which GPUs are you working with?
 
  • #4
Thanks for the responses. It looks like OpenCL will probably work for our project. I'm going to visit the head of the project tomorrow to report to him these findings. Now, if anyone could hit me up with some good resources for learning it, then that'd be real helpful.
 
  • #5
GPU Computing Gems Emerald Edition:

https://www.amazon.com/dp/0123849888/?tag=pfamazon01-20

--- Should be a fantastic resource.

Programming Massively Parallel Processors:

https://www.amazon.com/dp/0123814723/?tag=pfamazon01-20

--- This introduces you to the concepts of parallel processing and terminology for the GPU. It spends a lot of time (the first several chapters) explaining concepts in CUDA, but the way of thinking is similar to OpenCL.


OpenCL Khronos specification:

http://www.khronos.org/registry/cl/

--- This thing is your bible. Don't leave home without it.
 

1. What is OpenCL and how is it related to Intel, AMD, and Nvidia?

OpenCL stands for Open Computing Language, which is a programming framework that allows for parallel computing across different hardware platforms. Intel, AMD, and Nvidia are all major hardware manufacturers that support OpenCL in their products, allowing developers to utilize their computing power for various tasks.

2. Why is OpenCL important for scientific research?

OpenCL enables researchers to take advantage of the high-performance computing capabilities of Intel, AMD, and Nvidia GPUs, which can greatly accelerate complex calculations and simulations. This allows for faster and more efficient data processing in scientific fields such as physics, biology, and astronomy.

3. Do all Intel, AMD, and Nvidia products support OpenCL?

No, not all products from these manufacturers support OpenCL. Generally, only their high-end graphics cards and processors are equipped with OpenCL capabilities. It is important to check the specifications of a specific product to see if it supports OpenCL.

4. Can OpenCL be used for gaming?

Yes, OpenCL can be used for gaming purposes. It allows game developers to utilize the computing power of GPUs for more advanced graphics and physics processing, resulting in better visual effects and overall performance.

5. Are there any alternatives to OpenCL for parallel computing?

Yes, there are other programming frameworks such as CUDA, which is developed by Nvidia, and Metal, which is developed by Apple. However, OpenCL is an open standard that can be used across different hardware platforms, making it a more versatile option for parallel computing.

Similar threads

  • Computing and Technology
Replies
7
Views
2K
Replies
5
Views
2K
  • Programming and Computer Science
Replies
12
Views
2K
  • Programming and Computer Science
Replies
14
Views
1K
  • Programming and Computer Science
Replies
10
Views
3K
Replies
4
Views
1K
  • Programming and Computer Science
Replies
4
Views
5K
  • Programming and Computer Science
Replies
5
Views
1K
Replies
6
Views
1K
Back
Top