2016-09-14 12 views
0

Я не могу скомпилировать программы, используя функции write_imagef() в реализациях Nvidia. Работа с Tesla K10.G2.8GB использованием драйвера версии 367.35 на python 2.7 с PyopenCL 2016.1, Я пытаюсь собрать следующую программу, которая терпит неудачу с ошибкой сборки:Запись в память текстуры на устройстве Nvidia с OpenCL

Хост Код:

import pyopencl as cl 

platform = cl.get_platforms()[0] 
devs = platform.get_devices() 
device1 = devs[1] 
mf = cl.mem_flags 
ctx = cl.Context([device1]) 
Queue1 = cl.CommandQueue(ctx) 

f = open('Minimal.cl', 'r') 
fstr = "".join(f.readlines()) 
prg = cl.Program(ctx, fstr).build() 

Kernel (Minimal .cl)

__kernel void test(image2d_t d_output){ 
    write_imagef(d_output,(int2)(1,1),(float4)(1.0f,1.0f,1.0f,1.0f)); 
} 

ошибки я получаю:

pyopencl.cffi_cl.RuntimeError: clbuildprogram failed: BUILD_PROGRAM_FAILURE - 

Я проверил, поддерживает ли мое устройство поддержку изображений и поддерживает чтение и запись в текстурных буферов в указанном формате. Я думаю, что тот же случай не будет работать для 3d-случая, , потому что расширение cl_khr_3d_image_writes не поддерживается ни на одном из наших устройств Nvidia, , но я не понимаю проблему для 2D-футляра.

+0

Проблема, кажется, не ограничивается этим устройством. Происходит в каждой реализации Nvidia, которую мы используем. – Dschoni

+1

При несоблюдении программы вызовите эквивалент PyopenCL, вызывающий API CLGetProgramBuildInfo OpenCL с CL_PROGRAM_BUILD_LOG, чтобы получить удобное для чтения описание того, что пошло не так. – Dithermaster

ответ

2

аргументы изображения должны быть объявлены либо как read_only или write_only (или read_write с OpenCL 2.x), поэтому ваше определение ядро ​​должно выглядеть следующим образом:

__kernel void test(write_only image2d_t d_output){ 
    write_imagef(d_output,(int2)(1,1),(float4)(1.0f,1.0f,1.0f,1.0f)); 
} 
+0

Я только что нашел это сам. Я просто удивляюсь, почему это нигде не упоминается в стандартной документации .... – Dschoni

 Смежные вопросы

  • Нет связанных вопросов^_^