1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106
|
/*
-- MAGMA (version 2.9.0) --
Univ. of Tennessee, Knoxville
Univ. of California, Berkeley
Univ. of Colorado, Denver
@date January 2025
@generated from testing/testing_zprint.cpp, normal z -> s, Wed Jan 22 14:40:24 2025
@author Mark Gates
*/
// includes, system
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>
// includes, project
#include "magma_v2.h"
#include "magma_lapack.h"
#include "testings.h"
#if defined(__unix__) || defined(__APPLE__)
#define REDIRECT
#include <unistd.h>
#endif
/* ////////////////////////////////////////////////////////////////////////////
-- Testing sprint
*/
int main( int argc, char** argv)
{
TESTING_CHECK( magma_init() );
magma_print_environment();
float *hA;
magmaFloat_ptr dA;
//magma_int_t ione = 1;
//magma_int_t ISEED[4] = {0,0,0,1};
magma_int_t M, N, lda, ldda; //size
int status = 0;
magma_opts opts;
opts.parse_opts( argc, argv );
#ifdef REDIRECT
// dup/dup2 aren't available on Windows to restore stdout
// save stdout and redirect to file
const char* fname = "testing_sprint.out";
printf( "redirecting output to %s\n", fname );
fflush( stdout );
int stdout_save = dup( fileno(stdout) );
FILE* f = freopen( fname, "w", stdout );
TESTING_CHECK( f == NULL );
#endif
for( int itest = 0; itest < opts.ntest; ++itest ) {
for( int iter = 0; iter < opts.niter; ++iter ) {
M = opts.msize[itest];
N = opts.nsize[itest];
lda = M;
ldda = magma_roundup( M, opts.align ); // multiple of 32 by default
//size = lda*N;
/* Allocate host memory for the matrix */
TESTING_CHECK( magma_smalloc_cpu( &hA, lda *N ));
TESTING_CHECK( magma_smalloc( &dA, ldda*N ));
//lapackf77_slarnv( &ione, ISEED, &size, hA );
for( int j = 0; j < N; ++j ) {
for( int i = 0; i < M; ++i ) {
hA[i + j*lda] = MAGMA_S_MAKE( i + j*0.01, 0. );
}
}
magma_ssetmatrix( M, N, hA, lda, dA, ldda, opts.queue );
printf( "A=" );
magma_sprint( M, N, hA, lda );
printf( "dA=" );
magma_sprint_gpu( M, N, dA, ldda, opts.queue );
magma_free_cpu( hA );
magma_free( dA );
}
}
#ifdef REDIRECT
// restore stdout
fflush( stdout );
dup2( stdout_save, fileno(stdout) );
close( stdout_save );
// compare output file to reference
printf( "diff testing_sprint.ref testing_sprint.out\n" );
fflush( stdout );
int err = system( "diff testing_sprint.ref testing_sprint.out" );
bool okay = (err == 0);
status += ! okay;
printf( "diff %s\n", (okay ? "ok" : "failed") );
#endif
opts.cleanup();
TESTING_CHECK( magma_finalize() );
return status;
}
|