NVIDIA/libcudacxx

annotated_ptr compile error

jdwapman opened this issue · 2 comments

I'm running into compile errors with the annotated_ptr that I believe should be working given the example docs here: https://nvidia.github.io/libcudacxx/extended_api/memory_access_properties/associate_access_property.html. If I'm doing something incorrectly please let me know. Otherwise, please let me know if this is a bug that needs to be fixed.

Example code:

#include <cuda/annotated_ptr>
#include <thrust/device_vector.h>

__global__ void foo(int* v) {
  int* pin =
      cuda::associate_access_property(v, cuda::access_property::persisting);
}

int main() {
  thrust::device_vector<int> v(100);

  foo<<<1, 1>>>(v.data().get());
  cudaDeviceSynchronize();
}

Compiler command:

nvcc main.cu -arch=sm_86 && ./a.out

Output:

main.cu(6): error: type name is not allowed

System specs:
Ubuntu 22.04
CUDA 11.7.0

Update: the compile error seems to disappear if I use brackets as shown in https://nvidia.github.io/libcudacxx/extended_api/memory_access_properties/access_property.html

For example:

  int* pin =
      cuda::associate_access_property(v, cuda::access_property::persisting{});

Seems like inconsistent documentation in the libcu++ "Memory access properties" section.

Sorry for taking so long to respond. This is indeed an error on your side. cuda::access_property::persisting is a type not an object. So you need to instantiate an object of that type to pass it to a function. AFAIK this is also how it is done in the linked documentation.

I am closing this, if there are other problems please open another issue