Umumiy xotiradan foydalanish
KOMPYUTER TADQIQOTLARI VA SIMULATSIYA
Jadval 7.
ComputeCapability 1.0, 1.1 ComputeCapability 1.2, 1.3, 2.0 grafik adapterining apparat
arxitekturasi versiyasiga qarab global xotiraga birlashtirilgan soÿrovning paydo boÿlish shartlari Qoÿngÿiroq
32-bit yoki 64-bitga oÿtadi. 16-, 32- yoki 64-bitga o'tadi
A. M. Kazyonnov
Blok uning o'lchamiga mos keladi
Blok o'z o'lchamiga
moslashtirilgan;
hech qanday ziddiyat yo'q, chunki floatning o'lchami 32 bit va ketma-ket float elementlari ketma-ket
banklarga tushadi.
306
so'zlar
to'rtinchi tartibli to'qnashuvlar char elementining o'lchami 8 bit bo'lganligi sababli yuzaga keladi va 4 ta
ketma-ket belgilar bir xil bankka tushadi.
nusxa
ko'chirish. cudaError_t cudaFree(void* devPtr) - qurilmadagi xotirani bo'shatish.
Agar qo'shilish shartlari bajarilmasa,
ComputeCapability 1.0 yoki 1.1 bo'lgan GPU 16 ta alohida
tranzaksiyani
amalga oshiradi va ComputeCapability 1.2, 1.3, 2.0 bo'lsa, so'rovlar butun so'rov hajmini
qamrab olgan bir nechta bloklarda bajariladi.
Umumiy xotira bilan ishlashning standart sxemasi quyidagicha:
yo'nalishni ko'rsatadigan to'rtta qiymatdan biri (cudaMemcpyHostToDevice, cudaMemcpyDeviceToHost,
cudaMemcpyHostToHost, cudaMemcpyDeviceToDevice)
K-chi ip blokdagi K-elementga ishora qiladi
• kerakli ma'lumotlarni umumiy xotiraga yuklash (globaldan), • __syncthreads(),
• yuklangan ma'lumotlar bilan
hisob-kitoblarni amalga
oshirish, • __syncthreads(), • natijani global xotiraga yozish.
Umumiy xotira har bir SMda joylashgan va blok ichidagi barcha oqimlar tomonidan taqsimlanadi.
Umumiy xotira odatda nusxa ko'chirish va yangilash operatsiyalaridan keyin __syncthreads() aniq
sinxronlash buyrug'idan foydalanishni talab qiladi. O'tkazish qobiliyatini oshirish uchun umumiy xotira 16 ta
bankka bo'lingan, ularga mustaqil ravishda kirish mumkin. Banklar 32 bitli so'zlardan iborat bo'lib, ketma-
ket so'zlar ketma-ket bloklarda joylashgan. Agar bir xil bankka (element emas, balki bank) bir nechta iplar
kirishi bilan bog'liq vaziyat yuzaga kelsa, ularning so'rovlari ketma-ket ko'rib chiqiladi (bank
mojarosi yuzaga
keladi), lekin agar
barcha oqimlar bir xil elementga kirsa, u holda bank ziddiyatlari sodir bo'lmaydi.
Masalan, __shared__ float a[N]; float x = a[base+threadIdx.x];
Global xotira bilan ishlash samaradorligini oshirish uchun kirish bir vaqtning o'zida 16 ta yarim ipli
iplardan kelib chiqishini va global xotira bilan ishlashni sezilarli darajada tezlashtiradigan
maxsus kirish
naqshlari mavjudligini yodda tutish kerak. GPU so'rovlarni 32/64/128 bayt bloklarga birlashtirish qobiliyatiga
ega. So'rovlarni yig'ish imkoniyatlari grafik adapter apparati arxitekturasining versiyasiga qarab farqlanadi
(7-jadvalga qarang).
devPtr qurilmadagi xotiraga ko'rsatgichdir.
so'zlar
__shared__ char a[N]; char x =
a[base+threadIdx.x];
Machine Translated by Google