There is an issue with the Apple M GPUs when trying to write files from GPU buffers while running kernels in parallel. M series GPUs use shred memory instead of discrete memory. This results in the GPU over writing the buffer contents while a write is occurring. This is not a problem on CUDA GPUs because we use separate device and host buffers. On CPUs we also mimic a separate host and device buffers by performing a copy first.
To avoid this is maybe best to enqueue file IO as an item in the workflow manager. This will require some refactoring but it should make a cleaner API.
There is an issue with the Apple M GPUs when trying to write files from GPU buffers while running kernels in parallel. M series GPUs use shred memory instead of discrete memory. This results in the GPU over writing the buffer contents while a write is occurring. This is not a problem on CUDA GPUs because we use separate device and host buffers. On CPUs we also mimic a separate host and device buffers by performing a copy first.
To avoid this is maybe best to enqueue file IO as an item in the workflow manager. This will require some refactoring but it should make a cleaner API.