我正在使用全局内存块中的ring-buffer编写简单的调试/日志记录功能。问题是OpenCL中缺少任何类似snprintf
的函数。会有什么建议?使用一些嵌入式实现,并扩展矢量类型的格式规范?
(请不要回复字符串ops是低效的,OpenCL是为计算设计的;我知道。)
答案 0 :(得分:1)
某些CPU实现支持printf等,因此如果您的实现不依赖于未导出的工作组维度,这可能会有所帮助。当我使用OpenCL时,我通常会在主机端进行验证,即实现缓冲区读取算法,然后使用工作项的1:1映射将数据写回结果缓冲区。这使得很容易验证,因为你知道哪个线程写了结果缓冲区中给出索引的内容。使用已知数据初始化客户端缓冲区(即在执行内核之前将主机缓冲区复制到重新缓冲区中)以避免混淆可能是个好主意。
我意识到这不是一个非常技术性的答案,但我希望它有所帮助。