我有一个Mali GPU,它根本不支持本地内存。 每次我运行由本地内存组成的代码时,都会给我一些设备错误。 因此,我想将代码转移到仅使用全局内存的版本。 我在想是否有可能仅在GPU上使用全局内存运行前缀求和/并行约简算法。

EDITED :我正在调试错误,发现奇怪的是,某一行正在给erorr。 我有这样的e行:

`#define LOG_LSIZE 8`
`#define LSIZE_SHIFT_VALUE 4`
`#define LOG_NUM_BANKS 2`
`#define GET_CONFLICT_OFFSET(lid) ((lid) >> LOG_NUM_BANKS)`
`#define LSIZE 32`
`__local int lm_sum[2][LSIZE + LOG_LSIZE]`
`**lm_sum[lid >> LSIZE_SHIFT_VALUE][bi]  +=  lm_sum[lid >>  LSIZE_SHIFT_VALUE][ai]**`

lid是本地ID,我使用了大小为32的qork组。我发现突出显示的行是导致错误的原因。 我尝试使用固定值,发现无法在语句的右侧使用lm_sum 如果我这样做,那将给我一个错误。 例如,此行也给我错误: int temp= lm_sum[0][0]

有什么想法吗?

错误:

`In initial.cpp***[14100.684249] Mali<ERROR, BASE_MMU>: In file: /home/jbmaster/work/01.LPD_OpenCL_RFS/01.arm_work_3_0_31/SEC_All_EVT0_TX013-BU-00001-r2p0-00rel0/TX013-BU-00001-r2p0-00rel0/driver/product/kernel/drivers/gpu/arm/t6xx/kbase/src/common/mali_kbase_mmu.c line: 1240 function:kbase_mmu_report_fault_and_kill 
[14100.709724] Unhandled Page fault in AS0 at VA 0x00000002000EC1A0
[14100.709728] raw fault status 0x500003C3
[14100.709730] decoded fault status: SLAVE FAULT
[14100.709733] exception type 0xC3: TRANSLATION_FAULT
[14100.709736] access type 0x3: WRITE
[14100.709738] source id 0x5000
[14100.734958] 
[14100.736432] Mali<ERROR, BASE_JD>: In file: /home/jbmaster/work/01.LPD_OpenCL_RFS/01.arm_work_3_0_31/SEC_All_EVT0_TX013-BU-00001-r2p0-00rel0/TX013-BU-00001-r2p0-00rel0/driver/product/kernel/drivers/gpu/arm/t6xx/kbase/src/common/mali_kbase_jm.c line: 899 function:kbase_job_slot_hardstop 
[14100.761458] Issueing GPU soft-reset instead of hard stopping job due to a hardware issue
[14100.769517] ` 

===============>>#1 票数:0

由于lm_sum [0] [0]不起作用,因此未分配该阵列的内存。 您说您的GPU不支持本地内存。 好吧,您正在尝试使用声明在本地内存中的lm_sum(__ local int lm_sum [2] [LSIZE + LOG_LSIZE])。

  ask by Luniam translate from so

未解决问题?本站智能推荐: