Supposons que j'ai un noyau qui effectue un accès mémoire strided comme suit:bande passante mémoire effective d'un accès mémoire strided
__global__ void strideExample (float *outputData, float *inputData, int stride=2)
{
int index = (blockIdx.x * blockDim.x + threadIdx.x) * stride;
outputData[index] = inputData[index];
}
Je comprends que les accès avec une taille foulée de 2 entraînera une efficacité de charge/stockage de 50% , puisque la moitié des éléments impliqués dans la transaction ne sont pas utilisés (perte de bande passante). Comment procédons-nous pour calculer l'efficacité de chargement/stockage pour les grandes foulées? Merci d'avance!
Ok merci! Disons que nous avons une taille de foulée de 6 dans la question ci-dessus, comment pouvons-nous calculer l'efficacité de la charge? –
Est-ce la même chose pour CUDA Compute Cabability 1.1 et 1.2? –
Oui, cela fonctionne de la même manière pour toutes les capacités de calcul. Dans 1.0 et 1.1, les tailles de transaction sont un peu différentes, mais l'idée générale est la même. –