Netsolve

Jean-Philippe CHANCELIER
Version pdf de ce document
Version sans bandeaux

Table des matières

1 Using NetSolve with Scilab

NetSolve is a project that aims to bring together disparate computational resources connected by computer networks. It is a RPC based client/agent/server system that allows one to remotely access both hardware and software components.

I provide here a patched version of NetSolve-1.4.1 which works with Scilab : NetSolve-1.4.1 for Scilab

This patched version will work with a Scilab cvs version (Sept 23 2002 or newer. For example, it is supposed to work with the rpm provided in this page) and I have only tested the code on Linux (RedHat 7.3).

A make scilab target is added in the NetSolve-1.4.1 Makefiles, and using make scilab should build a Scilab toolbox as a shared library. <li>You can then test scilab/netsolve using make tests in the directory NetSolve-1.4.1/src/Testing/scilab. make tests will test some blas routines, ma28 and superlu solvers (assuming that ma28 and superlu solvers are present on the netsolve servers you are using).

A lapack_test.tst file is also provided, but with at least one uncorrected bug (A first call to netsolve('dgesv',a,b) returns a wrong result and subsequent calls return correct results). feebacks are welcome.

You can also manually run a scilab test just be executing one of the .tst script (NetSolve-1.4.1/src/Testing/scilab/*.tst) in Scilab :

clio% scilab -nw 
                    ==========
                      Scilab
                    ==========

                    scilab-2.7-CVS
                    Copyright (C) 1989-2002 INRIA/ENPC
Startup execution:
  loading initial environment
 
-->exec ma28.tst 
-->// test for MA28
 
-->exec('loader.sce');
shared archive loaded
 
-->//[A,rhs] = generate(1);
-->//A1=mtlb_sparse(A);
-->N=20;
-->A= int(N*sprand(N,N,95/100));
-->A1=mtlb_sparse(A);
-->rhs = ones(N,1);
 
-->x = netsolve('sparse_direct_solve','MA28',A1,rhs,0.3,1);
Sending Input to Server clio.enpc.fr
Downloading Output from Server clio.enpc.fr
 
-->if netsolve_check(0)== %f then pause,end
-->r = norm(full(A*x-rhs))/(norm(full(A))*norm(full(x))*%eps);
-->if r>50 then pause,end

The netsolve toolbox is loaded in Scilab by executing the loader.sce script file found in NetSolve-1.4.1/bin/xxxx/loader.sce where xxx is to be replaced by the proper bin architecture. For example, on my Linux machine, the NetSolve binaries are stored in NetSolve-1.4.1/bin/i686_pc_linux_gnu/ and the toolbox Scilab loader is installed in that directory.