Предполагая, что это действительно ядро, о котором говорилось в вашем исходном посте до того, как вы отредактировали новый код, вы не можете вызывать стандартные функции C-библиотеки, такие как memcpy
внутри ядра CUDA (вы делаете это примерно на полпутичерез код).Вы можете вызывать только __device__
функции в ядре.Так что, если это не повторная реализация memcpy
в CUDA, вызов этой функции внутри вашего ядра не будет работать ...
Кроме того, если вы собираетесь пытаться писать ядра CUDA, которые должнычтобы проверить результаты того, что написали другие потоки в группе, например, что вы делаете в разделе сравнения памяти вашего ядра, вам нужно будет поместить некоторые точки синхронизации в ваш код, чтобы убедиться, что все потоки достиглиопределенный момент, прежде чем начать проверять результаты из этих потоков.Если вы пытаетесь проверить, что другой блок мог записать в основную память, для этого также есть примитивы синхронизации, которые гарантируют, что результаты любого предыдущего блока потока будут записаны в основную память.