メモリの共有とか同期

OpenCL

https://software.intel.com/en-us/articles/opencl-20-shared-virtual-memory-overview
https://software.intel.com/en-us/forums/topic/541722
http://developer.amd.com/community/blog/2014/10/24/opencl-2-shared-virtual-memory/
http://developer.amd.com/community/blog/2014/12/09/amd-app-sdk-3-0-beta/
http://amd-dev.hosted.jivesoftware.com/message/1307145
http://proc-cpuinfo.fixstars.com/2015/03/opencl20-broadwell-svm.html
http://stackoverflow.com/questions/23378707/data-sharing-between-cpu-and-gpu-on-modern-x86-hardware-with-opencl-or-other-gpg
http://wodet.cs.washington.edu/wp-content/uploads/2014/03/WODET-Keynote-20140302.pdf
http://www.isus.jp/article/visual-computing/opencl-12-how-to-increase-performance-by-minimizing-buffer-copies/

今のところBroadwellもKaveriも CL_DEVICE_SVM_FINE_GRAIN_SYSTEM では無いみたいだ。
なんかkernel側にも手を入れなくちゃ駄目らしいのでWindowsだと10以降に実現されるんだろうか?

CL_DEVICE_SVM_FINE_GRAIN_BUFFERのシステムでも専用のheap managerを使ってSVM Buffer内に限定したポインタにすれば大丈夫なんだろうか?
まぁでもその方法だと余所のライブラリを使う時に問題になりそう。。

現時点ではCL_DEVICE_SVM_COARSE_GRAIN_BUFFERの構成が殆どだろうし、5年ぐらい待たないと駄目かも。。

CUDA

http://topsecret.hpc.co.jp/wiki/index.php/CUDA_6%E9%80%9F%E5%A0%B1%281%29:_Unified_Memory

PCI Expressで隔てられているシステムでもドライバが裏で仕事をするので手間が要らない方式(パフォーマンスは明示的な方法に比べて劣るとの事)

http://devblogs.nvidia.com/parallelforall/faster-parallel-reductions-kepler/

レジスタ間の操作で高速化