First of all hi to everyone!, I am physicist and I am currently developing a Monte Carlo code for particle transport using OpenCL.
My question is regarding the convenience of using vector data types (like float4) on AMD CPUs and GPUs. Reading some documentation I have become some confused about this issue, for example, in my iMac (CPU: Intel(R) Core(TM) i5-6500 and GPU: AMD Radeon R9 M380) from the CL_DEVICE_PREFERRED_VECTOR_WIDTH_FLOAT attribute I obtain 4 for the CPU and 1 for the GPU.
From the result for the GPU my question arises, which is then the advantage of using vector data types on GPUs?. I have read that nowadays GPUs use mostly scalar processors and therefore do not benefit from the use of vector data types on arithmetic computation, is that also true for loading/storing data from/to global memory?.
Currently in my code I store the particle attributes (position, velocity, energy, etc) as float4 data types, should I keep doing that or I should just use plain floats?. Thanks for your help!.