Я пытаюсь выполнить работу FP16, которая будет иметь и процессор, и графический процессор.Я исследовал свои варианты и решил использовать CUDA-преобразователь с половинной точностью и типы данных. Те, которые я намереваюсь использовать, указаны как __device__
и __host__
, которые согласно моему пониманию (и официальному * 1005)* документация ) должна означать, что функции могут вызываться из кода HOST и DEVICE.Я написал простую тестовую программу:
#include <iostream>
#include <cuda_fp16.h>
int main() {
const float a = 32.12314f;
__half2 test = __float2half2_rn(a);
__half test2 = __float2half(a);
return 0;
}
Однако, когда я пытаюсь скомпилировать ее, я получаю:
nvcc cuda_half2.cu
cuda_half2.cu(6): error: calling a __device__ function("__float2half2_rn") from a __host__ function("main") is not allowed
cuda_half2.cu(7): error: calling a __device__ function("__float2half") from a __host__ function("main") is not allowed
2 errors detected in the compilation of "/tmp/tmpxft_000013b8_00000000-4_cuda_half2.cpp4.ii".
Единственное, что приходит на ум, это то, что мой CUDA равен 9.1, и яЯ читаю документацию по 9.2, но я не могу найти ее более старую версию и ничего не могу найти в changelog .Идеи?