Couple de questions JSLSalut à tous!
Je me demandais si quelqu'un connaissait les réponses aux questions suivantes:
- existe-t-il une fonction JSL permettant de déterminer le nombre de threads qu'une machine hôte peut exécuter simultanément?
- La capacité de simulation dans JMP Pro est-elle multithread?
Toutes les pensées sont les bienvenues.
Merci!
MRe: Couple de questions JSL1) Non, mais vous pouvez en déduire une réponse avec JSL comme ceci:
x=j(1000,1,.);
i=0;
parallelassign({q=i++},x[r,c]=q);
show(i);
Mais c'est juste une * réponse *, pas * la * réponse. Même une seule machine à processeur peut avoir des centaines de threads. Et les processeurs actuels ont généralement une capacité hyper-threading qui permet une commutation plus rapide des threads. Mais la valeur i ci-dessus est probablement ce que vous voulez. Explication: à l'intérieur du {q = i ++}, q est une variable locale dans chaque instance de thread et i ++ est une valeur d'initialisation calculée en dehors des threads. Vous ne devez pas écrire de code qui dépend de ce comportement ni de l'ordre apparent dans lequel les éléments de la matrice sont initialisés.
2) Regardez le gestionnaire de tâches (WIN 7 a fait un meilleur travail en montrant les CPU individuels que 10). Je suppose que oui.
(MFI est lié aux E / S et utilise des threads pour lire les fichiers et bénéficiera des threads sur une seule machine CPU; les E / S pour lire un fichier dans un thread n'empêcheront pas un autre thread d'utiliser le CPU pour analyser les données déjà lu pour un autre fichier. Mais simuler est probablement lié au processeur et n'a probablement pas d'E / S; s'il est fileté, il devrait bénéficier de plusieurs processeurs. ParallelAssign, ci-dessus, est lié à la mémoire; la bande passante dans la mémoire déterminera la vitesse maximale à laquelle les données peuvent être écrites dans la matrice ... plusieurs processeurs ne seront utiles que si le calcul est lent du côté droit de x [r, c] = ... )
Re: Couple de questions JSLDes questions intéressantes, @ MikeD_Anderson . Pouvez-vous partager ce qui vous fait demander?
Re: Couple de questions JSLMerci, @Craige_Hales ! Je pense que ça va marcher. J'espérais qu'il y avait une fonction JSL pour demander au système d'exploitation hôte combien de cœurs se trouvent sur le processeur. Je viens d'essayer votre extrait et il m'a donné la même réponse (mon processeur i9 a 6 cœurs avec 2 threads par core = 12 threads).
@Jeff_Perkinson - J'essaie de calculer un temps d'exécution total pour une simulation, c'est-à-dire Si mon modèle prend 2 secondes à fonctionner, puis en effectuant 2 500 simulations (par défaut), réparties sur 6 cœurs à 2 threads par cœur (en supposant que la simulation est multithread), la simulation devrait prendre 417 secondes (6 minutes). Je souhaite insérer un message d'avertissement dans un complément sur lequel je travaille afin de donner à l'utilisateur une idée approximative de la durée de la simulation. Ce n’est pas une mathématique parfaite, mais au moins, je vais me permettre de dire: "Hé - cette simulation va durer 1 heure - êtes-vous sûr de vouloir la lancer?" Je peux obtenir le temps de traitement pour une itération du modèle - pas de problème -, mais le nombre de threads était quelque chose qui me déroutait.
meilleur,
M
Re: Couple de questions JSLLe fait de doubler le nombre de processeurs ne double jamais la vitesse d'une application réelle liée au processeur et à la mémoire ... comme d'habitude. La bande passante mémoire devient toujours un problème. Vous pouvez supposer que 2 ou 4 processeurs ont encore une bonne idée, compte tenu de tout ce qui ne peut pas être contrôlé. Personne ne se plaindra si cela se termine tôt.