С момента введения CUBLAS V2 API (с CUDA 4.0, IIRC) возможно иметь подпрограммы, которые возвращают скаляр или индекс, чтобы хранить их непосредственно в переменной в памяти устройства, а не в переменной хоста (которая влечет за собой передачу устройства на перенос и может оставить результат в неправильном пространстве памяти).
Чтобы использовать эту функцию, вам нужно использовать cublasSetPointerMode
вызов сказать контекст CUBLAS ожидать указатели для скалярных аргументов, чтобы быть устройством указателей, используя режим CUBLAS_POINTER_MODE_DEVICE
. Тогда это означает, что в вызове, как
cublasStatus_t cublasIsamax(cublasHandle_t handle, int n,
const float *x, int incx, int *result)
что result
должен быть указателем устройства.
Спасибо, это сработало очень красиво! – rodms