Si le code de notre projet ne fait pas appel explicitement à numpy, il l’utilise indirectement au travers des packages pillow (PIL) et pygame. En accélérant l’exécution de numpy, on optimise nettement l’exécution de ces packages graphiques et donc la fluidité de notre jeu.

Pour accélérer numpy on fait appel à des implémentations des APIs d’algèbre linéaire BLAS et LAPACK. Deux solutions majeures s’offrent à nous :

  • Intel MKL: librairies au code propriétaire mais dont l’usage est de type Freeware (Intel Simplified Software License).
  • OpenBLAS: librairies open source (licence BSD).

Bien qu’Intel MKL soit très performant, pour rester dans l’approche open source, nous allons choisir la solution OpenBLAS.

Sous Linux, la solution est très simple à mettre en œuvre :

  • Des binaires pré compilés d’OpenBLAS sont directement disponibles.
  • La compilation de Numpy avec OpenBLAS fonctionne directement avec la configuration par défaut du build numpy.

Sous Windows, l’expérience est réputée plus délicate…

Le plus gros de nos efforts va effectivement être consacré au build d’OpenBLAS puis de numpy+OpenBLAS sous Windows. Si la solution proposée n’est pas la plus concise ni la plus élégante elle a le mérite de fonctionner.