2011-06-03 4 views
1

J'utilise le framework Accelerate pour résoudre un système sous/surdéterminé d'équations linéaires. La routine que j'utilise est dgelsd_ originaire de LAPACK.La routine LAPACK fonctionne sur le simulateur iPhone, mais pas sur le périphérique

dgelsd_(&m, &n, &nrhs, a_t, &lda, b, &ldb, s, &RCOND, &IRANK, work, &workSize, iWork, &info); 

Cela fonctionne très bien dans le simulateur, où sur des matrices fournissant et b a_t, le résultat est renvoyé correctement b. Cependant, quand j'essaye ceci sur l'appareil, le résultat est tous les zéros.

Où pourrais-je me tromper? J'ai affecté une certaine quantité de mémoire de travail pour la routine, comme requis, mais j'ai effectué une vérification avec le profileur et la mémoire ne semble pas être le problème.

Est-ce que quelqu'un a des routines LAPACK pour fonctionner correctement sur l'iPhone? Merci.

Edit: iPhone SDK version 4.2, iPhone Device 4

+0

Sur quel périphérique/système d'exploitation essayez-vous de l'exécuter? –

Répondre

3

On dirait que c'est un known issue en utilisant la double précision. Solution: utilisez des flotteurs à simple précision, c'est-à-dire des flotteurs.

-2

LAPACK ne sont pas disponibles sur les appareils iOS - seulement BLAS et VDSP. Cela fonctionne sur le simulateur car cette librairie est disponible sur mac. iOS Accelerate Reference

+1

Je ne suis pas d'accord. Avec iOS 4.0, Apple a introduit les fonctions LAPACK dans Accelerate pour iPhone. [Changelog ici] (http://developer.apple.com/library/ios/#releasenotes/General/iPhone40APIDiffs/). – Warr1ck

0

J'utilise sgesv_ (single-precison) pour résoudre un système d'équation 1200x1200. Le temps d'exécution sur un iPhone 4 est de 1,1 s, comparé à 60 s en utilisant mon ancienne méthode "manuelle".

Questions connexes