Кхм, то есть дальше 2012 уже не обновляет? Это, конечно, сложно будет поддерживать… Ну вы всё же на всяк зайдите в GeForce и тыкните проверку обновлений драйверов.
И, в принципе, можно попробовать вставить это перед cl.EnqueueMarkerWithWaitList
:
var hnd := GCHandle.Alloc(self.evs, GCHandleType.Pinned);
Но, в теории, оно может помочь только если у вас какая то древняя версия .Net .
Если не поможет - остаётся только 1 вариант. Проблема явно в другой части программы, это OpenCL решает кинуть ошибку, почему то, только при вызове cl.EnqueueMarkerWithWaitList
. При чём часть которой легче всего сломаться - собственно вызов kernel
-а, выполняется успешно.
Проблема скорее всего в баге драйвера. И, в принципе, я могу попробовать залатать её костылём в модуле, но для этого мне нужен минимальный код модуля. И раз воспроизводится только у вас - только вы можете найти этот минимальный код.
Это придётся час-два просидеть, убирая части модуля (главное OpenCLABCBase
, но OpenCLABC
, скорее всего, тоже придётся порезать, потому что он использует много из OpenCLABCBase
), проверяя чтоб ошибка оставалась одинаковой.