2010-10-11 12 views
9

क्या कोई व्यक्ति cblas इंटरफ़ेस के लिए एक अच्छा संदर्भ या ट्यूटोरियल सुझा सकता है? Google पर कुछ भी नहीं आता है, मैंने पाया है कि सभी मैन पेज फोर्टन ब्लैस इंटरफेस के लिए हैं, और एमकेएल के साथ आए पीडीएफ ने सचमुच खोज करने में दस सेकंड का समय लिया और मददगार नहीं था।cblas इंटरफेस के लिए कोई अच्छा दस्तावेज?

विशेष रूप से, मुझे उत्सुकता है कि पंक्ति बनाम कॉलम-प्रमुख के लिए अतिरिक्त पैरामीटर क्यों है; ट्रांसपोज़ झंडे के साथ पहले से ही एक ही ऑपरेशन हासिल नहीं किया जा सकता है? ऐसा लगता है कि अतिरिक्त पैरामीटर केवल पहले ही एक त्रुटि-प्रवण इंटरफ़ेस में जटिलता जोड़ता है।

उत्तर

1

यह लेख एक सरल उदाहरण के साथ सी में cblas (और अन्य) का उपयोग करने के दिखाता है: http://www.seehuhn.de/pages/linear

मैं उद्धृत साइट नीचे जाने के मामले में नीचे प्रासंगिक हिस्सा।

BLAS

का उपयोग BLAS दिनचर्या हम एक सरल मैट्रिक्स वेक्टर गुणा करना चाहते हैं परीक्षण करने के लिए। फ़ाइल blas2-paper.ps.gz फ़ाइल को पढ़ना हम पाते हैं कि इसी फोरट्रान फ़ंक्शन का नाम डीजीईएमवी है। पाठ blas2-paper.ps.gz भी इस फ़ंक्शन के तर्कों का अर्थ बताता है। Cblas.ps.gz में हम पाते हैं कि संबंधित सी फ़ंक्शन नाम cblas_dgemv है।

#include <stdio.h> 
#include <cblas.h> 

double m[] = { 
    3, 1, 3, 
    1, 5, 9, 
    2, 6, 5 
}; 

double x[] = { 
    -1, -1, 1 
}; 

double y[] = { 
    0, 0, 0 
}; 

int 
main() 
{ 
    int i, j; 

    for (i=0; i<3; ++i) { 
    for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]); 
    putchar('\n'); 
    } 

    cblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1.0, m, 3, 
      x, 1, 0.0, y, 1); 

    for (i=0; i<3; ++i) printf("%5.1f\n", y[i]); 

    return 0; 
} 

इस कार्यक्रम हम निम्न आदेश का उपयोग संकलन करने के लिए: निम्न उदाहरण मैट्रिक्स वेक्टर उत्पाद

/ 3 1 3 \ /-1 \ 
| 1 5 9 | * | -1 |. 
\ 2 6 5/ \ 1/

उदाहरण फ़ाइल testblas.c गणना करने के लिए इस समारोह का उपयोग करता है।

सीसी testblas.c -ओ testblas -lblas -lm

इस परीक्षण कार्यक्रम के उत्पादन

3.0 1.0 3.0 
1.0 5.0 9.0 
2.0 6.0 5.0 
-1.0 
3.0 
-3.0 

जो दिखाता है कि सब कुछ ठीक काम किया है और यह है कि हम है गलती से ट्रांसपोज़ेड मैट्रिक्स का भी उपयोग नहीं किया।

संबंधित मुद्दे