Как вы используете double в OpenCL на MacPro?

У меня есть Mac Pro (конец 2013 г.), и я хочу посчитать в двойном размере с помощью OpenCL. Когда я использовал Mavericks, в CL_DEVICE_EXTENSIONS для моего графического процессора FirePro было указано только cl_APPLE_fp64_basic_ops, поэтому я не мог использовать двойные математические функции, такие как exp(). Я недавно обновился до Yosemite, и теперь правильный cl_khr_fp64 есть в списке расширений, но я все еще не могу использовать exp для двойного. Журнал ошибок показывает, что он ищет перегруженную функцию, и exp доступен для float, float4, float8,..., но не для 64-битных. Я включил команду для включения fp64:

#pragma OPENCL EXTENSION cl_khr_fp64 : enable

Кто-нибудь знает, что происходит? Почему GPU говорит, что доступно cl_khr_fp64, но я не могу использовать все это. Я могу +-*/ в двойном размере, но раньше я мог делать это только basic_ops. Apple лжет мне, что они обновили поддержку fp64?

Странно, на моем процессоре OpenCL также говорит, что cl_khr_fp64 также доступен, но я также не могу использовать exp на процессоре.


person dusty_keyboard    schedule 13.01.2015    source источник
comment
Вы пробовали это: stackoverflow.com/a/26797959/1864294   -  person Michael Dorner    schedule 17.01.2015
comment
@MichaelDorner, я попробовал это, и он возвращает 63 для CL_DEVICE_DOUBLE_FP_CONFIG. Я также нашел документацию от Apple, в которой говорится, что D700 поддерживает двойное. store.apple.com/us/buyFlowCTOLearnMore/ME253LL/ Кроме того, когда я запускаю это на своем процессоре через OpenCL, это тоже не работает. ЦП также возвращает 63 для CL_DEVICE_DOUBLE_FP_CONFIG.   -  person dusty_keyboard    schedule 19.01.2015
comment
Отвечает ли это на ваш вопрос? ошибка ядра OpenCL в Mac OSx   -  person talonmies    schedule 01.12.2019


Ответы (1)


В OpenCL C вы должны называть их двойными, а не cl_khr_fp64s
например,
double pie = M_PI;
double2 two_pies = (double2){M_PI}; // or {M_PI,M_PI};

person Mercutio Calviary    schedule 16.01.2015