这次提交 https://reviews.llvm.org/rL289252 says:
In amdgcn https://en.wikipedia.org/wiki/Graphics_Core_Next目标、全局、常量和通用地址空间中的空指针取值 0,但私有和本地地址空间中的空指针取值 -1。
他们如何使用这两个不同的 NULL 值?
As to why:我实际上不知道这一点,但本地/私有地址空间指针几乎肯定只是作为平面物理寄存器文件/内存区域中的偏移量/索引来实现。没有类似虚拟内存的地址重新映射,只是一个大数组。您仍然希望能够访问数组索引 0,因此“无效指针”(无效索引)需要是其他内容。
不要忘记,NULL = 不可解引用指针 = 0 只是一个习俗在常规 C 中也是如此 - 一些非 OpenCL 系统在地址 0 处也有有效内存。有关 memset 等的标准存在一些复杂性,因此如果您对确切的内容感兴趣,您最好自己阅读该文档规格。
我不确定你到底想问什么”how" - 您无法在不同 OpenCL 地址空间中的指针之间明智地进行转换,因此不存在冲突。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)