Page 4 sur 7

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 16 Nov 2019, 12:50
de critor
parisse a écrit:Delta+KhiCAS est sur le point de passer en version beta. Afin de bien clarifier au niveau des licences, il faut distinguer deux projets
1/ Delta est l'ensemble des modifications apportees a Epsilon, qui sont donc sous la meme licence que Epsilon.
2/ KhiCAS qui est sous licence GPL.
Ces deux projets donnent lieu chacun a un firmware, le firmware Delta etant capable de lancer un firmware externe en adresse fixe via une application nommee Extension ou en tapant sur HOME quand on est dans Home, ce firmware externe peut etre n'importe quel firmware configure pour avoir sa fonction "main" en 0x92000000, en particulier KhiCAS est un firmware externe de ce type.

En grattant a droite et a gauche pour economiser la RAM, il est possible d'utiliser la version 12.2 d'Epsilon au complet (y compris l'app Regression qu'on avait enlevee dans un premier temps). On a donc en quelque sorte 2 calculatrices independantes et on passe de l'une a l'autre par des appuis successifs sur HOME.

Je suis en train de regler les parametres de Delta en essayant de faire au mieux.
Je vais essayer avec les parametres suivants:
pool Poincare (poincare/include/poincare/tree_pool.h) 16384 "unites" de 5/3 ce qui fait un peu plus de 27 000 octets (moitie moins que Epsilon).
tas pour MicroPython (apps/code/app.h) 21280 octets (soit 30% de plus que Epsilon sans modification)
zone de stockage (ion/include/ion/storage.h): 18408 au lieu de 16384

Voici les raisons de mon choix:
pour la zone de stockage: il s'agit de tenir compte de la sauvegarde de la session courante de KhiCAS. 2K de plus c'est peu, mais si on augmente plus il faut diminuer le tas MicroPython ou mordre sur la RAM pour KhiCAS.
pour le tas MicroPython: c'est le maximum possible sans changer la taille du snapshot des applications.
pour Poincare: les calculs un peu intensifs ont tout interet a etre fait dans KhiCAS. Par exemple, j'ai teste le calcul suivant det(1/a^32) ou a est une matrice 4x4 a coefficients entiers entre 0 et 10, il y a un rapport de vitesse de 50 environ.
Le pool de Poincare devrait donc etre affecte en priorite aux apps (fonction, suite, etc.) et aux petits calculs lorsque l'utilisateur prefere l'entree naturelle en 2-d de Calculs vs en 1-d ou avec l'editeur d'expressions 2-d dans KhiCAS.
Au final sur les 256K de RAM, il y a dans cette configuration environ 70K de RAM pour KhiCAS (dont 8K pour eviter les risques de debordements), 87K pour le snapshot d'Epsilon, 26K de pool Poincare, 18K de storage partage, 32K de stack, le reste en variables globales diverses initialise ou non.
Si le pool Poincare est insuffisant, on peut bien sur l'augmenter un peu (mais pas au niveau du firmware d'origine Epsilon...).

Apres bien sur chacun est libre de changer les valeurs de ces parametres pour son propre usage et recompiler Delta+Khicas.
La doc est la:
https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec32

Merci pour ces grandes avancées. :)

L'idéal serait une diffusion sous forme d'image firmware précompilée directement installable via https://ti-planet.github.io/webdfu_numworks/n0110/ par exemple.
La nécessité de compiler va exclure/décourager beaucoup de monde parmi la cible...

Il serait peut-être envisageable de diffuser 2 images firmware distinctes si c'est juste pour faire plaisir à NumWorks, une pour Delta et une pour KhiCAS.
Avec l'idée que l'utilisateur ait juste à les concaténer.
Une autre idée serait que l'utilisateur les flashe successivement en précisant pour l'une des deux une adresse fixe plus haute dans la Flash externe si cette option est rajoutable à notre outil.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 16 Nov 2019, 13:02
de parisse
zardam a precisement reussi a faire cela: produire 2 firmwares separes, qui s'installent avec dfu-utils, cf.
https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec2
Pour Damien et moi, il n'y a plus d'obstacles a une diffusion sous forme compilee des deux firmwares, mais pour etre bien sur que ca ne pose pas de problemes de licences cote Numworks, on va leur envoyer un mail lundi.
Sinon, j'ai pas mal detaille comment compiler, c'est beaucoup plus complet que sur le site de Numworks (et c'est en francais).

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 16 Nov 2019, 13:12
de parisse
P.S.: tiplanet peut a mon sens diffuser Delta, mais Numworks ne peut pas actuellement diffuser Delta, seule la diffusion a titre non commercial est autorisee par la licence que Numworks a choisie. Par contre ils peuvent diffuser la version GPL de Khicas (mais sans Delta ca ne sert pas a grand chose...).
Si Numworks veut ajouter du calcul formel sur la N0110, ils peuvent tres bien passer un accord avec Damien et moi pour utiliser commercialement Delta, ou bien implementer independamment un SDK C compatible avec https://www-fourier.univ-grenoble-alpes.fr/~parisse/numworks/khicasnw.html#sec37.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 09:39
de parisse
Question: quelle taille maximale pour un script individuel vous parait raisonnable?
Sachant que si on diminue de 16K (qui est aussi la taille complete de l'espace de stockage des scripts sur Epsilon) a par exemple 12K, on peut gagner 4K sur le tas micro Python pour l'execution.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 10:12
de Lionel Debroux
Si je me souviens bien, l'expérience de critor et d'autres utilisateurs indiquait qu'un tas Python de 16 KB permettait de traiter des programmes de 4-5 KB seulement... donc en effet, pour un script unique, mieux vaut 12 KB de stockage de scripts + 20 KB de tas Python que 16 KB de stockage de scripts + 16 KB de tas Python.
J'ignore cependant si la limite de taille de stockage de scripts est facilement rencontrée en pratique par les utilisateurs qui utiliseraient plusieurs scripts.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 10:23
de coco33920
Bonjour :D
Je sortais d'une version assez vielle de Delta datant d'il y a quelques semaines ( je me souviens pas exactement ) et là c'est vraiment top!
La version 12 + la facilité de passer d'un firmware à l'autre + plus de clignotement sur l'écran c'est vraiment hyper sympa!
J'ai pas fais tout le tour mais je sens que je vais passer pas mal de temps sur l'application extension :)
Merci à vous pour votre boulot!

Concernant la taille je rejoint les autres 12k me paraissent suffisant! Après je ne fais pas de gros script je suis trop habituée à développer sur PC donc dès que quelque chose devient complexe/long je bascule sur PC.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 10:26
de critor
parisse a écrit:Question: quelle taille maximale pour un script individuel vous parait raisonnable?
Sachant que si on diminue de 16K (qui est aussi la taille complete de l'espace de stockage des scripts sur Epsilon) a par exemple 12K, on peut gagner 4K sur le tas micro Python pour l'execution.

Me concernant je dirais 8K, mais j'ai l'habitude de compresser mon code à mort à cause des problèmes de mémoire sur NumWorks, ce qui n'est pas le cas de tout-le-monde.
Prenons donc de la marge avec 12K.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 11:31
de parisse
Ok, partons sur 12K. Sachant que rien n'empeche d'avoir 2 scripts tant qu'on ne depasse pas la taille du scriptstore (que je vais passer a 20K je pense, maintenant que c'est independant de la taille de script maximale). Ce qui nous fera un tas microPython a 24K+4K=28K, un peu en-dessous des 32K de Omega, mais pas beaucoup.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 16:15
de parisse
coco33920 a écrit:
Concernant la taille je rejoint les autres 12k me paraissent suffisant! Après je ne fais pas de gros script je suis trop habituée à développer sur PC donc dès que quelque chose devient complexe/long je bascule sur PC.

Oui, surtout si on programme sur la calculatrice elle-meme, en general on n'ecrira pas plus d'une dizaine de lignes, bien loin de la taille des programmes de type des defis des concours de tiplanet, donc si 12K suffisent la, ca devrait suffire pour les autres usages.
Et si on programme la Numworks sur un PC, autant utiliser le PC, ou alors programmer en C pour beneficier de la vitesse d'execution (j'ai mis dans shift-ANS la fractale de Mandelbrot, on peut comparer avec celle ecrite en interprete...) et de la place disponible en ROM. C'est assez different d'un calcul CAS qui peut vite necessiter pas mal de memoire meme avec une ligne de commande tres courte, sans que la personne qui lance le calcul n'en ait conscience.

Re: Firmware Delta N0110: calcul formel GIAC même en mode ex

Message non luPosté: 17 Nov 2019, 18:29
de coco33920
Oui je suis plutôt d'accord je vois pas l'intérêt d'avoir autant de stockage si ça baisse le tas pour l'éxécution