C'est effectivement totalement (shellement?) ironique. J'avais laissé la porte ouverte pour faire ça, mais une petite porte. Et voilà que des gens s'engouffrent dedans avec enthousiasme.
complètement :-/ Tu remarqueras aussi le joli travail de l'éditeur qui a pas été fichu de faire le rendu correct des commandes laTeX (bon, j'aurais du mieux relire son pre print aussi hein)
Dans ce cas le decltype dépend du type de retour de la lambda, ce qui rentre dans la catégorie lambda expression in unevaluated context et c'est interdit. Mais ça passe en c++14 il me semble (vu que le type de retour est inféré).
C'est pour supporter l'argument axis de numpy.argmin ou numpy.argmax dans pythran. Le commit complet, à peu près autour de la bonne ligne, est là :
https://github.com/serge-sans-paille/pythran/pull/803/files#diff-b20072554ff33a1cd786318f40ff0368R110 (attention, réponse demandant un peu de connaissance de l'API numpy)
Comme le paramètre d'entrée est une expression-tableau de dimension N (paramètre template), et qu'on veut calculer argmin en suivant l'axe axis (paramètre non connu à la compilation), il faut générer les N patrons de boucle possibles suivant la valeur de l'axe.
Petit exemple pour N = 3, on peut vouloir générer (cas du min qui est un peu plus simple, mais c'est l'idée)
Merci à toi de partager quelques instants de ton quotidien avec nous, de démystifier l'activité de recherche et montrer à quoi « ça sert » puisque l'on vit dans un monde où la finalité semble importante à beaucoup :-/
Quelques questions ! Tu dis que ta communauté est en contact avec celle qui poussent des langages comme Julia. Concrètement, comment se passent vos échanges, sur quels types de questions vous penchez vous etc ? Êtes-vous en contact avec la communauté LLVM pour aller vers des transformations prouvées, faire évoluer l'IR etc ?
Et tu n'as pas parlé d'une partie qui me semble prendre de plus en plus de temps dans le monde académique : la recherche de financement. Est-ce parce que l'INRIA est protecteur de ce point de vue, parce que c'est une partie négligeable dans ton cas, autre ?
Encore merci pour l'effort de vulgarisation et de partage !
Un grand merci pour ce journal passionnant, mêlant passion, code et humanisme. Je ne sais pas trop comment exprimer ça mais il se dégage de ce journal un ton de calme sérénité admirable. Ça donne envie !
Si un modérateur passe dans le coin : il manque un s à scientifique dans le titre, et dans la note de bas de page numéro 1, il faut remplacer chines par chiens sinon c'est moins drôle.
Qu'est-ce qui compile le plus vite ? gperf + le compilateur C, ou le code en C++ ?
Aucune idée. Je driais gperf +C intuitivement.
Qu'est-ce que tu entends exactement par le fait que olaf est moins robuste ?
C'est un bonhomme de neige, alors il fond :-)
En vrai, cette fonction de hash a de forte chance de toujours donner des collisions, donc elle est pas assez générique (j'aurais du écrire générique plutôt que robuste)
Comme en en C ou en C++, sans surprises, d'après la doc http://llvm.org/docs/LangRef.html#lshr-instruction
If op2 is (statically or dynamically) equal to or larger than the number of bits in op1, the result is undefined. Donc undefined behavior
[^] # Re: Liste des fonctions de numpy supportées
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran, en plein délire. Évalué à 4.
http://pythran.readthedocs.io/en/latest/SUPPORT.html
Tu y liras que
np.mgridn'est pas supporté. Je vais jouer avec ton bout de code, il est marrant. J'ai ouvert un ticket dessus pour garder une trace https://github.com/serge-sans-paille/pythran/issues/918[^] # Re: bidouille
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran, en plein délire. Évalué à 7.
C'est effectivement totalement (shellement?) ironique. J'avais laissé la porte ouverte pour faire ça, mais une petite porte. Et voilà que des gens s'engouffrent dedans avec enthousiasme.
Je jubile.
[^] # Re: Au passage : Pythran: Crossing the Python Frontier
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran, en plein délire. Évalué à 4.
complètement :-/ Tu remarqueras aussi le joli travail de l'éditeur qui a pas été fichu de faire le rendu correct des commandes laTeX (bon, j'aurais du mieux relire son pre print aussi hein)
[^] # Re: XPM
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pixel Art et C++14. Évalué à 2.
Mais mais… tu as raison, très amusant ce petit format :-)
[^] # Re: Pas C++11
Posté par serge_sans_paille (site web personnel) . En réponse au journal Obfusque ton code avec C++. Évalué à 2.
Si tu lis bien le code
std::make_index_sequencen'est pas utilisé, mais une version naïve est fournie.Quant au plantage sous GCC, je le constate aussi, mais je l'attribuerai plutôt à une limitation de GCC :-)
[^] # Re: Sans macro
Posté par serge_sans_paille (site web personnel) . En réponse au journal Obfusque ton code avec C++. Évalué à 3.
J'aurais bien aimé, mais non, la raison étant que si on passe par une fonction template on aurait un truc du genre
(parenthèsage non contractuel).
Dans ce cas le
decltypedépend du type de retour de la lambda, ce qui rentre dans la catégorie lambda expression in unevaluated context et c'est interdit. Mais ça passe en c++14 il me semble (vu que le type de retour est inféré).[^] # Re: Namespace bits ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 4.
Ça s'appelle Boost.operators non ?
[^] # Re: Lisibilité
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 8.
C'est pour supporter l'argument
axisdenumpy.argminounumpy.argmaxdans pythran. Le commit complet, à peu près autour de la bonne ligne, est là :
(attention, réponse demandant un peu de connaissance de l'API numpy)https://github.com/serge-sans-paille/pythran/pull/803/files#diff-b20072554ff33a1cd786318f40ff0368R110
Comme le paramètre d'entrée est une expression-tableau de dimension
N(paramètre template), et qu'on veut calculerargminen suivant l'axeaxis(paramètre non connu à la compilation), il faut générer les N patrons de boucle possibles suivant la valeur de l'axe.Petit exemple pour N = 3, on peut vouloir générer (cas du min qui est un peu plus simple, mais c'est l'idée)
le code pointé plus haut génère ces différentes boucles quelque soit
N, dans le cas deargmin, en gardant un typage correct.Je ne sais pas si je suis clair :-/
[^] # Re: Namespace bits ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 4.
La fonction template en question est marquée
noinline, ceci explique cela :-)[^] # Re: Namespace bits ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 4.
complètement !
On peut aussi voir ça comme un exercice de style, une sorte de jeu, ce qui est le cas de ce journal :-)
[^] # Re: Lisibilité
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 3.
L(e seul) avantage du deuxième, c'est que tu peux augmenter le nombre d'éléments du switch à volonté, sans avoir à spawner les copier-coller :-)
[^] # Re: Namespace bits ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Jouons avec le ``switch`` et C++17. Évalué à 2.
C'est ça !
# Passionant
Posté par serge_sans_paille (site web personnel) . En réponse au journal La recherche en langages de programmation au quotidien. Évalué à 10.
Merci à toi de partager quelques instants de ton quotidien avec nous, de démystifier l'activité de recherche et montrer à quoi « ça sert » puisque l'on vit dans un monde où la finalité semble importante à beaucoup :-/
Quelques questions ! Tu dis que ta communauté est en contact avec celle qui poussent des langages comme Julia. Concrètement, comment se passent vos échanges, sur quels types de questions vous penchez vous etc ? Êtes-vous en contact avec la communauté LLVM pour aller vers des transformations prouvées, faire évoluer l'IR etc ?
Et tu n'as pas parlé d'une partie qui me semble prendre de plus en plus de temps dans le monde académique : la recherche de financement. Est-ce parce que l'INRIA est protecteur de ce point de vue, parce que c'est une partie négligeable dans ton cas, autre ?
Encore merci pour l'effort de vulgarisation et de partage !
[^] # Re: Chieur de service
Posté par serge_sans_paille (site web personnel) . En réponse au journal Cinelerra, openshot video et kdenlive, le duel. Évalué à 8.
Et pour éviter les problèmes de genre, ont parle aussi d'une truelle !
[^] # Re: UN BIZUTH !
Posté par serge_sans_paille (site web personnel) . En réponse au journal [liens] Mais juste un. Évalué à 2.
Ou un Bizu :-)
[^] # Re: Existe-t-il des compilateurs C/C++ qui donnent une sémantique à tous les programmes ?
Posté par serge_sans_paille (site web personnel) . En réponse au journal Compilateur trop intelligent. Évalué à 3.
Pour un
rolportable et efficace, il y a : https://blog.regehr.org/archives/1063 !cf https://godbolt.org/g/TQchFT
[^] # Re: pypy
Posté par serge_sans_paille (site web personnel) . En réponse au journal Formation à Lyon : Compilateurs pour le Python Scientifique. Évalué à 2.
@freejef, pour Lille, je te laisse voir avec l'organisateur.
# Trugarez
Posté par serge_sans_paille (site web personnel) . En réponse au journal Comment je suis devenu chef de projet. Évalué à 10. Dernière modification le 08 octobre 2017 à 21:48.
Un grand merci pour ce journal passionnant, mêlant passion, code et humanisme. Je ne sais pas trop comment exprimer ça mais il se dégage de ce journal un ton de calme sérénité admirable. Ça donne envie !
Oh, et merci de m'avoir fait découvrir le Principe de subsidiarité !
[^] # Re: un temps d'exécution multiplié par 0.76
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran 0.8.2 — compilation de noyaux scientifiques écrits en Python. Évalué à 3.
Si l'original prend 1s, le nouveau temps est de 0.76s. Ça prend moins de temps, ça va plus vite.
# Typos
Posté par serge_sans_paille (site web personnel) . En réponse au journal Pythran 0.8.2 — compilation de noyaux scientifiques écrits en Python. Évalué à 3.
Si un modérateur passe dans le coin : il manque un s à scientifique dans le titre, et dans la note de bas de page numéro 1, il faut remplacer chines par chiens sinon c'est moins drôle.
[^] # Re: Numpy FTW
Posté par serge_sans_paille (site web personnel) . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 6.
Merci pour ton journal qui m'a motivé à ajouter le support Pythran pour ce paquet ! La PR débarquera sous peu :-)
# Cython inside
Posté par serge_sans_paille (site web personnel) . En réponse au journal Un Python qui rivalise avec du C++. Évalué à 10.
lu dans le README
Donc triche :-) Ce n'est plus du Python mais un langage hybride…
[^] # Re: Temps de compilation
Posté par serge_sans_paille (site web personnel) . En réponse au journal Frozen - Une alternative à gperf pour les utilisateurs de C++14 fan de constexpr. Évalué à 5.
Aucune idée. Je driais
gperf +Cintuitivement.C'est un bonhomme de neige, alors il fond :-)
En vrai, cette fonction de hash a de forte chance de toujours donner des collisions, donc elle est pas assez générique (j'aurais du écrire générique plutôt que robuste)
# en LLVM
Posté par serge_sans_paille (site web personnel) . En réponse au journal Un décalage de 64 bits, ça vous inspire comment ?. Évalué à 4.
Comme en en C ou en C++, sans surprises, d'après la doc http://llvm.org/docs/LangRef.html#lshr-instruction
Donc undefined behaviorIf op2 is (statically or dynamically) equal to or larger than the number of bits in op1, the result is undefined.
[^] # Re: Module et type abstrait
Posté par serge_sans_paille (site web personnel) . En réponse au journal Une petite histoire d'utilisation type fort dans Ocaml. Évalué à 6.
j'ai ri :-)