ローカル メモリをまったくサポートしない Mali GPU を使用しています。ローカル メモリで構成されるコードを実行するたびに、デバイスからいくつかのエラーが発生します。そのため、コードをグローバル メモリのみを使用するバージョンに転送したいと考えています。GPU のみでグローバル メモリを使用してプレフィックス サム/パラレル リダクション アルゴリズムを実行できるかどうかを考えていました。
EDITED
: エラーをデバッグしていて、ある特定の行でエラーが発生しているという奇妙なことがわかりました。次のような行があります。
`#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]**`
ふたはローカル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] `