====== Algorithmique pour la programmation parallèle ====== SoA (structure of array) et AoS (array of structure) ===== Double et simple précision ===== Impact sur l’occupation mémoire, sur les performances, sur la précision des résultats (stabilité algorithmique). Nombre cores disponibles selon la précision (utiliser deviceQuery) et l’architecture. Minimum capacité CUDA 1.3 ou supérieure. {{ :560-1_simple_and_double_precision.png |}} Single and double precision en fonction de CC Comment changer la précision sur CUDA ? En utilisant les options de compilation de PTX (nvcc). Minimum pour la double précision : Compute Capabilities 1.3. Compiler le code CUDA avec « sm_13 ». « map_f64_to_f32 » permet de forcer l’utilisation en 32 bits lorsque le GPU ne supporte pas la double précision. Améliorer la ré-utilisabilité en utilisant les options de compilation ===== Code de correction des erreurs ===== Error-correcting code (ECC) : correction du code pour éviter les erreurs. Pas sur tous les processeurs. Impact sur l’occupation mémoire, sur les performances, sur la précision des résultats (stabilité algorithmique). Teste par cudaDeviceProp.ECCEnabled ===== Libs cuda ===== {{ :cufft_cublas_cuda_6.png |}} utilisation automatique de gpu ou cpu. Possibilité de changer directement le link d'une appli existante utilisant BLAS3 pour utiliser NVBLAS