Mon professeur a découvert cette expérience intéressante de convolution de noyau 3D linéairement séparable en utilisant SSE et OpenMP, et m'a donné la tâche de comparer les statistiques sur notre système. L'auteur revendique une accélération folle de 18 fois de l'approche en série! Peut-être pas toujours, mais nous attendions au moins 2 à 4 fois plus de temps sur un Intel Dual Core.OpenMP + SSE ne donne aucune accélération
Hélas, nous avons pu trouver exactement pas speedup. Le code série fonctionne toujours mieux, avec ou sans OpenMP. J'utilise Linux, et j'ai observé une certaine tendance ... quand aucun autre processus n'est en cours d'exécution sur le système, après un certain temps, le loadavg commence à augmenter, et l'utilisation du% CPU tombe.
Un autre faux positif probable que j'ai rencontré accidentellement ... J'ai démarré le programme, puis immédiatement mis en pause. Ensuite, j'ai couru sur fond avec bg, et j'ai vu une accélération de plus de 2. Cela arrive tout le temps!
Tout conseil serait génial.
Merci, Sayan
Etes-vous sûr que votre vitesse de processeur est le goulot d'étranglement? – Mene
Désolé d'exclure une partie essentielle. J'envoie juste deux choses au programme, le XYZSize et le nombre de fois que le programme devrait fonctionner. Donc sur un dual core avec 4 Go de RAM, si je passe 1024X1024x1024 pour des valeurs entières, la limite de 4 Go est atteinte. Peut-être est-ce la raison pour laquelle la chose étrange se produit avec le% CPU et l'augmentation de loadavg. Mais même pour des valeurs plus petites, comme 16,32,64 ou 256 (le programme accepte XYZSize en multiples de 8), il n'y a absolument aucune accélération. –