从单独的文件中读取OpenCL内核

不同的

我正在尝试从文件“ kernel.cl”中读取OpenCL内核,但是一旦读取,读取的内核最终在程序末尾会有未知的符号。未知符号的数量与内核文件中的行数相同。

我用来获取内核的代码:

FILE *fp;
char *source_str;
size_t source_size, program_size;

fp = fopen("kernel.cl", "r");
if (!fp) {
    printf("Failed to load kernel\n");
    return 1;
}

fseek(fp, 0, SEEK_END);
program_size = ftell(fp);
rewind(fp);
source_str = (char*)malloc(program_size + 1);
source_str[program_size] = '\0';
fread(source_str, sizeof(char), program_size, fp);
fclose(fp);

该代码可在另一个项目上使用,所以我不知道出了什么问题。如果内核中的所有代码都在一行上,这似乎也可行。

任何帮助,将不胜感激,谢谢!:)

价格

MSDN页面中fopen()提到,当使用"r"模式字符串作为文件打开文件时,行尾会发生一些翻译。这意味着您查询的文件大小可能与读取的数据量不匹配fread()这就解释了为什么无效字符的数量等于文件中的行数(以及为什么它可以与一行中的所有代码一起使用)。

解决方案是使用以下"rb"标志打开文件

fp = fopen("kernel.cl", "rb");

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章