If I am writing a visualizer with glsl, how can I guarantee it will take advantage of more gpu's? Right out of the box it only works on one, what sort of steps / design of the software will allow the pixel shader to be run in parallel on more than one card?
How should I design GLSL shader to run on crossfire / SLI
1.4k Views Asked by jett At
2
There are 2 best solutions below
5
sleep
On
Zero steps required in GLSL. The SLI/crossfire driver takes care of dividing the workload across the GPUs for you. Same for nVidia surround and AMD Eyefinity: as far as the shader is concerned, it's just a bigger render target.
See these slides by nVidia: SLI in OpenGL, especially the slides "Things Interfering with SLI".
You want to make sure that your rendering loop is correctly set up (i.e. SwapBuffers is called), and that you are at least double buffered for AFR mode SLI.
Related Questions in C++
- C++ using std::vector across boundaries
- Linked list without struct
- Connecting Signal QML to C++ (Qt5)
- how to get the reference of struct soap inherited in C++ Proxy/Service class
- Why we can't assign value to pointer
- Conversion of objects in c++
- shared_ptr: "is not a type" error
- C++ template using pointer and non pointer arguments in a QVector
- C++ SFML 2.2 vectors
- Lifetime of temporary objects
- I want to be able to use 4 different variables in a select statement in c ++
- segmentation fault: 11, extracting data in vector
- How to catch delay-import dll errors (missing dll or symbol) in MinGW(-w64)?
- How can I print all the values in this linked list inside a hash table?
- Configured TTL for A record(s) backing CNAME records
Related Questions in GLSL
- How to get shader version from QOpenGLShader?
- Tesselation result flickering - OpenGL/GLSL
- Water rendering in opengl
- Should Meshes with and without Skeleton use different Shaders?
- PBO Indexed Color Texture Rendering with Palette in Fragment Shader not working
- Modern GLSL ( opengl 3+ ) : Implementing phong effect correctly;
- Passing grayscale OpenCV image to an OpenGL texture
- OpenGL / weight order independent transparency
- GLSL: How to calculate fragments output RGB value based on Photoshops curve value?
- Fragment shader does not show any colour when compiled with vs2013
- How to access all vertexes within the same patch in Tessellation Control Shader
- OpenGL GLSL: How to implement the concept of gradient map in photoshop using fragment shader?
- Ambient and Specular lighting not working correctly in GLSL
- How to debug transforms in glsl vertex shaders in lwjgl
- Blender GLSL Export to THREE.js
Related Questions in SHADER
- Water rendering in opengl
- Draw a sphere on a billboard with world normal from a pointlist
- DirectX - Pixel Shader 3.0 doesn't work
- Should Meshes with and without Skeleton use different Shaders?
- unity custom shader not receiving Shadow
- Constant buffer is empty when passed HLSL C++
- Unity | 'gameobject.renderer.material.color' in version 5.x
- Shader programming with ShaderLab and CG in unity
- How to use a huge array in HLSL (error X4505)
- mat4 type in attribute shader
- Reading a shader from a .txt file using a structure
- Rendering a circle with a Vertex shader in DirectX
- Blur the camera at a particular point Unity2D
- Render multiple models in OpenGL with a single draw call
- Why passing parameter is OK between Vertex and Fragment shader
Related Questions in GPGPU
- How to detect NVIDIA CUDA Architecture
- Different Kernels sharing SMx
- How to do calculation using OpenGL ES 2.0/3.0?
- How to run PageRank in Blazegraph on a dataset?
- When do we need two dimension threads in CUDA?
- CUDA cuBlasGetmatrix / cublasSetMatrix fails | Explanation of arguments
- Confusion over compute units and expected cores on nvidia GPU
- Declaring a cl_uint variable in OpenCL C leads to Segmentation fault (core dumped)
- Unkown Issue with input sequence size of FFT in OpenCL
- Passing Host Function as a function pointer in __global__ OR __device__ function in CUDA
- Nvidia OpenCL hangs on blocking buffer access
- CUDA: Cuda memory accessing different than OpenCL? What is causing this illegal memory access?
- Computing on variable length arrays in OpenCL
- AMD HCC Swizzle Intrinsic
- Sparse matrix multiplication OpenCL vs Intel MKL performance
Related Questions in SLI
- Druid metric shows more Good Response than Total Request in a particular time interval
- In .NET 3.5 C#, is there a way to detect if NVIDIA SLI mode is active
- Tensorflow with 2 GPUs ignores one of them
- PromQL query to calculate service uptime & downtime from a fixed date
- D3D11 - How to deal with SLI and Nvidia Surround?
- sli database structure best approach?
- prometheus alert expression for 99% availability of rest API
- Designing SLO based on Prometheus Counters
- override comments in system.xml in magento2
- Is the error budget in GCP UI supposed to rise above 100%?
- Will Crossfire/SLI benefit Compute Shader performace?
- How does SLI decide which VBO belongs to which GPU in OpenGL?
- OpenGL Draw call on SLI/CrossFire Graphic Cards
- How to enable SLI in OpenGL?
- How to setup SLI on two GTX 560Ti's
Trending Questions
- UIImageView Frame Doesn't Reflect Constraints
- Is it possible to use adb commands to click on a view by finding its ID?
- How to create a new web character symbol recognizable by html/javascript?
- Why isn't my CSS3 animation smooth in Google Chrome (but very smooth on other browsers)?
- Heap Gives Page Fault
- Connect ffmpeg to Visual Studio 2008
- Both Object- and ValueAnimator jumps when Duration is set above API LvL 24
- How to avoid default initialization of objects in std::vector?
- second argument of the command line arguments in a format other than char** argv or char* argv[]
- How to improve efficiency of algorithm which generates next lexicographic permutation?
- Navigating to the another actvity app getting crash in android
- How to read the particular message format in android and store in sqlite database?
- Resetting inventory status after order is cancelled
- Efficiently compute powers of X in SSE/AVX
- Insert into an external database using ajax and php : POST 500 (Internal Server Error)
Popular Questions
- How do I undo the most recent local commits in Git?
- How can I remove a specific item from an array in JavaScript?
- How do I delete a Git branch locally and remotely?
- Find all files containing a specific text (string) on Linux?
- How do I revert a Git repository to a previous commit?
- How do I create an HTML button that acts like a link?
- How do I check out a remote Git branch?
- How do I force "git pull" to overwrite local files?
- How do I list all files of a directory?
- How to check whether a string contains a substring in JavaScript?
- How do I redirect to another webpage?
- How can I iterate over rows in a Pandas DataFrame?
- How do I convert a String to an int in Java?
- Does Python have a string 'contains' substring method?
- How do I check if a string contains a specific word?
From the comments in Jarrod's answer it looks like the 'problem' you are running into is AFR mode (alternate frame rendering) vs SFR mode (split frame rendering), which is a driver mode setup issue.
In AFR mode, the driver sends each entire frame to a single GPU and sends alternate frames to the other GPU. This is great for games and animations where you're most interested in maximizing frame rate and don't care so much about frame latency. Using the GPUs this way gives you pretty much a 2x fps speedup for SLI with little effort. But if you're only drawing a single frame (as seems to be the case from your comment), it will just use the one GPU.
In SFR mode, the driver will split each frame and render part of each frame on each GPU. The problem with this mode is that both GPUs need to do all the setup for every frame, so you won't get 2x speedup. In fact pretty much the only thing that will be sped up is fragment shaders (since each GPU will run half the fragments), so if only 50% of your (single GPU) render time is fragment shaders, you'll only get (at best) a 33% speedup. You might get less as the split may be imbalanced (so one GPU ends up with most of the fragments).
As SFR is generally slower, AFR tends to be the default. You can control AFR vs SFR via the control panel.