Implement the macros to define the OpenCL kernels for the math functions
Using Shared Context for Multiple OpenCL Devices

https://software.intel.com/sites/products/documentation/ioclsdk/2013/OG/Using_Shared_Context_for_Multiple_OpenCL_Devices.htm
Implement OpenCLSyncedMemory keeping the API of SyncedMemory
Replace clEnqueue{Read,Write}Buffer with MapBuffer/UnmapMemObject
Add tests for OpenCL math functions
Add tests for OpenCL synced memory