Accueil > Forum > > > > SSE2 _mm_slli_si128 décalage non effectué
SSE2 _mm_slli_si128 décalage non effectué
mercredi 4 mai 2011 à 14:43:06 |
SSE2 _mm_slli_si128 décalage non effectué

Pistol_Pete
|
Bonjour à tous,
J'ai un soucis concernant l'instruction SSE2 suivante :_mm_slli_si128
Pourquoi, quand j'exécute les deux instructions suivantes, tout ce passe bien
edge = _mm_set1_epi8 (255);
edge = _mm_slli_si128 (edge , 3); //OK
et quand je fais ceci, le décalage n'est pas fait?
int dec = 3;
edge = _mm_set1_epi8 (255);
edge = _mm_slli_si128 (edge , dec ); //KO
Je travail sur des pixels 8 bits.
Merci!
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
|
|
mercredi 4 mai 2011 à 16:32:26 |
Re : SSE2 _mm_slli_si128 décalage non effectué
|
mercredi 4 mai 2011 à 16:38:44 |
Re : SSE2 _mm_slli_si128 décalage non effectué
|
mercredi 4 mai 2011 à 17:39:26 |
Re : SSE2 _mm_slli_si128 décalage non effectué

Pistol_Pete
|
Je viens de multithreader un opérateur qui n'utilise QUE des opérations élémentaires à base de SIMD pour des traitements sur des grosses images. Je n'ai malheureusement pas le gain en performance escompté. Les temps d'exécutions sont sensiblement les mêmes voir même en défaveur de la version multithreading...
Pourtant chaque coeur à ses propres registres SIMD non? Il doit être possible d'avoir une accélération de 2 sur un dual core non?
A+
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
|
|
mercredi 4 mai 2011 à 19:52:20 |
Re : SSE2 _mm_slli_si128 décalage non effectué

BruNews
|
Un thread possède ses registres et sa pile, pas de problème sur cela.
La création d'un thread consomme du CPU, pour escompter un benef if faut donc que le traitement en vaille la peine.
Attention aussi à la synchro, une bonne gestion de celle ci fait sérieusement varier les temps.
ciao...
BruNews, MVP VC++
|
|
jeudi 5 mai 2011 à 09:10:01 |
Re : SSE2 _mm_slli_si128 décalage non effectué

Pistol_Pete
|
Les threads sont tous créés en amont et ils passent leur temps à attendre que le thread principal leur envoie un message (PostThreadMessage) pour leur indiquer le traitement à faire + les lignes de l'image à traiter...
La synchro est fait par le thread principal qui attend que tous les threads aient fini leur travail.
Donc on skip la création des threads et la synchro me semble correct (Dite moi si cette stratégie ne vous semble pas optimale).
Un petit exemple : pour une image 20MPixels, 1 thread = 200ms, 2 thread = 200ms alors que les deux processeurs travaillent à 100%...
A+
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
|
|
jeudi 5 mai 2011 à 14:54:50 |
Re : SSE2 _mm_slli_si128 décalage non effectué

BruNews
|
Comment les thread font pour attendre message ?
Si 2 CPUs à 100% et que meme temps final, la méthode de synchro est à revoir.
Essaie autre chose que PostThreadMessage:
Un eventParent et un eventThrd.
eventParent dit azu thread de se lancer dans traitement, eventThrd informe parent que traitement fini et que thread en position attente. Ainsi thread 0 CPU quand attend.
Sur processus de compression archivage (sur des Go), en procédant ainsi j'ai quasi coupé les temps en 2.
Faudrait se libérer une journée en meme temps pour mise au point, prévoir un samedi ou dimanche.
ciao...
BruNews, MVP VC++
|
|
vendredi 6 mai 2011 à 08:44:06 |
Re : SSE2 _mm_slli_si128 décalage non effectué

Pistol_Pete
|
Salut
Tout d'abord, merci beaucoup Brunews pour ton aide!
Voici une partie de la fonction d'attente de mes threads:
Code C/C++ :
DWORD WINAPI WaitFunction(LPVOID lParam)
{
MSG msg;
HANDLE *hEvent = (HANDLE*)lParam; //To alert the main thread the end of the process
PeekMessage(&msg,0,0,0,PM_NOREMOVE); //To create the message queue
SetEvent(*hEvent);
while (GetMessage(&msg, NULL, 0, 0)) //Wait for message
{
int type = HIWORD(msg.wParam);
int which = LOWORD(msg.wParam);
switch(which)
{
case MT_STRETCH_HIST:
if(type==dtUINT8) {Intensity::_StretchHistogramMT<UINT8,UINT8> ((LPVOID)msg.lParam);break;}
if(type==dtUINT16){Intensity::_StretchHistogramMT<UINT16,UINT16>((LPVOID)msg.lParam);break;}
...
...
et voici comment le thread principal communique avec les autres threads:
Code C/C++ :
bool MultiThreading::Start(int which,const char *szType,int nbThread)
{
unsigned int type=100;
if(strcmp(szType,"unsigned char")==0) type=dtUINT8;
if(strcmp(szType,"unsigned short int")==0) type=dtUINT16;
if(strcmp(szType,"unsigned int")==0) type=dtUINT32;
if(strcmp(szType,"int")==0) type=dtINT32;
if(strcmp(szType,"float")==0) type=dtFLOAT;
if(strcmp(szType,"double")==0) type=dtDOUBLE;
if(strcmp(szType,"unsigned char float")==0) type=dtDOUBLE+1;
if(strcmp(szType,"unsigned char double")==0) type=dtDOUBLE+2;
if(type==100)return 0;
for(int i=0;i<nbThread;i++) PostThreadMessage(idThread[i],0,MAKELONG(which,type),(LPARAM)Param);
WaitForMultipleObjects(nbThread,hEvents,1,INFINITE);
return 1;
}
Il faut que j'essaye un eventParent à la place du PostThreadMessage...
Si tu veux l'ensemble du code, dis le moi, je te l'enverrai.
A+
____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
|
|
Cette discussion est classée dans : mm, edge, sse2, slli, si128
Répondre à ce message
Sujets en rapport avec ce message
Comment inclure un fichier ds un seul et mm executable puis l'extraire? [ par Xanders ]
.°o0oO$: XandersBonjour à tous! Voila je vous explique, j'aimerai inclure dans mon executable des fichiers (quelconque exe, jpg ou autre) que j'extrai
Comment inclure un fichier ds un seul et mm executable puis l'extraire? [ par Xanders ]
.°o0oO$: XandersBonjour à tous! Voila je vous explique, j'aimerai inclure dans mon executable des fichiers (quelconque exe, jpg ou autre) que j'extrai
Dll (et ui, tjr la mm chose) [ par sebastienbro ]
G un problème ! G fé une dll en c++ (ki d'ailleur, ne marche pas). L est sensé etre utilisé avec vb, mais voila : vb apelle la premiere fonction expor
Conversion string en date [ par jpeg ]
j'aimerai convertir (en C++ standard, sans MFC) une chaine de caractère de n'importe quel format (DD/MM/YYYY ou DD/MM/YYYY hh:mm ou YYYYMMDD ou ....)
SONDAGE !!! RSVP !!! [ par Guidelor ]
Bonjour Ca serait cool si le plus de monde possibles pouvait répondre à ma petite question !!!Existe-t-il un fichier.log sur votre ordinateur qui affi
Pb la qd mm ! [ par Joky ]
Euh Comment ça se fait que y'as plus de sourceEt n'oubliez jamais...French Smile :-)
gtk(mm) dessiner avec de l'alpha [ par Ricool ]
Bonjour,J'ai une petite question sur l'apha et gtk (gdk).Je dois dessiner des courbes qui se superpose (coube composée de rectangle plein). Je veuxles
Comment avoir plusieur dialog actif en mm temps??? (mfc Vc++6) [ par vincesfire ]
Bonjour,Je réalise une interface de communication avec un robot, et je voudrais savoir s'il y a un moyen d'avoir plusieur dialog actif en mm tps.Plus
pb de camera [ par mauvaisdawa ]
je suis sur un projet de simulation d'helicoptère. j'ai un probleme concernant mes caméras. celle du dessus, ya aucun probleme, mais celle de derrière
surcharge << [ par koala_corse ]
Salut, Je veux surcharger l'opérateur << pour une de mes classes qui encapsule un multimap (donnée membre privée : laListe). Voici le code que j'ai
Livres en rapport
|
Derniers Blogs
POUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDNPOUR RAPPEL ! LES SPéCIFICATIONS DES PROTOCOLES OFFICE ET SHAREPOINT SONT DISPONIBLES SUR MSDN par neodante
Quelle est le point commun entre : Microsoft il y a 10 ans et Apple aujourd'hui ? Réponse: avoir une politique de protocoles propriétaires et fermés :) Car pour rappel (si si je vous assure c'est important de le rappeler), la majorité des spécifications e...
Cliquez pour lire la suite de l'article par neodante JOYEUX ANNIVERSAIRE NIXJOYEUX ANNIVERSAIRE NIX par ebartsoft
Souhaitons un bon et joyeux anniversaire à notre hôte à tous, Nix.
Je ne le répéterais jamais assez mais sans lui rien ne serait possible. Il défit en permanence les lois de la gravité et comme il le dit si bien, si tu lui fais confiance ça devra...
Cliquez pour lire la suite de l'article par ebartsoft IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc
Forum
MATLAB PROGRAMME MATLAB PROGRAMME par wahab1087
Cliquez pour lire la suite par wahab1087 RGB2GRAYRGB2GRAY par musa18
Cliquez pour lire la suite par musa18
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|