From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: David Pirotte Newsgroups: gmane.lisp.guile.user Subject: Re: Matrix or array operations library Date: Tue, 25 Dec 2018 15:12:37 -0200 Message-ID: <20181225151237.1b0090c0@capac> References: <7a362a59-3a4d-44c8-f4cd-5b232b6dffce@gmail.com> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha512; boundary="Sig_/X_Ve1zoQ/EdBlxVKfc7/CVs"; protocol="application/pgp-signature" X-Trace: blaine.gmane.org 1545757869 17646 195.159.176.226 (25 Dec 2018 17:11:09 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 25 Dec 2018 17:11:09 +0000 (UTC) Cc: Guile User To: Zelphir Kaltstahl Original-X-From: guile-user-bounces+guile-user=m.gmane.org@gnu.org Tue Dec 25 18:11:05 2018 Return-path: Envelope-to: guile-user@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gbqES-0004VS-2g for guile-user@m.gmane.org; Tue, 25 Dec 2018 18:11:04 +0100 Original-Received: from localhost ([127.0.0.1]:42302 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbqGY-0008UI-T8 for guile-user@m.gmane.org; Tue, 25 Dec 2018 12:13:14 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:36694) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gbqG9-0008UB-NS for guile-user@gnu.org; Tue, 25 Dec 2018 12:12:50 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gbqG6-0003cm-JT for guile-user@gnu.org; Tue, 25 Dec 2018 12:12:49 -0500 Original-Received: from maximusconfessor.all2all.org ([79.99.200.102]:55862) by eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1gbqG6-0003bj-Dh for guile-user@gnu.org; Tue, 25 Dec 2018 12:12:46 -0500 Original-Received: from localhost (localhost [127.0.0.1]) by maximusconfessor.all2all.org (Postfix) with ESMTP id A875B1BE0102; Tue, 25 Dec 2018 18:12:44 +0100 (CET) Original-Received: from maximusconfessor.all2all.org ([127.0.0.1]) by localhost (maximusconfessor.all2all.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id fd3Xk7J7NUaB; Tue, 25 Dec 2018 18:12:44 +0100 (CET) Original-Received: from capac (unknown [179.210.18.89]) by maximusconfessor.all2all.org (Postfix) with ESMTPSA id D3D5A1BE00DF; Tue, 25 Dec 2018 18:12:43 +0100 (CET) In-Reply-To: <7a362a59-3a4d-44c8-f4cd-5b232b6dffce@gmail.com> X-Mailer: Claws Mail 3.17.1 (GTK+ 2.24.32; x86_64-pc-linux-gnu) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] [fuzzy] X-Received-From: 79.99.200.102 X-BeenThere: guile-user@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: General Guile related discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guile-user-bounces+guile-user=m.gmane.org@gnu.org Original-Sender: "guile-user" Xref: news.gmane.org gmane.lisp.guile.user:15144 Archived-At: --Sig_/X_Ve1zoQ/EdBlxVKfc7/CVs Content-Type: text/plain; charset=US-ASCII Content-Transfer-Encoding: quoted-printable Hello, > Is there some library, that enables high performance matrix operations > or even n-dimensional array operations? I am thinking of something like > NumPy in the Python ecosystem. I think NumPy in turn also uses some > lower level thing to do what it does. I think OpenBLAS or MKL, depending > on the architecture. I wonder if there is any wrapper around OpenBLAS > for Guile or something similar. > ... There are quite a few libs you might look at before you start to code your = own: https://notabug.org/lloda ... guile-newra guile-ffi-cblas ... guile-ploy ... AIscm http://wedesoft.github.io/aiscm I also wrote a set of n-dim array math ops (including matrix ops) for Guile= -CV: https://www.gnu.org/software/guile-cv/ the manual is available online, math and matrix ops are described in the 'Processing' section mentioning Guile-CV because images are just a collection of n-dim arrays. (see 'Image Structure and Accessors' in the manual). in Guile-CV, all (almost all) arrays are f32vectors - see (srfi srfi-4) in the Guile manual - math and matrix ops are written in C (but memory allocation entirely kept in scheme). multi channel ops are multi-threaded some of these math and matrix ops also work on s32 and f64 (undocumented so far): it would not take much to actually fully generalize all guile-cv math and matrix ops for the full set of (srfi srfi-4 ) types. Cheers, David =09 --Sig_/X_Ve1zoQ/EdBlxVKfc7/CVs Content-Type: application/pgp-signature Content-Description: OpenPGP digital signature -----BEGIN PGP SIGNATURE----- iQEzBAEBCgAdFiEEhCJlRZtBM3furJHe83T9k6MFetcFAlwiZQUACgkQ83T9k6MF etcT/Qf9ENHoUP5WNxHkbKVxgfYCHUb5p7Qg2PY43tjs26/BdKGOF++XZ57YtnIG GZBwaxMzqyKfVf/uxsI7hj60T0tti7L2RONqiJByPmC7+qRyCzoLJ+OXUVTdm45b wmmKmwC42nRQbzQvKA3Zh9eKKk2wdIe02E+XKjOou2fEvlr6jngHgpVYxPzbneqz K/40DC/BCr3doLXPysIbCRR24/397V1P/mbzBq3yhDECOW6mNuFZm0pDlew8P+BR Bh9Y11x+Q1cTqbHX6OKTNI5Wmz/MNmZrK+YSwQ/5++uZiXa9XLV8tF2GfGQrghGl 6795Qt7Ex2zIJyiK6eiO3eSgPuGqdg== =Ia4F -----END PGP SIGNATURE----- --Sig_/X_Ve1zoQ/EdBlxVKfc7/CVs--