[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [sc-users] will there ever be real multiprocessor support?
not be syntactically very different from just sending things to
multiple running server processes, as you can do now.
This is where the problems are now. In leopard running on anything
other then the built-in soundcard, the running of multiple server
apps presents 2 problems:
1- the servers sometimes fail to start (the more servers, the
bigger the problem)
2- the servers randomly get into a state of permanent clicking
(from osx 10.4.10 and above)
Can you give a simple example for reproduction? A test case?
Thank you.
sure. The clicking issue will have to wait until I'm at our system
again. I think it only occurs at high numbers of audio channels, but I
have to test that.The boot-failure however (issue 1) can be tested on
any machine:
Server.default.options.device = "aggregate device"; // aggregate
device or any non-builtin audio card
(
~servers = 16.collect({ |i|
Server( "local %".format(i+1), NetAddr("127.0.0.1", 58000 + i),
Server.default.options );
});
)
~servers.do(_.boot);
// wait until servers have booted (or failed).
~servers.collect(_.serverRunning).select(_.not).size;
on my system (Leopard Intel with any build of sc) this last line will
post something between 5 and 9. There is no logic in which servers
fail to start as far as I can see. Results are different per machine
and soundcard. Sometimes it helps to do a phased boot from a Routine,
but then again sometimes that just makes things worse. Please note
that the server processes are in fact running (show up in
activitymonitor), but there seems no way to reach them via OSC. To
retry press the "K" button in the localhost window and repeat procedure.
I also include console messages from one of the runs. In this
particular run 7 servers "failed to start". Their PID's were:
[ 2558, 2559, 2561, 2562, 2563, 2569, 2571 ]
They don't match the pid's of the console error messages though. the
console messages were the following:
--
05-03-09 22:38:57 scsynth[2558] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2566] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2562] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2567] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4003, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2564] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2560] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2570] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2563] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2569] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 scsynth[2569] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.039 scsynth[2558:3003] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.059 scsynth[2566:3003] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.076 scsynth[2562:3103] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.099 scsynth[2567:3003] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4003, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.103 scsynth[2560:3103] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.105 scsynth[2564:3003] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.105 scsynth[2570:3003] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.105 scsynth[2563:2f03] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
See /usr/include/servers/bootstrap_defs.h for the error codes.
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
_RegisterApplication(), FAILED TO REGISTER PROCESS WITH CPS/
CoreGraphics in WindowServer, err=-50
05-03-09 22:38:57 [0x0-0x67067].net.sourceforge.supercollider[729]
2009-03-05 22:38:57.294 scsynth[2569:2f03] *** CFMessagePort:
bootstrap_register(): failed 1103 (0x44f) 'Service name already
exists', port = 0x4103, name = 'WakeUpProcessPort'
--
if I use the built-in default audio device similar console messages
appear, but only rarely one or 2 servers fail to start. Still I guess
these messages somehow point to a problem..
cheers,
Wouter
if those issues were solved, and a few things in the lang were
adapted to equally dividing tasks over various servers, I would
call SC multi-processor supportive. Right now it is not
unfortunately..
cheers,
Wouter
Op 5 mrt 2009, om 10:43 heeft Scott Wilson het volgende geschreven:
It may well be that DAWs and other programming environments are
multiprocessor, but I would be very curious to know how the work
is being distributed.
SC *is* multiprocessor. The language and server run in different
processes. Different threads can run on different processors. Any
background OS stuff can possibly run on a different core.
What is not multiprocessor is the audio thread. In order to make
it so you would in any case need some way of specifying which
audio processes are not interdependent. Although it may be
possible to somehow do this automatically, I suspect that any
solution would not be syntactically very different from just
sending things to multiple running server processes, as you can do
now.
I also suspect that the DAWs you mention may be dividing things up
in a similar fashion to SC, e.g. graphics on one core, audio on
another. But as I said I'd be curious to know more.
S.
On 5 Mar 2009, at 02:21, Josh Parmenter wrote:
Hi Miguel,
This isn't a trivial endeavor. It will require rewriting quite a
bit of the foundational code in SuperCollider. I imagine it will
happen, but not quickly. Part of the discussion for work of this
scale will also include a discussion on possible architecture
changes (I would imagine).
The major DAWs pay their coders quite a bit for those tools. That
is their job. Nobody's job here is to build SC. We all have other
jobs, and do this in our other time. So they really can't be
compared. Some of us have already looked at this next step, and
it is a big one. It is certainly not easy, and it will require of
most developers the learning of a new tool set. Then - add in
cross-platform concerns, and a whole new mess is created.
Josh
On Mar 4, 2009, at 5:46 PM, Miguel Negrao wrote:
But all the major daws (protools, logic, cubasem nuendo, etc)
support multi-processors, and now even max/msp supports them and
csound has experimental multi-core on 5.0.9.
I guess putting several servers sending audio to each other
through jack might be a temporary solution, but still that's a
big headache...
Off course I'm not saying it's easy, but it just seems to me
that it will have to be adressed at some point in order for the
sc to not become obsolete. Fierceless sc programmers out there,
sink your teeth into this problem so that you can have the glory
of being the one to make sc multi-core friendly ! We promise we
will build a statue for you! :-)
Miguel
ps: how much of delay is there introduced by sending audio
between two apps using jack ?
Wouter Snoei escreveu:
Hi Miguel,
as far as I understood this issue gives headaches even to the
most experienced dsp programmers in the world. AFAIK none of
the existing audio programming languages deals well with
multiprocessor machines; there is always some drawback where
users have to spawn multiple processes which can't interact. I
hope some kind of solution will be found for it at some point,
but I don't think it will soon.
Please anyone tell me if I'm wrong about this ..
cheers,
Wouter
Op 4 mrt 2009, om 20:58 heeft Miguel Negrao het volgende
geschreven:
A bit out of topic, but what are the prospects that
supercollider becoming trully multi-processor friendly ?
In my case my synths all send audio to each other so i can't
even use several servers and I'm stuck with using just one
core... Computers are only going to become more multi-
processor from now on, with mac pros with 16 corea around the
corner, so is there a plan to adress this in the future ?
--
Miguel Negrão // ZLB
http://www.friendlyvirus.org/artists/zlb/
Wouter Snoei escreveu:
Hi,
I'm researching the possibility to use JackOSX for solving
the problems I'm experiencing with multiple servers on our
WFS system. So far it seems to work, but I'm bumping into
some kind of maximum inside Jack. When I try to boot 8
servers with 96 channels output each (which is what I need
for our system) it stops after booting the 4th. I've set jack
to verbose mode and posted the messages I got below. It says
"JAR: Cannot register ports" as most important message. Could
anyone give me a hint on why this happens, and if there is a
way around it (maybe increasing memory size somewhere)?
It works fine when I set it to less channels (but to me there
is no use for that), although I need to wait ±5s between
every server start. If I don't it only starts 3 or 4 in
JackRouter and the rest in built-in. The occasional boot
failures are still present here, but that is not my biggest
problem. What I hope to accomplish here is to get rid of the
clicking, as discussed earlier on the list. I'm using SC3.3a
rev8828, OSX 10.5.6, jack v#0.81.
jack message at first failed server (there are already 4
scsynths running here):
SC_AudioDriver: sample rate = 44100.000000, driver's block
size = 1024
JAR: JackRouterDevice::IsSafeToExecuteCommand theAnswer = 1
JAR: JackRouterDevice::StartCommandExecution
JAR: JackRouterDevice::AddIOProc
JAR: JackRouterDevice::Open id 368 name scsynth
JAR: AllocatePorts fInputChannels = 8 fOutputChannels = 96
JAR: Cannot register ports
JAR: DisposePorts
JAR: DisposePorts input 0
JAR: DisposePorts input 1
JAR: DisposePorts input 2
JAR: DisposePorts input 3
JAR: DisposePorts input 4
JAR: DisposePorts input 5
JAR: DisposePorts input 6
JAR: DisposePorts input 7
JAR: DisposePorts output 0
JAR: DisposePorts output 1
JAR: DisposePorts output 2
JAR: DisposePorts output 3
JAR: DisposePorts output 4
JAR: DisposePorts output 5
JAR: DisposePorts output 6
JAR: DisposePorts output 7
JAR: DisposePorts output 8
JAR: DisposePorts output 9
JAR: DisposePorts output 10
JAR: DisposePorts output 11
JAR: DisposePorts output 12
JAR: DisposePorts output 13
JAR: DisposePorts output 14
JAR: DisposePorts output 15
JAR: DisposePorts output 16
JAR: DisposePorts output 17
JAR: DisposePorts output 18
JAR: DisposePorts output 19
JAR: DisposePorts output 20
JAR: DisposePorts output 21
JAR: DisposePorts output 22
JAR: DisposePorts output 23
JAR: DisposePorts output 24
JAR: DisposePorts output 25
JAR: DisposePorts output 26
JAR: DisposePorts output 27
JAR: DisposePorts output 28
JAR: DisposePorts output 29
JAR: DisposePorts output 30
JAR: DisposePorts output 31
JAR: DisposePorts output 32
JAR: DisposePorts output 33
JAR: DisposePorts output 34
JAR: DisposePorts output 35
JAR: DisposePorts output 36
JAR: DisposePorts output 37
JAR: DisposePorts output 38
JAR: DisposePorts output 39
JAR: DisposePorts output 40
JAR: DisposePorts output 41
JAR: DisposePorts output 42
JAR: DisposePorts output 43
JAR: DisposePorts output 44
JAR: DisposePorts output 45
JAR: DisposePorts output 46
JAR: DisposePorts output 47
JAR: DisposePorts output 48
JAR: DisposePorts output 49
JAR: DisposePorts output 50
JAR: DisposePorts output 51
JAR: DisposePorts output 52
JAR: DisposePorts output 53
JAR: DisposePorts output 54
JAR: DisposePorts output 55
JAR: DisposePorts output 56
JAR: DisposePorts output 57
JAR: DisposePorts output 58
JAR: DisposePorts output 59
JAR: DisposePorts output 60
JAR: DisposePorts output 61
JAR: DisposePorts output 62
JAR: DisposePorts output 63
JAR: DisposePorts output 64
JAR: DisposePorts output 65
JAR: DisposePorts output 66
JAR: DisposePorts output 67
JAR: DisposePorts output 68
JAR: DisposePorts output 69
JAR: DisposePorts output 70
JAR: DisposePorts output 71
JAR: DisposePorts output 72
JAR: DisposePorts output 73
JAR: DisposePorts output 74
JAR: DisposePorts output 75
JAR: DisposePorts output 76
JAR: DisposePorts output 77
JAR: DisposePorts output 78
JAR: DisposePorts output 79
JAR: DisposePorts output 80
JAR: JackRouterDevice::FinishCommandExecution
AudioDeviceAddIOProc failed 1852797029
start audio failed.
JAR: HP_Device::Do_StopAllIOProcs
JAR: JackRouterDevice::IsSafeToExecuteCommand
jack_client_thread_id = 0 pthread_self = -1607059680
JAR: JackRouterDevice::IsSafeToExecuteCommand theAnswer = 1
JAR: JackRouterDevice::StartCommandExecution
JAR: HP_Device::StopAllIOProcs 0
JAR: JackRouterDevice::StopAllIOProcs
JAR: JackRouterDevice::FinishCommandExecution
JAR: JackRouterPlugIn::Teardown 1
RESULT = 1
ERROR:
server failed to start
cheers,
Wouter
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
******************************************
/* Joshua D. Parmenter
http://www.realizedsound.net/josh/
“Every composer – at all times and in all cases – gives his own
interpretation of how modern society is structured: whether
actively or passively, consciously or unconsciously, he makes
choices in this regard. He may be conservative or he may subject
himself to continual renewal; or he may strive for a
revolutionary, historical or social palingenesis." - Luigi Nono
*/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/
_______________________________________________
sc-users mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-users/
search: https://listarc.bham.ac.uk/lists/sc-users/search/