I have a block which depends on sse2. I need to tell cmake to check if
the cpu support sse2 in order to determine if the sse2 acceleated
version or a generic version should be used.
This should be straight forward. However, I just cannot find an example
CMakeLists.txt to get me a quick start.
Any suggested readings? thanks
K Z
How about looking at the libvolk components and see how SSE is done and
mimic?
Kyle,
This sounds like a job for VOLK!
Seriously, sounds like your block could benefit from all the nice
housekeeping that Volk takes care of for you, including runtime
auto-detection of platform support, conditional compiling based on
compiler
support, and alignment reporting. Consider including at least the
crunchy
SSE core in libvolk. Check out the Volk guide in the documentation for
instructions.
–n
Thanks Nick.
Yes, I would like to migrate to volk and avoid all the hassles. Need to
take some time to learn volk first.
Can I assume volk can perform most of the intrinsics of sse2?
Regards
KZ
Yes, I did look at it. but that is too overwhelming to me so far. need
to work harder
On 09/20/2012 09:37 AM, Kyle Z. wrote:
Thanks Nick. Yes, I would like to migrate to volk and avoid all the
hassles. Need to take some time to learn volk first. Can I assume
volk can perform most of the intrinsics of sse2? Regards KZ On
Checkout the next branch (which has the latest in volk work)
create volk/kernels/volk/volk_my_kern.h
#ifdef LV_HAVE_GENERIC
volk_my_kern_generic(params)
{
//generic c implementation
}
#endif
#ifdef LV_HAVE_SSE2
#include
//the _a means that this kernel requires aligned pointers
//otherwise use _u if it does not
volk_my_kern_sse2_a(params)
{
//call sse intrinsics here
}
#endif
Now just re-run cmake and build. When you include volk/volk.h you will
have access to volk_my_kern(params) and that handles the runtime
selection.
Rename my_kern to follow the naming convention and contribute the work
back!
-josh