2010-08-31

the MathLink ABI

2019.10.9: summary:
. how I was introduced to the term
ABI (application binary interface)
in which programs and processes
communicate with each other;
I give it the meaning within addx
of a communication that involves
etrees (expression trees) rather than ascii text.

2019.10.9: source:
MathLink for C/C++ on Windows:
MathLink is a layered software system:
. the system-independent component
encodes expressions as a string of bytes.
. the OS-specific component transfers the bytes
from one program to another;
such an implementation is called a MathLink device.
. one MathLink device uses the services of
the TCP internet protocol to transfer data
between processes on different computers.
As a shared library, MathLink can be used with
any development environment that adheres to
the standard calling conventions
and binary interface for DLLs.
Each development environment supports
the notion of a "project document"
whereby source files and options for the
compiler, linker, and debugger
are managed using a project window,
a collection of dialog boxes,
and other interactive interface elements.
In addition to this
integrated development environment (IDE),
all the vendors supply tools that can be
run from the command prompt
or invoked by a make utility.
. programs implement the MathLink API
(application programming interface).
MathLink is the low-level interface
that is the root of all link objects in J/Link.
The methods in MathLink correspond roughly to
a subset of those in the C-language MathLink API.
Most programmers will deal instead with
objects of type KernelLink,
a higher-level interface that extends MathLink
and incorporates the assumption that the
program on the other side of the link
is a Mathematica kernel.
interface KernelLink extends MathLink:
KernelLink is the main link interface that
J/Link programmers will use.
The MathLink interface contains the low-level methods
for reading and writing data.
KernelLink extends the MathLink interface,
adding some higher-level methods that are
specific to the Mathematica kernel.

adda/ABI"mathlink

2010:
8.12: news.adda/mathematica`mathlink:
. MathLink is the same as the
binary version of adda:
it's the communication protocol between
the kernel that provides the app,
and the notebook that is the user's agent;
. any program that adopts this protocol,
can communicate with any other app,
and of course, the user's agent .
. adopters can communicate as
client, server, or peer-to-peer .
. it makes accessible any hardware resources
having a c interface .
. because it's the connection between
the user's shell and the engine,
you're assured that its API is complete:
anything you can see as a user,
can also be seen by an
app that has embedded Mathematica .
. conversely, a custom user's shell (such as addx)
can have integrated access to both
Mathematica and addx.
. Wolfram already has a customized
user's shell, .NET/Link,
that integrates microsoft's .NET
. this is a complete integration,
extending the Mathematica language
with all existing and future .NET types
(which include all library calls)
allowing the same immediate run mode,
for RAD programming of .NET
and Mathematica extensions .
-- and it's openware!

. its protocol includes internet,
and includes data integrity .
. if the binary protocol is not usable,
it can also revert to html or xml .
. as the binary version of a full-featured language,
it can express "(out-of-band data, such as exceptions).
. having this network access means it can support
 a Parallel Computing Toolkit,
and act like the X protocol, running on a server,
while viewed from a laptop or tablet.

. in addition to being an ipc protocol
for extending and embedding Mathematica,
Mathlink is a reference to some
pre-built integrations with some other
popular app's like Excel,
where it can a either extend or replace
that spreadsheet's macro language .

. the C/C++ MathLink Software Developer Kit (SDK)
ships with every version of Mathematica .

massively parallel computing for the masses!
. the Mathematica cloud computing service
is a collaborative effort of
Wolfram Research's parallel programming API,
Nimbis Services's job routing,
and R Systems NA's supercomputer time .
. it assists parallel programming
by providing an integrated
technical computing platform,
enabling computation, visualization,
and data access.
(2008.12: Mathematica 7 features concurrency primitives:
Wolfram's new Parallelize, ParallelTry
and ParallelEvaluate functions
provide automatic and concurrent
expression evaluation.
Parallel performance can be tweaked and queued using
the ParallelMap, ParallelCombine, ParallelSubmit,
WaitAll and WaitNext functions.
These and many other parallel computing functions
ensure that developers have tremendously granular control
over what will be sent through the parallel pipeline
and exactly how that data will be processed.
. this concurrency can also be fully utilized
with Wolfram's gridMathematica
and upcoming CloudMathematica add-ons .)
. Nimbis Services, Inc., is a clearing-house,
providing business users an easy to use
menu of hpc services,
including TOP500 supercomputers
and the Amazon Elastic Compute Cloud,
all in one "instant" storefront.
. Nimbis Services will enable access to
R Systems NA, Inc.,
whose R Smarr cluster was the
44th fastest supercomputing system
on the TOP500 list in 2008 .
. R Systems has exceptionally large memory
in multi-core HPC resources
with a double-data and quad-data rate
InfiniBand network .
R Systems not yet accessable:
. only Amazon EC2 configurations
are currently operational.

8.14: adda/ABI/versioning:
. an abi (app'binary interface)
may need to be revised;
as an extension to the addm abi:
(type, subtype, function, args)
there needs to be an identity number
that is established by handshake
which is detected by the msg being
sent from the zero identity .
. identities are retained for the duration of
a connection session;
. the handshake is coded in the original ABI version,
and the parties can then haggle about
what the remaining session will be coded in .

No comments:

Post a Comment