Thema: Tipp: Cray Blitz
Einzelnen Beitrag anzeigen
  #19  
Alt 24.03.2024, 16:41
Hans21 Hans21 ist offline
Fidelity Kishon Chesster
 
Registriert seit: 18.01.2022
Land:
Beiträge: 61
Abgegebene Danke: 42
Erhielt 79 Danke für 45 Beiträge
Aktivitäten Langlebigkeit
5/20 3/20
Heute Beiträge
0/3 sssssss61
AW: Cray Blitz

 Zitat von Hans21 Beitrag anzeigen
Ergänzung, das habe ich in einem Beitrag von "bob - Wed Sep 10, 2008 2:38 am" gefunden:

https://www.talkchess.com/forum/view...216685&t=23616

gefunden:

"...
I'd like to tar it up and send it to you for you to do with as you wish. Aha, one other note. This version is multiple-cpu capable but it will not work without a few changes. Cray used something called "task common" that was process-specific local data. Normal fortran does not have that. Most modern fortran compilers have the ability to say "this common is local" or "this common is global, all others are local" but I did not try to figure that out. Ditto for starting threads. But the 1991-era DTS code is there, although it was modified quite a bit between 1992-1994 as we began to use more and more CPUs.
..."

"bob" scheint Robert Hyatt zu sein.
Noch was: Ich wollte mal schauen, ob und wie man mit dem veröffentlichten Code das Multiprocessing ermöglichen könnte.

Ein relevantes Code-Stück ist z.B. in "options.f":

"...
c
c------------------------------< mp : enable multiprocessing
c
1700 continue
if(busy .ne. 0) go to 9998
oldncpus=ncpus
if(atext(3) .ne. blank) then
col=4
ncpus=scan(col)
write(3,1720) ncpus
if(ncpus .gt. 1) cputim=0
snodes=snodes/oldncpus*ncpus
endif
print 1720, ncpus
1720 format(1x,'multiprocessing using',i3,' processors.')
c call tsktune('MAXCPU',aio+ncpus,'DBRELEAS',aio+ncpus,
c * 'DBACTIVE',0,'HOLDTIME',1000,'SAMPLE',1000)
if(ncpus .gt. oldncpus) then
print 1725,ncpus-oldncpus
1725 format(1x,'creating ',i2,' new tasks.')
do 1730 i=1,ncpus-oldncpus
tskarray((i-1)*3+1)=3
tskarray((i-1)*3+2)=0
tskarray((i-1)*3+3)=i
c call tskstart(tskarray((i-1)*3+1),control,0)
1730 continue
else if(ncpus .lt. oldncpus) then
print 1735, oldncpus-ncpus
1735 format(1x,'terminating ',i2,' old tasks.')
do 1740, i=oldncpus,ncpus+1,-1
stop(i)=-9999
1740 continue
endif
go to 9999
c
..."

Dort sieht man, dass u.a. die Zeilen mit "call tskstart(..." auskommentiert sind (ein "c" am Zeilenanfang). Im Weiteren gibt auch keinen Implementationscode für "tskstart".

Es scheint, dass die Multiprocessing-Möglichkeit vor der Veröffentlichung des Codes gezielt entfernt wurde.

Falls das jemand anders sieht, bin ich um eine Rückmeldung dankbar.

Hans

Geändert von Hans21 (25.03.2024 um 08:29 Uhr) Grund: Tippfehler.
Mit Zitat antworten
Folgender Benutzer sagt Danke zu Hans21 für den nützlichen Beitrag:
Mark 1 (24.03.2024)