2016-09-22 8 views
2

Я пытаюсь сохранить часть ядра в коде с 3 "" "в другом файле. Я попытался сохранить его в виде текстового файла и файла bin и прочитать это, но я не нашел успеха с ним. Он начал давать мне ошибку, говоря «« »отсутствует, или) отсутствует. «Тем не менее, если я просто скопирую код ядра в cl.Program (, он работает.Хранение ядра в отдельном файле - PyOpenCL

Итак, есть способ абстрагировать длинный код ядра в другой файл? Это специфично для python, спасибо!

#Kernel function 
prg = cl.Program(ctx, """ 
__kernel void sum(__global double *a, __global double *b, __global double *c) 
{ 
    int gid = get_global_id(0); 
    c[gid] = 1; 

} 
""").build() 

Так в значительной степени все, что внутри «» «„“», то второй аргумент cl.Program() функции, я wan't перейти в другой файл.

+0

Может захотеть показать ваш код. – DrC

+0

Вопрос не кодовое, а скорее специфическое для архитектуры. Тем не менее, я добавил пример кода, чтобы сделать его более понятным :) – RandN88

ответ

1

Просто поместите код ядра в текстовый файл, а затем используйте open(...).read(), чтобы получить содержимое:

foo.cl

__kernel void sum(__global double *a, __global double *b, __global double *c) 
{ 
    int gid = get_global_id(0); 
    c[gid] = 1; 

} 

Python код

prg = cl.Program(ctx, open('foo.cl').read()).build() 
+0

Я добавлял «" в cl-файл, и это вызывало странные ошибки. – RandN88

0

Код ядра также может храниться в .c файл в foo.c. Таким образом, его легче редактировать в редакторах, таких как xcode. Это можно прочитать так же

prg = cl.Program(ctx, open('foo.c').read()).build()