ユニファイドメモリアーキテクチャ
OpenCLのclCreateBuffer()のflags引数にCL_MEM_USE_HOST_PTRまたはCL_MEM_ALLOC_HOST_PTRを使用することで、ホスト(CPU)側に割り当てられたメモリをバッファとして使用できる。UMA環境では、(GPUなどの)デバイス固有のルールに従ってこれらを利用することで、バッファ読み書きの際にコピーが不要となる「ゼロコピーバッファ」を実現することができる可能性がある。例えばIntel Graphicsでは、4096バイト境界でアライメントされ、64バイトの倍数のサイズを持つ既存のメモリ領域をバッファとして使うことで、ゼロコピーバッファを実現することができる。ただし実装依存であり、UMA環境だからといって必ずしもゼロコピーバッファになるとは限らない。
OpenCL 2.0では、共有仮想メモリ(Shared Virtual Memory, SVM)の機能が追加され、ホストとデバイスで仮想メモリ空間を共有できるようになった。SVMにより、UMA環境ではゼロコピーが実現できるようになるだけでなく、ポインタを使用した複雑なデータ構造をデバイス側で利用することもできるようになる。