MathGroup Archive 2005

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Does Mathematica 5 use multiple processors on SPARC?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg55201] Re: Does Mathematica 5 use multiple processors on SPARC?
  • From: Dave <nospam at nowhere.com>
  • Date: Wed, 16 Mar 2005 05:36:42 -0500 (EST)
  • References: <200503140843.DAA27103@smc.vnet.net> <d15rvl$9j9$1@smc.vnet.net>
  • Sender: owner-wri-mathgroup at wolfram.com

Igor Antonio wrote:
> Dave wrote:
> 
>>I assume this technical FAQ
>>
>>http://support.wolfram.com/mathematica/systems/allplatforms/multipleprocessors.html
>>
>>is out of date since it says "The current version of Mathematica does 
>>not take direct advantage of multiple processors on any platform"
>>
>>whereas
>>
>>http://www.wolfram.com/products/mathematica/newin5/performance/
>>
>>says "Mathematica 5 also takes advantage of multiple processors for a 
>>range of numerical operations on those operating systems such as Linux, 
>>Windows, and HP-UX that support this multithreaded capability."
>>
>>Now my question is does Mathematica 5 support multiple processors on 
>>Solaris? Since the kernel code is very similar across platforms, I 
>>assume it does, although it is odd to mention HP-UX and not Solaris, 
>>when the latter is probably used much more.
>>
>>
> 
> 
> Dave,
> 
> Solaris, AIX, SGI, and Linux x86-64 don't use threaded libraries, so 
> numerical operations (the ones that use BLAS libraries for example) will 
> not take advantage of multiple processors.
> 
> 
> Igor Antonio
> Wolfram Research, Inc.
> http://www.wolfram.com
> 
> To email me personally, remove the dash.
> 
What exactly to you mean by 'threaded libraries'?

I just did a 'man -k thread' on a standard Solaris box, and see there 
are numerous thread related libraries - see output at the bottom of the 
message. Note, I have not installed anything like pthreads on this box - 
it is just a web server. Can't Mathematica make use of them?

BLAS seems to work on Solaris
http://www.cs.utexas.edu/users/kgoto/signup_first.html
A quick web search shows several references to BLAS on Solaris, so why 
should Mathematica not use them, if it uses them on HP-UX?

Just wondering what is so hard about making Mathematica use multiple 
processors on Solaris. I've been thinking for years Mathematica should 
support multiple processors. Given the sort of program it is, support 
for multiple processors would be useful.

That said, I'm well aware finding problems in threaded programs can be a 
real pain, as they are not easily reproducible. I'd rather Mathematica 
took its time to get the right result, rather than give a wrong one in 
less time!!

I've copied this to a Solaris newsgroup too, although the original 
question was only put on the Mathematica newsgroup.

PS, you might want to change
http://support.wolfram.com/mathematica/systems/allplatforms/multipleprocessors.html
as it is clearly out of date now.

David Kirkby.

webserver2   # man -k thread
biodone         biodone (9f)    - release buffer after buffer I/O 
transfer and notify blocked threads
cancellation    cancellation (3thr) - overview of concepts related to 
POSIX thread cancellation
ddi_get_kt_did  ddi_get_kt_did (9f) - get identifier of current thread
ddi_mmap_get_model              ddi_mmap_get_model (9f) - return data 
model type of current thread
door_bind       door_bind (3door)   - bind or unbind the current thread 
with the door server pool
door_server_create              door_server_create (3door)  - specify an 
alternative door server thread creation function
door_unbind     door_bind (3door)   - bind or unbind the current thread 
with the door server pool
libglib-2.0     libglib-2.0 ()  - general purpose utility library, GLib 
support for dynamic plug-ins, GLib support for thread abstraction
libgmodule-2.0  libglib-2.0 ()  - general purpose utility library, GLib 
support for dynamic plug-ins, GLib support for thread abstraction
libgthread-2.0  libglib-2.0 ()  - general purpose utility library, GLib 
support for dynamic plug-ins, GLib support for thread abstraction
libmtmalloc     libmtmalloc (3lib)  - multi-threaded memory allocator 
library
libpthread      libpthread (3lib)   - POSIX threads library
libthread       libthread (3lib)    - threads library
libthread_db    libthread_db (3lib) - threads debugging library
libthread_db    libthread_db (3thr) - library of interfaces for 
monitoring and manipulating threads-related aspects of multithreaded 
programs
mq_notify       mq_notify (3rt) - notify process (or thread) that a 
message is available on a queue
mt-streams      mt-streams (9f) - STREAMS multithreading
ps_kill         ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_lcontinue    ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_lgetfpregs   ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lgetregs     ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lgetxregs    ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lgetxregsize ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lrolltoaddr  ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_lsetfpregs   ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lsetregs     ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lsetxregs    ps_lgetregs (3proc) - routines that access the target 
process register in libthread_db
ps_lstop        ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_pcontinue    ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_pdread       ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
ps_pdwrite      ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
ps_pread        ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
ps_pstop        ps_pstop (3proc)    - process and LWP control in 
libthread_db
ps_ptread       ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
ps_ptwrite      ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
ps_pwrite       ps_pread (3proc)    - interfaces in libthread_db that 
target process memory access
pthread_atfork  pthread_atfork (3c) - register fork handlers
pthread_attr_destroy            pthread_attr_init (3thr)    - initialize 
or destroy threads attribute object
pthread_attr_getdetachstate     pthread_attr_getdetachstate (3thr)  - 
get or set detachstate attribute
pthread_attr_getguardsize       pthread_attr_getguardsize (3thr)    - 
get or set the thread guardsize attribute
pthread_attr_getinheritsched    pthread_attr_getinheritsched (3thr) - 
get or set inheritsched attribute
pthread_attr_getschedparam      pthread_attr_getschedparam (3thr)   - 
get or set schedparam attribute
pthread_attr_getschedpolicy     pthread_attr_getschedpolicy (3thr)  - 
get or set schedpolicy attribute
pthread_attr_getscope           pthread_attr_getscope (3thr)    - get or 
set contentionscope attribute
pthread_attr_getstackaddr       pthread_attr_getstackaddr (3thr)    - 
get or set stackaddr attribute
pthread_attr_getstacksize       pthread_attr_getstacksize (3thr)    - 
get or set stacksize attribute
pthread_attr_init               pthread_attr_init (3thr)    - initialize 
or destroy threads attribute object
pthread_attr_setdetachstate     pthread_attr_getdetachstate (3thr)  - 
get or set detachstate attribute
pthread_attr_setguardsize       pthread_attr_getguardsize (3thr)    - 
get or set the thread guardsize attribute
pthread_attr_setinheritsched    pthread_attr_getinheritsched (3thr) - 
get or set inheritsched attribute
pthread_attr_setschedparam      pthread_attr_getschedparam (3thr)   - 
get or set schedparam attribute
pthread_attr_setschedpolicy     pthread_attr_getschedpolicy (3thr)  - 
get or set schedpolicy attribute
pthread_attr_setscope           pthread_attr_getscope (3thr)    - get or 
set contentionscope attribute
pthread_attr_setstackaddr       pthread_attr_getstackaddr (3thr)    - 
get or set stackaddr attribute
pthread_attr_setstacksize       pthread_attr_getstacksize (3thr)    - 
get or set stacksize attribute
pthread_cancel  pthread_cancel (3thr)   - cancel execution of a thread
pthread_cleanup_pop             pthread_cleanup_pop (3thr)  - pop a 
thread cancellation cleanup handler
pthread_cleanup_push            pthread_cleanup_push (3thr) - push a 
thread cancellation cleanup handler
pthread_cond_broadcast          pthread_cond_signal (3thr)  - signal or 
broadcast a condition
pthread_cond_destroy            pthread_cond_init (3thr)    - initialize 
or destroy condition variables
pthread_cond_init               pthread_cond_init (3thr)    - initialize 
or destroy condition variables
pthread_cond_reltimedwait_np    pthread_cond_wait (3thr)    - wait on a 
condition
pthread_cond_signal             pthread_cond_signal (3thr)  - signal or 
broadcast a condition
pthread_cond_timedwait          pthread_cond_wait (3thr)    - wait on a 
condition
pthread_cond_wait               pthread_cond_wait (3thr)    - wait on a 
condition
pthread_condattr_destroy        pthread_condattr_init (3thr)    - 
initialize or destroy condition variable attributes object
pthread_condattr_getpshared     pthread_condattr_getpshared (3thr)  - 
get or set the process-shared condition variable attributes
pthread_condattr_init           pthread_condattr_init (3thr)    - 
initialize or destroy condition variable attributes object
pthread_condattr_setpshared     pthread_condattr_getpshared (3thr)  - 
get or set the process-shared condition variable attributes
pthread_create  pthread_create (3thr)   - create a thread
pthread_detach  pthread_detach (3thr)   - detach a thread
pthread_equal   pthread_equal (3thr)    - compare thread IDs
pthread_exit    pthread_exit (3thr) - terminate calling thread
pthread_getconcurrency          pthread_getconcurrency (3thr)   - get or 
set level of concurrency
pthread_getschedparam           pthread_getschedparam (3thr)    - access 
dynamic thread scheduling parameters
pthread_getspecific             pthread_getspecific (3thr)  - manage 
thread-specific data
pthread_join    pthread_join (3thr) - wait for thread termination
pthread_key_create              pthread_key_create (3thr)   - create 
thread-specific data key
pthread_key_delete              pthread_key_delete (3thr)   - delete 
thread-specific data key
pthread_kill    pthread_kill (3thr) - send a signal to a thread
pthread_mutex_consistent_np     pthread_mutex_consistent_np (3thr)  - 
make a mutex consistent after owner death
pthread_mutex_destroy           pthread_mutex_init (3thr)   - initialize 
or destroy a mutex
pthread_mutex_getprioceiling    pthread_mutex_getprioceiling (3thr) - 
change the priority ceiling of a mutex
pthread_mutex_init              pthread_mutex_init (3thr)   - initialize 
or destroy a mutex
pthread_mutex_lock              pthread_mutex_lock (3thr)   - lock or 
unlock a mutex
pthread_mutex_setprioceiling    pthread_mutex_getprioceiling (3thr) - 
change the priority ceiling of a mutex
pthread_mutex_trylock           pthread_mutex_lock (3thr)   - lock or 
unlock a mutex
pthread_mutex_unlock            pthread_mutex_lock (3thr)   - lock or 
unlock a mutex
pthread_mutexattr_destroy       pthread_mutexattr_init (3thr)   - 
initialize and destroy mutex attributes object
pthread_mutexattr_getprioceiling    pthread_mutexattr_getprioceiling 
(3thr) - get and set prioceiling attribute of mutex attribute object
pthread_mutexattr_getprotocol   pthread_mutexattr_getprotocol (3thr) 
- get and set protocol attribute of mutex attribute object
pthread_mutexattr_getpshared    pthread_mutexattr_getpshared (3thr) - 
get and set process-shared attribute
pthread_mutexattr_getrobust_np  pthread_mutexattr_getrobust_np (3thr) 
- get or set robustness attribute of mutex attribute object
pthread_mutexattr_gettype       pthread_mutexattr_gettype (3thr)    - 
get or set a mutex type
pthread_mutexattr_init          pthread_mutexattr_init (3thr)   - 
initialize and destroy mutex attributes object
pthread_mutexattr_setprioceiling    pthread_mutexattr_getprioceiling 
(3thr) - get and set prioceiling attribute of mutex attribute object
pthread_mutexattr_setprotocol   pthread_mutexattr_getprotocol (3thr) 
- get and set protocol attribute of mutex attribute object
pthread_mutexattr_setpshared    pthread_mutexattr_getpshared (3thr) - 
get and set process-shared attribute
pthread_mutexattr_setrobust_np  pthread_mutexattr_getrobust_np (3thr) 
- get or set robustness attribute of mutex attribute object
pthread_mutexattr_settype       pthread_mutexattr_gettype (3thr)    - 
get or set a mutex type
pthread_once    pthread_once (3thr) - initialize dynamic package
pthread_rwlock_destroy          pthread_rwlock_init (3thr)  - initialize 
or destroy a read-write lock object
pthread_rwlock_init             pthread_rwlock_init (3thr)  - initialize 
or destroy a read-write lock object
pthread_rwlock_rdlock           pthread_rwlock_rdlock (3thr)    - lock 
or attempt to lock a read-write lock object for reading
pthread_rwlock_tryrdlock        pthread_rwlock_rdlock (3thr)    - lock 
or attempt to lock a read-write lock object for reading
pthread_rwlock_trywrlock        pthread_rwlock_wrlock (3thr)    - lock 
or attempt to lock a read-write lock object for writing
pthread_rwlock_unlock           pthread_rwlock_unlock (3thr)    - unlock 
a read-write lock object
pthread_rwlock_wrlock           pthread_rwlock_wrlock (3thr)    - lock 
or attempt to lock a read-write lock object for writing
pthread_rwlockattr_destroy      pthread_rwlockattr_init (3thr)  - 
initialize or destroy read-write lock attributes object
pthread_rwlockattr_getpshared   pthread_rwlockattr_getpshared (3thr) 
- get or set process-shared attribute of read-write lock attributes object
pthread_rwlockattr_init         pthread_rwlockattr_init (3thr)  - 
initialize or destroy read-write lock attributes object
pthread_rwlockattr_setpshared   pthread_rwlockattr_getpshared (3thr) 
- get or set process-shared attribute of read-write lock attributes object
pthread_self    pthread_self (3thr) - get calling thread's ID
pthread_setcancelstate          pthread_setcancelstate (3thr)   - enable 
or disable cancellation
pthread_setcanceltype           pthread_setcanceltype (3thr)    - set 
the cancellation type of a thread
pthread_setconcurrency          pthread_getconcurrency (3thr)   - get or 
set level of concurrency
pthread_setschedparam           pthread_getschedparam (3thr)    - access 
dynamic thread scheduling parameters
pthread_setspecific             pthread_getspecific (3thr)  - manage 
thread-specific data
pthread_sigmask pthread_sigmask (3thr)  - change or examine calling 
thread's signal mask
pthread_testcancel              pthread_testcancel (3thr)   - create 
cancellation point in the calling thread
pthreads        threads (3thr)  - concepts related to POSIX pthreads and 
Solaris threads and the libpthread and libthread libraries
td_event_addset td_ta_event_addr (3thr) - thread events in libthread_db
td_event_delset td_ta_event_addr (3thr) - thread events in libthread_db
td_event_emptyset               td_ta_event_addr (3thr) - thread events 
in libthread_db
td_event_fillset                td_ta_event_addr (3thr) - thread events 
in libthread_db
td_eventisempty td_ta_event_addr (3thr) - thread events in libthread_db
td_eventismember                td_ta_event_addr (3thr) - thread events 
in libthread_db
td_init         td_init (3thr)  - performs initialization for 
libthread_db library of interfaces
td_sync_get_info                td_sync_get_info (3thr) - operations on 
a synchronization object in libthread_db
td_sync_get_stats               td_sync_get_info (3thr) - operations on 
a synchronization object in libthread_db
td_sync_setstate                td_sync_get_info (3thr) - operations on 
a synchronization object in libthread_db
td_sync_waiters td_sync_get_info (3thr) - operations on a 
synchronization object in libthread_db
td_ta_clear_event               td_ta_event_addr (3thr) - thread events 
in libthread_db
td_ta_delete    td_ta_new (3thr)    - allocate and deallocate process 
handles for libthread_db
td_ta_enable_stats              td_ta_enable_stats (3thr)   - collect 
target process statistics for libthread_db
td_ta_event_addr                td_ta_event_addr (3thr) - thread events 
in libthread_db
td_ta_event_getmsg              td_ta_event_addr (3thr) - thread events 
in libthread_db
td_ta_get_nthreads              td_ta_get_nthreads (3thr)   - gets the 
total number of threads in a process for libthread_db
td_ta_get_ph    td_ta_new (3thr)    - allocate and deallocate process 
handles for libthread_db
td_ta_get_stats td_ta_enable_stats (3thr)   - collect target process 
statistics for libthread_db
td_ta_map_id2thr                td_ta_map_id2thr (3thr) - convert a 
thread id or LWP id to a thread handle
td_ta_map_lwp2thr               td_ta_map_id2thr (3thr) - convert a 
thread id or LWP id to a thread handle
td_ta_new       td_ta_new (3thr)    - allocate and deallocate process 
handles for libthread_db
td_ta_reset_stats               td_ta_enable_stats (3thr)   - collect 
target process statistics for libthread_db
td_ta_set_event td_ta_event_addr (3thr) - thread events in libthread_db
td_ta_sync_iter td_ta_sync_iter (3thr)  - iterator functions on process 
handles from libthread_db
td_ta_sync_tracking_enable      td_sync_get_info (3thr) - operations on 
a synchronization object in libthread_db
td_ta_thr_iter  td_ta_sync_iter (3thr)  - iterator functions on process 
handles from libthread_db
td_ta_tsd_iter  td_ta_sync_iter (3thr)  - iterator functions on process 
handles from libthread_db
td_thr_clear_event              td_ta_event_addr (3thr) - thread events 
in libthread_db
td_thr_dbresume td_thr_dbsuspend (3thr) - suspend and resume threads in 
libthread_db
td_thr_dbsuspend                td_thr_dbsuspend (3thr) - suspend and 
resume threads in libthread_db
td_thr_event_enable             td_ta_event_addr (3thr) - thread events 
in libthread_db
td_thr_event_getmsg             td_ta_event_addr (3thr) - thread events 
in libthread_db
td_thr_get_info td_thr_get_info (3thr)  - get thread information in 
libthread_db library of interfaces
td_thr_getfpregs                td_thr_getgregs (3thr)  - reading and 
writing thread registers in libthread_db
td_thr_getgregs td_thr_getgregs (3thr)  - reading and writing thread 
registers in libthread_db
td_thr_getxregs td_thr_getgregs (3thr)  - reading and writing thread 
registers in libthread_db
td_thr_getxregsize              td_thr_getgregs (3thr)  - reading and 
writing thread registers in libthread_db
td_thr_lockowner                td_thr_lockowner (3thr) - iterate over 
the set of locks owned by a thread
td_thr_set_event                td_ta_event_addr (3thr) - thread events 
in libthread_db
td_thr_setfpregs                td_thr_getgregs (3thr)  - reading and 
writing thread registers in libthread_db
td_thr_setgregs td_thr_getgregs (3thr)  - reading and writing thread 
registers in libthread_db
td_thr_setprio  td_thr_setprio (3thr)   - set the priority of a thread
td_thr_setsigpending            td_thr_setsigpending (3thr) - manage 
thread signals for libthread_db
td_thr_setxregs td_thr_getgregs (3thr)  - reading and writing thread 
registers in libthread_db
td_thr_sigsetmask               td_thr_setsigpending (3thr) - manage 
thread signals for libthread_db
td_thr_sleepinfo                td_thr_sleepinfo (3thr) - return the 
synchronization handle for the object on which a thread is blocked
td_thr_tsd      td_thr_tsd (3thr)   - get a thread's thread-specific 
data for libthread_db library of interfaces
td_thr_validate td_thr_validate (3thr)  - test a thread handle for validity
thr_continue    thr_suspend (3thr)  - suspend or continue thread execution
thr_create      thr_create (3thr)   - create a thread
thr_exit        thr_exit (3thr) - terminate the calling thread
thr_getconcurrency              thr_getconcurrency (3thr)   - get or set 
thread concurrency level
thr_getprio     thr_getprio (3thr)  - access dynamic thread scheduling
thr_getspecific thr_keycreate (3thr)    - thread-specific-data functions
thr_join        thr_join (3thr) - wait for thread termination
thr_keycreate   thr_keycreate (3thr)    - thread-specific-data functions
thr_kill        thr_kill (3thr) - send a signal to a thread
thr_main        thr_main (3thr) - identify the main thread
thr_min_stack   thr_min_stack (3thr)    - return the minimum-allowable 
size for a thread's stack
thr_self        thr_self (3thr) - get calling thread's ID
thr_setconcurrency              thr_getconcurrency (3thr)   - get or set 
thread concurrency level
thr_setprio     thr_getprio (3thr)  - access dynamic thread scheduling
thr_setspecific thr_keycreate (3thr)    - thread-specific-data functions
thr_sigsetmask  thr_sigsetmask (3thr)   - change or examine calling 
thread's signal mask
thr_stksegment  thr_stksegment (3thr)   - get thread stack address and size
thr_suspend     thr_suspend (3thr)  - suspend or continue thread execution
thr_yield       thr_yield (3thr)    - yield to another thread
threads         threads (3thr)  - concepts related to POSIX pthreads and 
Solaris threads and the libpthread and libthread libraries
tnf_thread_disable              tnf_process_disable (3tnf)  - probe 
control internal interface
tnf_thread_enable               tnf_process_disable (3tnf)  - probe 
control internal interface
webserver2   #


  • Prev by Date: Re: Plotting a super ellipse
  • Next by Date: Re: Do loops in Mathematica
  • Previous by thread: Re: Does Mathematica 5 use multiple processors on SPARC?
  • Next by thread: Re: Does Mathematica 5 use multiple processors on SPARC?