CUDA: хотира чегараси жойида, ма’лумотлар-чи?
CUDA: хотира чегараси жойида, ма’лумотлар-чи?
Cуда-кодингизни текширдингиз: мемчеcк хато топмади, лекин натижа ҳали ҳам нотўғри. Гпу’дан шубҳаланишдан олдин ма’лумотлар ўқилишидан аввал хотирага ёзилганини текширинг.
NVIDIA Cомпуте Санитизер’да бунинг учун алоҳида инитчеcк режими бор. У GPU хотирасининг ҳали ма’лумот ёзилмаган қисмларига мурожаатларни қидиради. Стандарт ҳолатда глобал меморй — қурилманинг асосий хотираси текширилади. Массив чегараларини ва унинг тўлдирилганини текшириш бошқа-бошқа вазифа.
Линух’да кичик, қайта бажариладиган тест учун аввал мемчеcк’ни ишга тушириб, топилган хатоларни тузатинг. Кейин cомпуте-санитизер --тоол инитчеcк ./апп буйруғини бажаринг; ./апп ўрнига ўз Cуда-дастурингизни қўйинг. Ҳисобот тўлдирилмаган буфердан ўқишни кўрсатса, ҳамма жойни шунчаки нолга тўлдирманг — буферга ма’лумот ёзиладиган йўлни текширинг.
Шунда ма’лумот тайёрлашдаги хатони аппаратга оид гумондан ажратасиз. Инитчеcк мемчеcк ўрнини босмайди: NVIDIA аввал хотирага мурожаат хатоларини текширишни тавсия қилади. Ажратилган буфер ичидан ўқиш — тайёр ма’лумотни ўқиш дегани емас.

