PB pour CPU 2 coeurs
PB pour CPU 2 coeurs
Hi !
Les proc 2 coeurs etant devenu la "norme" si je puis dire, pourrait on voir PB s'adapter ??
thx
Les proc 2 coeurs etant devenu la "norme" si je puis dire, pourrait on voir PB s'adapter ??
thx
le pure basic est deja adapté, si je puis dire
il utilise deja le multithreading des P4 grace aux Thread....
les multicoeurs (Core Duo etc.. a ne pas confondre avec les multicoeur ancienne generation ) etant un system qui permet d'utiliser le multithreading pour des applications qui ne sont pas prevu pour !!
un multithreading transparent en fait !
en clair avec un Core Duo etc .. c'est pas le langage qui gere le multitache mais le Harware !!
Donc par definition, le Purebasic n'as pas a gerer le partage du temps machine, c'est le Hardware et le system d'exploitation qui gere ça !!
bref le Purebasic est deja optimisé pour ..
il utilise deja le multithreading des P4 grace aux Thread....
Simultaneous Multi Threading est une technique datant des années 1950. Elle consiste, comme le Symmetric multiprocessing (SMP), à augmenter le TLP (Thread Level Parallelism), c’est-à-dire le parallélisme des threads.
Le but est d'améliorer le remplissage du flot d'instructions du processeur et donc d'augmenter sa vitesse de traitement, à condition que le programme soit conçu de façon adéquate.
les multicoeurs (Core Duo etc.. a ne pas confondre avec les multicoeur ancienne generation ) etant un system qui permet d'utiliser le multithreading pour des applications qui ne sont pas prevu pour !!
un multithreading transparent en fait !
en clair avec un Core Duo etc .. c'est pas le langage qui gere le multitache mais le Harware !!
Les coeurs se partagent la mémoire cache
Intégrée au processeur, la mémoire cache de niveau 2 est une mémoire vive ultrarapide qui sert d'intermédiaire entre les coeurs et le bus système. Pour éviter les allers-retours avec la mémoire vive, elle stocke temporairement les données et les instructions dont les coeurs peuvent avoir besoin, en anticipant certaines demandes. Dans les puces double coeur de première génération d'Intel, chaque coeur possédait son propre cache.
Avec l'architecture Core, cette mémoire est unifiée et partagée « dynamiquement » entre les deux coeurs : chaque coeur peut s'en octroyer à volonté une portion de taille variable pour y stocker les informations qu'il veut garder sous la main. S'il en a besoin, l'autre coeur peut accéder directement à ces données, sans passer par le bus système externe.
2. Certaines micro-instructions sont fusionnées
Les instructions provenant du système d'exploitation sont transformées en une suite de micro-instructions (des commandes élémentaires adaptées aux unités de traitement du processeur). Quand c'est possible, l'architecture Core regroupe deux micro-instructions en une seule, afin de réduire le nombre total d'opérations à exécuter par les unités de traitement. Un mécanisme de fusion qui revêt un intérêt évident quand on sait qu'un programme peut générer plusieurs milliards de micro-instructions...
3. Les accès à la mémoire sont optimisés
Sur les précédents processeurs Intel, les instructions de lecture et d'écriture en mémoire vive (Ram) étaient exécutées scrupuleusement dans l'ordre où elles apparaissaient. Du coup, un processus A ayant besoin de lire en mémoire pouvait être interrompu temporairement, en attendant qu'un processus B ait fini d'y écrire ses données.
Et ce, même si les données de ces deux processus étaient totalement indépendantes ! L'architecture Core est capable de découpler ces opérations dès lors qu'elles ne concernent pas les mêmes données, ce qui favorise les traitements en parallèle.
Donc par definition, le Purebasic n'as pas a gerer le partage du temps machine, c'est le Hardware et le system d'exploitation qui gere ça !!

bref le Purebasic est deja optimisé pour ..
beuh...
vi mé euh
quand je fais un rendu (en douce) sur le core 2 duo au boulot sous anim8or
et que j'active le gestionnaire de tâches, y'a qu'un "core" qui bosse, l'autre se les roulent.... cependant la bécane se traine lamentablement.... ???
je verrai ça prochainement, papanoël doit m'amenr un core2 avec une 8800gtx et 4gigot de ram.... gaaaaaaaaaazzzzzzz ça va changer du semplom2800

vi mé euh
quand je fais un rendu (en douce) sur le core 2 duo au boulot sous anim8or
et que j'active le gestionnaire de tâches, y'a qu'un "core" qui bosse, l'autre se les roulent.... cependant la bécane se traine lamentablement.... ???
je verrai ça prochainement, papanoël doit m'amenr un core2 avec une 8800gtx et 4gigot de ram.... gaaaaaaaaaazzzzzzz ça va changer du semplom2800

normal !!Patrick88 a écrit :beuh...![]()
vi mé euh
quand je fais un rendu (en douce) sur le core 2 duo au boulot sous anim8or
et que j'active le gestionnaire de tâches, y'a qu'un "core" qui bosse, l'autre se les roulent.... cependant la bécane se traine lamentablement.... ???
les concepteurs de ces applis bien particulière qui traitent de la 3D
ne savaient pas qu'il y aurai des Core2 et compagnie ..
alors ils ont créé des routines speciale pour les systems de carte mere a plusieurs Processeur, avec plusieurs Memoire Cache ..
qui bien sur ne sont plus adapté pour ces processeur particulier...
je dirait que le probleme dans ces cas precis, viendrai du fait que l'application est trop specifique pour la generation des Core Duo !!

vu qu'elle gerent elles meme la distribution du travail aux Threads...
ce qui est tres efficace sur un P4 Multithread, ne l'est pas forcement pour les Multicores

pour les multicores, il aurai mieux valu ne pas chercher a optimiser le code, puisqu'en principe c'est le Processeur qui détermine le travail a faire ....
je suppose que la gestion des Thread pour un multicore, doit etre ardu a faire par contre ...
cela risque effectivement de ralentir plus le systeme , que de l'accelerer !!
ce serai peut etre pas mal finalement qu'en purebasic on puisse choisir de faire travailler un Coeur ou un autre

une sorte de Super-Threading en quelque sorte

a suggérer a Fred ...

en fait SPH avait raison de poser cette question interressante

-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
-
- Messages : 1307
- Inscription : dim. 08/juil./2007 18:32
- Localisation : Toulouse
5 commandes
mais avant d'attaquer ce gros morceau( une histoire sans fin), il faudrait que Fred donne un peu de son temps à un parent pauvre, oublié depuis des années:SPH a écrit :Les proc 2 coeurs etant devenu la "norme" si je puis dire, pourrait on voir PB s'adapter ??
http://fr.wikipedia.org/wiki/DualShock
ExamineJoystick
InitJoystick
JoystickAxisX
JoystickAxisY
JoystickButton
...et vivement la suite!
Et voici un moment de solitude:
http://www.purebasic.fr/french/viewtopic.php?t=7570
le joypad le plus aboutis:
http://playstation3.files.wordpress.com ... roller.jpg
-
- Messages : 1202
- Inscription : sam. 31/déc./2005 23:52
Re: 5 commandes
+100000000000beauregard a écrit : le joypad le plus aboutis:
http://playstation3.files.wordpress.com ... roller.jpg
il existe apparement une librairie microsoft pour gerer les MultiCoresCpl.Bator a écrit :j'ai aperçu un code permettant de choisir le CPU , c'etait avec l'api Win32 si je me souvient bien , mais dire ou se trouve ce code , j'en sais rien, tout ce que je me rappelle , c'était pas ici en tout cas
voir ici :
http://msdn.microsoft.com/msdnmag/issue ... spx?loc=fr
Le pointeur de ma mémoire n'est plus NULL 
voici les infos que j'ai la dessus :
Code en Darkbrouzouck :

voici les infos que j'ai la dessus :
Code en Darkbrouzouck :
Code : Tout sélectionner
`USE: read the cpu count using the function cpu_count()
`USE: set the cpu using the function set_affinity(input) - input takes the cpu no.
`example: use the last cpu core only: set_affinity(cpu_count())
print "CPU count: ",cpu_count()
print "CPU use set: ",set_affinity(%000000000000000000000010)
suspend for key
function cpu_count()
`FOR INFO GO TO: http://msdn2.microsoft.com/en-us/library/ms686223.aspx
for next_dll=1 to 256
if dll exist(next_dll)=0 then exit
next next_dll
load dll "C:\WINDOWS\system32\kernel32.dll",next_dll
lpProcessAffinityMask=make memory(32)
lpSystemAffinityMask=make memory(32)
hProcess=call dll(next_dll,"GetCurrentProcess")
get=call dll(next_dll,"GetProcessAffinityMask",hProcess,lpProcessAffinityMask,lpSystemAffinityMask)
for cpu_count=1 to 32
if mid$(bin$(*lpProcessAffinityMask),cpu_count)="0" then exit
next cpu_count
dec cpu_count
delete dll next_dll
delete memory lpProcessAffinityMask
delete memory lpSystemAffinityMask
endfunction cpu_count
function set_affinity(in)
`FOR INFO GO TO: http://msdn2.microsoft.com/en-us/library/ms686223.aspxv
for next_dll=1 to 256
if dll exist(next_dll)=0 then exit
next next_dll
load dll "C:\WINDOWS\system32\kernel32.dll",next_dll
lpProcessAffinityMask=make memory(32)
lpSystemAffinityMask=make memory(32)
hProcess=call dll(next_dll,"GetCurrentProcess")
get=call dll(next_dll,"GetProcessAffinityMask",hProcess,lpProcessAffinityMask,lpSystemAffinityMask)
*lpProcessAffinityMask=in
succes=call dll(next_dll,"SetProcessAffinityMask",hProcess,*lpProcessAffinityMask)
delete dll next_dll
delete memory lpProcessAffinityMask
delete memory lpSystemAffinityMask
endfunction succes