Jump to content

when i use Open CL for rendering all compute nodes CPU and GPU are contributing to the render process ,

the question is . what memory Vray or other renderer  use is it the main memory or gpu memory ,  

i need to know because that will determine to invest on main ram or expensive cards with more ram

in general i will to use Open Cl over Cuda even if vray site highly recommended Cuda   

Link to comment
https://linustechtips.com/topic/727402-about-open-cl-and-memory-usage/
Share on other sites

Link to post
Share on other sites

OpenCL can vary. Depending on your device and the clCreateBuffer arguments it will use either device memory, device visible host memory (DMA Host RAM), a shared host memory pin (a section of host memory that gets copied to device memory upon access and then flushed back to that section upon write), or via a CPU location map to host memory.

 

It's very much application defined and based on your workflow it will require more or less system memory and device memory.

 

Work that's done primarily on a single device and requires a lot of memory access will probably be optimized for device memory while a workload that relies on different compute units working together on a shared resource will likely use a shared memory pool that gets read into device memory and used from there 

 

TL;dr: there's no one answer. It depends on the software you're using and the workload you're giving it. Just make sure you have enough of both device memory and system memory 

Link to post
Share on other sites

8 minutes ago, Sniperfox47 said:

OpenCL can vary. Depending on your device and the clCreateBuffer arguments it will use either device memory, device visible host memory (DMA Host RAM), a shared host memory pin (a section of host memory that gets copied to device memory upon access and then flushed back to that section upon write), or via a CPU location map to host memory.

 

It's very much application defined and based on your workflow it will require more or less system memory and device memory.

 

Work that's done primarily on a single device and requires a lot of memory access will probably be optimized for device memory while a workload that relies on different compute units working together on a shared resource will likely use a shared memory pool that gets read into device memory and used from there 

 

TL;dr: there's no one answer. It depends on the software you're using and the workload you're giving it. Just make sure you have enough of both device memory and system memory 

thank you ... get it , though first two lines are hard for me to grasp , but i get the point  

Link to post
Share on other sites

3 minutes ago, omarF said:

thank you ... get it , though first two lines are hard for me to grasp , but i get the point  

If you google OpenCL memory allocation then there are a ton of good resources out there that discuss it, including a bunch from AMD.

 

Honestly though it's nothing you really need to learn unless you're planning to write ans optimize low level openCL code from scratch.

Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×