Jump to content

Hi, so I'm a game developer/graphics programmer, and I've been getting into SIMD programming as of late. For my specific application (a voxel game), I get some huge performance increases through vectorization, but I'm curious as to what extent modern games actually make use of this tech. It's a little hard to develop for, and its use cases are limited but important. E.g., on-CPU physics and particles, encoding/decoding, etc. Anyone have ideas?

 

This seems important, as its an area where we might see actual major increases in CPU performance, justifying consumers upgrading their processors, but it requires developers to actually program for it. (Spoiler: if the developer has a choice, they typically pick the laziest option. Multithreading? Nah. SLI support? Nah. Speed increases? Oh good, we can spend less effort optimizing our code. etc.)

Link to comment
https://linustechtips.com/topic/566626-simd-utilization-in-modern-games/
Share on other sites

Link to post
Share on other sites

I believe PhysX is a SIMD implementation (as of 3.0, previous ageia maintained libraries used legacy x87 floating point).

 

For other readers; SIMD (Single Instruction- Mutliple Data) is a way of increasing efficiency while executing instructions. E.g. if I have 4 instructions scheduled in a row that are "add" instead of running each add instruction it will just use the same instruction on all the data. 

 

image008.jpg

 

But it wont work if the instructions are different so if add, minus, divide and mutliply are the next 4 instructions they cannot be executed form a single instruction as the operation is different.

 

image010.jpg

 

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

×