Sujet Waldorf en faillite
- 159 réponses
- 29 participants
- 6 724 vues
- 2 followers
![.: Odon Quelconque :. .: Odon Quelconque :.](https://img.audiofanzine.com/images/u/user/avatar/28.gif)
.: Odon Quelconque :.
![10868 posts au compteur 10868 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
donc, après Cre@mware, c'est au tour de Waldorf de déposer le bilan (banqueroute).
Tout est là, en teuton dans le texte.
Vu que le site Waldorf est down, les abonnés à l'ancien forum sont invités s'ils le souhaitent à rejoindre un nouveau forum non-officiel:
http://waldorf.synth.net
![:mrg:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_mrgreen.gif)
« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)
![Pov Gabou Pov Gabou](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
Pov Gabou
![19553 posts au compteur 19553 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
![:bave:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_bave.gif)
J'ai été surpris il y a deux ans pendant un stage où mon boss m'a montré en 10 minutes comment multiplier par deux la vitesse d'un algo, avec des trucs mais d'une simplicité déconcertante.
Enfin bon, on parle, on parle, et ça ne prouve rien. Je te file un bout de code qui montre mes dires dans qqs minutes.
Citation :
En revanche, avec des optimisations, le DSP aurait réussi - d'ailleurs, ne mélange pas DSP et ARM stp, c'est PAS DU TOUT la même chose -
Je mélange pas, mais ce sont deux types de proc spécialisés, les plus célèbres que je 'connaisse', d'ailleurs, par opposition aux pentium et autres sparc. Par contre, je comprends pas du tout la relation entre la fft en n log n et les dsp ? (arrête de me prendre pour un benet, aussi
![:diable:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_diablotin.gif)
Citation :
De plus, les compilateurs fournis permettent de se passer de l'assembleur, tout peut être fait en C ou C++ avec peu d'overhead.
J'ai jamais vu un seul programmeur de dsp utiliser un compilo C pour les synthés. Jamais.
Citation :
Donc les libs de PC sont utilisables...
Les compilos fortran, c'est répandu sur dsp ? ;)
Citation :
RISC, c'est pas pour rendre les puces plus simples, au contraire, dès le départ avec le séquenceur câblé, au savait que c'était plus compliqué
Euh ????? Le principe même du risc, c'est d'avoir un truc simple, pour avoir moins de transistors, et éviter, à l'origine, d'avoir plusieurs core qui communiqueraient entre eux par des voies trop lentes. Le principe a toujours été plus simple. D'ailleurs, aujourd'hui, les core sont risc quasiment partout (PIV en premier), il interprète l'ISA d'origine à la volée.
Le X86 va aller de mieux en mieux. Son archi est pourrie des le départ ? Oui. C'est chiant d'avoir tous ces trucs de compatibilité ? Oui. Et c'est pour ça que ça marche. Regarde le 'titanium', merveille technologique, gouffre pour intel, ratage presque complet. Repose beaucoup trop sur le compilo. L'ultra sparc, c'est joli ? Oui. Mais c'est lent et cher.
Il y a un truc à conserver en tête: l'x86 n'a pas gagné en dépit de toutes ses faiblesses, mais GRACE à ses faiblesses.
Bon, je te code l'exemple.
![miles1981 miles1981](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
miles1981
![8326 posts au compteur 8326 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/8.png)
Plus sérieusement, t'es sûr l'hitoire de la multiplication en un coup d'horloge ??
Si les DSP de synthé ne sont pas encore programmés en C, ça ne saurait tardé, les derniers sont largement mieux en codage C - je parlais de librairies en C aussi :D -
Parlons de l'x86. Tous les vrais programmeurs lui tapent dessus. Pourquoi ça a marché ? parce qu'à l'époque tout le monde programmait en ASM, et si pour le 186, ils avaient changé le set d'instructions, ils perdaient le marché. Pourquoi aujourd'hui l'Itanium n'a pas marché ? parce que le compilo à utiliser est effectievement d'une architecture ambitieuse, différente même de ce qui existe dans les autres procs.
Oui, il a gagné grâce à ses faiblesses et l'appat du gain...
Tiens, je veux bien voir tes exemples de codage, plus on apprend, mieux c'est :D
Audio Toolkit: http://www.audio-tk.com/
![.: Odon Quelconque :. .: Odon Quelconque :.](https://img.audiofanzine.com/images/u/user/avatar/28.gif)
.: Odon Quelconque :.
![10868 posts au compteur 10868 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
Citation : Tiens, je veux bien voir tes exemples de codage
Dites, vous voulez pas aller faire vos cochonneries ailleurs?
![:langue:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_langue.gif)
« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)
![Pov Gabou Pov Gabou](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
Pov Gabou
![19553 posts au compteur 19553 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
Mais quand même:
Citation :
#include <iostream>
#include <math.h>
#include "cycle.h"
inline void f1(const float* lx, const float* ly,
float* lz, const int size)
{
int i = 0;
for (i = 0; i < size; ++i)
{
lz[i] += lx[i] * ly[i];
}
}
void app_hann(float* &h ,unsigned int N)
{
if ( N < 1 )
{
std::cerr << "N must be equal or greater than 1n";
exit(1);
}
// Initialisation :
// - s : is for sin calculation
// - c : c is for cos.
//
// Last and curr var are used to compute sin and cos ( cf Numerical
// recipes in C, chap 5.5. )
float s_last = 0;
float s_curr = 0;
float c_last = 1.0;
float c_curr = 0;
float alpha = 0.1;
float beta = 0.2;
float delta = 3.14159/N;
//alpha = 2*(sin(delta)*sin(delta));
//beta = sin(2*delta);
//h = new float[N];
h[0] = 0;
for ( int loop = 1 ; loop < N ; ++loop)
{
// First the alpha*cos(teta)+beta*sin(teta) is computed
// This operation MUST be done at the begining.
c_curr = (-1) * alpha * c_last + (-1) * beta * s_last;
s_curr = (-1) * alpha * s_last + beta * c_last;
// computation of the actual windows coefficients
c_curr += c_last;
s_curr += s_last;
h[loop] = 0.5-0.5*c_curr;
// New values of c_last and s_last
c_last = c_curr;
s_last = s_curr;
}
}
int main()
{
ticks t0, t1;
float *x, *y, *z;
const int N = 1024;
const int Nloop = 16;
x = new float[N];
y = new float[N];
z = new float[N];
double result;
for (int loop = 0; loop < N; ++loop)
{
// convert to float to have float division instead of
// euclidian division !
x[loop] = (float)loop/N;
y[loop] = -(float)loop/N;
}
// f1, pass 1
t0 = getticks();
for (int loop = 0; loop < Nloop; ++loop)
{
f1(x, y, z, N);
}
t1 = getticks();
double result1 = elapsed(t1, t0);
std::cout << "ticks for f1, pass 1 is around : " << result1/Nloop << std::endl;
// f2, pass 1
t0 = getticks();
for (int loop = 0; loop < Nloop; ++loop)
{
//N * 8
app_hann( z, N);
}
t1 = getticks();
double result2 = elapsed(t1, t0);
std::cout << "ticks for f2, pass 1 is around : " << result2/Nloop << std::endl;
std::cout << "For this number of cycles, there is : n"
<< N*8 << " muln"
<< N*6 << " addn"
<< N*7 << " assignementsn";
delete[] x;
delete[] y;
delete[] z;
return 0;
}
Le resultat:
Citation :
ticks for f1, pass 1 is around : 4302.5
ticks for f2, pass 1 is around : 26105
For this number of cycles, there is :
8192 mul
6144 add
7168 assignements
Avec gcc 3.3 , -O2 et funroll-loops. Faut pas faire attention aux fonctions, j'ai enlevé tout ce qui ne rentrait pas en compte, à la base, la fonction sert à calculer une fenêtre de hanning en évitant les appels ultra couteux à la fonction sin de la librairie standart.
C'est con, j'avais un exemple plus parlant, mais il marche pas avec gcc, et j'ai pas trop les moyens de me payer VS, ni l'envie de le modifier pour qu'il passe sous gcc :¤)
Tu remarqueras des petites astuces, style inversion de lignes, pour laisser le pipeline toujours rempli, etc...
Citation :
Parlons de l'x86. Tous les vrais programmeurs lui tapent dessus.
Entendons ce que dit un illustre inconnu sur le x86:
Citation :
In a discussion on the merits of various processors, Torvalds wrote that Intel had made the same mistakes "that everybody else did 15 years ago" when RISC architecture was first appearing. Itanium tries to introduce an architecture that is clean and technically pure, something that just doesn't seem to work in the real world. He claims that Intel "threw out all the good parts of the x86 because people thought those parts were ugly. They aren't ugly, they're the 'charming oddity' that makes it do well."
Cet illustre inconnu, c'est torvald...
On continue
Citation :
Clever architecture is something that has trapped others in the past. The Alpha processor team spent years learning that many of the architecturally correct ideals they had held needed to be thrown out when it came to the real world. According to Torvalds, "And all the RISC stuff that tried to avoid it was just a BIG WASTE OF TIME. Because the _only_ thing the RISC approach ended up showing was that eventually you have to do the hard stuff anyway, so you might as well design for doing it in the first place."
Quand un des programmeurs les plus géniaux des ces 15 dernières années, ET un des concepteurs d'une des architectures les plus réputées (Ultras sparc), disent tous deux que le risc (sous entendu pur, hein), c'est de la connerie, il y a peut être qqch à en retirer, non ? ;)
Je suis prêt à parier que dans 5 ans, les descendants de l'x86 (comprendre IA-64) seront encore plus répandus. Par exemple, sun risque très certainement d'abandonner l'ultra sparc en faveur de l'opteron.
Le x86 est moche, mais un cpu d'ordi EST moche par définition, ça doit faire pleins de trucs. C'est comme dire qu'un OS généraliste est moche. C'est moche. Linux est moche, windows est moche, etc... Le principe même d'ordinateur personnel est infame, quelque part.
Citation :
Le RISC, c'est pas un proc, simple, c'est un jeu d'instructions simplifiées...
Oui, mais l'interêt du jeu d'instruction simple, c'était pour faire un proc plus simple. Au début des années 80, quand on concevait le RISC dans les universités américaines, le pb des cpu de l'époque était qu'ils étaient trop compliqués pour qu'on mette tout sur un même DIE, donc on partageait en plusieurs morceaux, et les coûts de transfert entre les différentes parties coutaient la peau du cul. Le RISC devait permettre d'avoir moins de transistors, pour tout laisser sur un même DIE.
Lis l'article d'ars technica, il est vachement intéressant. Tu sais, quand tu lis ce que tanenbaum disait il y a 12 ans, on aurait tous aujourd'hui des OS distribués sur alpha. Bon, l'alpha, ça existe plus, aujourd'hui, c'est balaud !
https://arstechnica.com/cpu/4q99/risc-cisc/rvc-1.html
Sinon, le code est tout moche, hein, c'est juste pour l'exemple.
![miles1981 miles1981](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
miles1981
![8326 posts au compteur 8326 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/8.png)
J'ai pas encore testé ton programme, j'ai pas de gcc sous la main potable - cygwin beurk, mingw beurk, ... -, mais je vais tenter .NET - étudiant power
![:)](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_smile.gif)
D'ailleurs, c'est pas la première fois qu'Intel se casse la figure à essayer d'imposer qqch de nouveau - ils avaient un nouveau proc, une nouvelle archi juste avant le 186, et voulaient tout virer comme l'a fait Moto à l'époque -... A quand la prochain e?
Audio Toolkit: http://www.audio-tk.com/
![Pov Gabou Pov Gabou](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
Pov Gabou
![19553 posts au compteur 19553 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
Ca permet de compter à peu près le nombre de cycles pris par un bloc de manière assez portable (ça utilise le compteur de cycle des procs, ça marche au moins sur mips, x86 et sparc, c'est évidemment de l'assembleur à l'intérieur).
Le code compilait sous VS 6 qui était une merde niveau standart, donc j'imagine que le 7, assez réputé à ce niveau là, devrait assurer.
Un jour, j'essayerais d'installer ICC sous ma debian, je pense que ça devrait torcher. Mais 4000 cycles pour 2048 additions, 1024 assignements et 1024 multiplications, c'est pas mal, quand même, non ? Même si le cas n'est pas réaliste (en général, pour du MAC, tu vas avoir une petite réponse impulsionelle, les tailles sont pas les mêmes, et tu peux avoir besoin d'accéder à des zones de mémoire non contigues.)
Qu'on soit d'accord: en vrai, le PIV met beaucoup plus qu'une instruction pour une multiplication flottante. C'est une fois le pipeline pris en compte, en faisant en sorte qu'il n'ait pas à se vider (erreur de prédiction), que tu as 1-2 cycles. Et sans ASM, stp (avec SSE, tu peux arriver en dessous d'un cycle dans les bons cas, où t'as des vecteurs alignés).
![Pov Gabou Pov Gabou](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
Pov Gabou
![19553 posts au compteur 19553 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
![:oops:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_redface.gif)
Qui a dit qu'af n'était pas technique ?
![Pov Gabou Pov Gabou](https://static.audiofanzine.com/img/user/avatars/generic.png?w=40&h=40&fm=pjpg&s=0d6213e9da38ef4cab8d0bdd3999c731)
Pov Gabou
![19553 posts au compteur 19553 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
http://perso.enst.fr/~cournape/photos/bench.tar
Makefile, cycle.h et main.cpp (j'ai pas fait gaffe à ce que le code soit C compatible, donc faut un compilo C++).
![Zero Zero](https://img.audiofanzine.com/img/user/avatar/3/9/3928.jpg?w=40&h=40&fm=pjpg&s=fbd41040b2bca070a6bb5f05ddb3de49)
Zero
![3824 posts au compteur 3824 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/7.png)
![:mrg:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_mrgreen.gif)
zéro degré | melatonine | MWTE
![.: Odon Quelconque :. .: Odon Quelconque :.](https://img.audiofanzine.com/images/u/user/avatar/28.gif)
.: Odon Quelconque :.
![10868 posts au compteur 10868 posts au compteur](https://static.audiofanzine.com/images/audiofanzine/forum/avatars/new/9.png)
Salauds de geeks.
![:mrg:](https://img.audiofanzine.com/images/audiofanzine/interface/smileys/icon_mrgreen.gif)
« What is full of redundancy or formula is predictably boring. What is free of all structure or discipline is randomly boring. In between lies art. » (Wendy Carlos)
- < Liste des sujets
- Charte