static vsip_mview_f* meye_f(vsip_length n) { vsip_vview_f *d = (vsip_vview_f*) NULL; vsip_mview_f *retval = (vsip_mview_f*)NULL; retval = vsip_mcreate_f(n,n,VSIP_ROW,VSIP_MEM_NONE); if(retval) d = vsip_mdiagview_f(retval,0); if(d){ vsip_mfill_f(0.0,retval); vsip_vfill_f(1.0,d); vsip_vdestroy_f(d); } else { vsip_malldestroy_f(retval); retval = (vsip_mview_f*) NULL; } return retval; }
int main() { vsip_init((void*)0);{ vsip_mview_f *A = vsip_mcreate_f(NN,NN,VSIP_ROW,VSIP_MEM_NONE); vsip_mview_f *B = vsip_mcreate_f(NN,2,VSIP_COL,VSIP_MEM_NONE); struct tms t_buf; clock_t tclicks; vsip_lu_f *lud = vsip_lud_create_f(NN); printf("data fill in times 1 %lu\n",times(&t_buf)); { int i; vsip_vview_f *r = vsip_mrowview_f(A,0); vsip_offset o = vsip_vgetoffset_f(r); vsip_stride s = vsip_mgetcolstride_f(A); for(i=0; i<NN; i++){ vsip_vputoffset_f(r,o); vsip_vramp_f(i,1,r); o += s; } vsip_vdestroy_f(r); } { vsip_vview_f *r = vsip_mdiagview_f(A,0); vsip_vfill_f(0,r); vsip_vdestroy_f(r); } { vsip_vview_f *r = vsip_mcolview_f(B,0); vsip_vramp_f(1,.01,r); vsip_vdestroy_f(r); r = vsip_mcolview_f(B,1); vsip_vramp_f(2,.01,r); vsip_vdestroy_f(r); } /* printf("A = "); VU_mprintm_f("7.4",A); */ /* printf("B = "); VU_mprintm_f("7.4",B); */ printf("lud in times 2 %lu\n",(tclicks = times(&t_buf))); vsip_lud_f(lud,A); printf("lud out times 3 %lu\n",times(&t_buf) - tclicks); /* printf("Adec = "); VU_mprintm_f("7.4",A); */ printf("lusol in times 4 %lu\n",(tclicks = times(&t_buf))); vsip_lusol_f(lud,VSIP_MAT_NTRANS,B); printf("lusol out times 5 %lu\n",times(&t_buf) - tclicks); /* printf("B = "); VU_mprintm_f("7.4",B); */ } vsip_finalize((void*)0);return 0; }