亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? parallel_loqo.c

?? 支持向量分類算法在linux操作系統下的是實現
?? C
?? 第 1 頁 / 共 3 頁
字號:
// D. Brugger, september 2006// parallel_loqo.c - parallel implementation of LOQO qp solver using PLAPACK.// $Id: parallel_loqo.c 7 2006-12-16 16:45:32Z beeblbrox $//// Copyright (C) 2006 Dominik Brugger//// This program is free software; you can redistribute it and/or modify// it under the terms of the GNU General Public License as published by// the Free Software Foundation; either version 2 of the License, or// (at your option) any later version.// // This program is distributed in the hope that it will be useful,// but WITHOUT ANY WARRANTY; without even the implied warranty of// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the// GNU General Public License for more details.//// You should have received a copy of the GNU General Public License along// with this program; if not, write to the Free Software Foundation, Inc.,// 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.#include <PLA.h>#include "PLA_missing_decls.h"#include "parallel_loqo.h"#define PREDICTOR 1#define CORRECTOR 2#define	max(A, B)	((A) > (B) ? (A) : (B))#define	ABS(A)  	((A) > 0 ? (A) : (-(A)))#define sqr(A)          ((A) * (A))#ifndef CheckError#define CheckError(n) if(n){printf("line %d, file %s, error %d\n",__LINE__,__FILE__,n); }#endif/* Auxiliary functions for setting and getting diagonal values of a    matrix.*/void PLA_Set_unit_diagonal(PLA_Obj *a){  PLA_Obj a_cur = NULL, a11 = NULL;   void *a11_buf;  int size, info;  int local_n, local_m;  info = PLA_Obj_view_all(*a, &a_cur); CheckError(info);  while(1)    {      info = PLA_Obj_global_length(a_cur, &size); CheckError(info);      if(size == 0) break;      info = PLA_Obj_split_4(a_cur, 1, 1, &a11, PLA_DUMMY, PLA_DUMMY, &a_cur);      CheckError(info);      info = PLA_Obj_local_length(a11, &local_m); CheckError(info);      info = PLA_Obj_local_width(a11, &local_n); CheckError(info);      if(local_n == 1 && local_m == 1)	{	  info = PLA_Obj_local_buffer(a11, (void **) &a11_buf); 	  CheckError(info);	  *((LOQOfloat*) a11_buf) = 1;	}    }}void print_matrix(PLA_Obj A){  void *local_buf = NULL;  int local_m, local_n, local_ldim;  int i,j;  PLA_Obj_local_length( A, &local_m );  PLA_Obj_local_width(  A, &local_n );  PLA_Obj_local_buffer( A, (void **) &local_buf );  PLA_Obj_local_ldim(   A, &local_ldim );  for (j=0; j<local_n; j++ )    {      for (i=0; i<local_m; i++ )	printf(" %g", ((LOQOfloat *) local_buf)[ j*local_ldim + i ]);      printf("\n");    }  fflush(stdout);}void print_vector(PLA_Obj v){  void *addr_buf = NULL;  int info;  int local_stride, local_n, i;  info = PLA_Obj_local_length(v, &local_n); CheckError(info);  info = PLA_Obj_local_stride(v, &local_stride); CheckError(info);    info = PLA_Obj_local_buffer(v, (void **) &addr_buf); CheckError(info);  for(i=0; i<local_n; ++i)    {      printf(" %g", ((LOQOfloat *) addr_buf)[local_stride*i]);    }  printf("\n"); fflush(stdout);}/* Assuming vectors have same length + layout */void PLA_Copy_vector(PLA_Obj from, PLA_Obj to){  PLA_Template templ;  MPI_Comm comm;  void *from_buf = NULL, *to_buf = NULL;  int info;  int local_stride, local_n, i;  info = PLA_Obj_template(from, &templ); CheckError(info);  info = PLA_Temp_comm_all(templ, &comm); CheckError(info);  info = PLA_Obj_local_length(from, &local_n); CheckError(info);  info = PLA_Obj_local_stride(from, &local_stride); CheckError(info);    info = PLA_Obj_local_buffer(from, (void **) &from_buf); CheckError(info);  info = PLA_Obj_local_buffer(to, (void **) &to_buf); CheckError(info);  for(i=0; i<local_n; ++i)    {      ((LOQOfloat*) to_buf)[i*local_stride] = ((LOQOfloat *) from_buf)[i*local_stride];    }  info = MPI_Barrier(comm); CheckError(info);}void PLA_Shift_diagonal(PLA_Obj *a, LOQOfloat shift){  PLA_Obj a_cur = NULL, a11 = NULL;   void *a11_buf;  int size, info;  int local_m, local_n;  info = PLA_Obj_view_all(*a, &a_cur);  while(1)    {      info = PLA_Obj_global_length(a_cur, &size);      if(size == 0) break;      info = PLA_Obj_split_4(a_cur, 1, 1, &a11, PLA_DUMMY, PLA_DUMMY, &a_cur);      info = PLA_Obj_local_length(a11, &local_m); CheckError(info);      info = PLA_Obj_local_width(a11, &local_n); CheckError(info);      if(local_m == 1 && local_n == 1)	{	  info = PLA_Obj_local_buffer(a11, (void **) &a11_buf);	  *((LOQOfloat*) a11_buf) += shift;	}    }}void PLA_Set_diagonal(PLA_Obj *a, PLA_Obj d){  PLA_Obj a_cur = NULL, d_cur = NULL, a11 = NULL, d1 = NULL;   void *a11_buf; void *d1_buf;  int size, info;  int local_m, local_n, local_m2;  info = PLA_Obj_view_all(*a, &a_cur);  info = PLA_Obj_view_all(d, &d_cur);  while(1)    {      info = PLA_Obj_global_length(a_cur, &size);      if(size == 0) break;      info = PLA_Obj_split_4(a_cur, 1, 1, &a11, PLA_DUMMY, PLA_DUMMY, &a_cur);      info = PLA_Obj_horz_split_2(d_cur, 1, &d1, &d_cur);      info = PLA_Obj_local_length(a11, &local_m); CheckError(info);      info = PLA_Obj_local_width(a11, &local_n); CheckError(info);      info = PLA_Obj_local_length(d1, &local_m2); CheckError(info);      if(local_m == 1 && local_n == 1 && local_m2 == 1)	{	  info = PLA_Obj_local_buffer(a11, (void **) &a11_buf);	  info = PLA_Obj_local_buffer(d1, (void **) &d1_buf);	  *((LOQOfloat*) a11_buf) = *((LOQOfloat*) d1_buf);	}    }}void PLA_Get_diagonal(PLA_Obj a, PLA_Obj *d){  PLA_Obj a_cur = NULL, d_cur = NULL, a11 = NULL, d1 = NULL;   void *a11_buf; void *d1_buf;  int size, info;  int local_m, local_n, local_m2;  info = PLA_Obj_view_all(a, &a_cur);  info = PLA_Obj_view_all(*d, &d_cur);  while(1)    {      info = PLA_Obj_global_length(a_cur, &size);      if(size == 0) break;      info = PLA_Obj_split_4(a_cur, 1, 1, &a11, PLA_DUMMY, PLA_DUMMY, &a_cur);      info = PLA_Obj_horz_split_2(d_cur, 1, &d1, &d_cur);      info = PLA_Obj_local_length(a11, &local_m); CheckError(info);      info = PLA_Obj_local_width(a11, &local_n); CheckError(info);      info = PLA_Obj_local_length(d1, &local_m2); CheckError(info);      if(local_m == 1 && local_n == 1 && local_m2 == 1)	{	  info = PLA_Obj_local_buffer(a11, (void **) &a11_buf);	  info = PLA_Obj_local_buffer(d1, (void **) &d1_buf);	  *((LOQOfloat*) d1_buf) = *((LOQOfloat*) a11_buf);	}    }}/* Cholesky decomposition with manteuffel shifting. */int PLA_Choldc(PLA_Obj a){  int shifted, i, idx;  int info = 0;  LOQOfloat rs;  LOQOfloat shift_amount = 0.0;  LOQOfloat one = 1.0;  LOQOfloat *array = NULL;  int error,parameters,sequential,r12;  do{    shifted = 0;    /* This is necessary as PLA_Chol, returns the index       of a non-positive pivot in info only if error checking       is disabled. */    info = PLA_Get_error_checking(&error, &parameters, &sequential, &r12);    info = PLA_Set_error_checking(FALSE, FALSE, FALSE, FALSE);    info = PLA_Chol(PLA_LOWER_TRIANGULAR, a);    if(info != 0){      /* We need a zero based index */      idx = info-1;      info = PLA_API_begin(); CheckError(info);      info = PLA_Obj_API_open(a); CheckError(info);      array = (LOQOfloat*) malloc((idx+1)*sizeof(LOQOfloat));      /* Set array to zero, because of axpy op. */      for(i=0; i<idx+1; ++i)	array[i] = 0;      info = PLA_API_axpy_global_to_matrix(1,idx+1,&one,a,idx,0,					   (void *)array,1); CheckError(info);      info = PLA_Obj_API_close(a); CheckError(info);      info = PLA_API_end(); CheckError(info);      /* Compute part of row sum. */      rs = 0.0;      for(i=0; i<idx; ++i) /* Add pivot value below */	rs += fabs(array[i]);      free(array);      info = PLA_API_begin(); CheckError(info);      info = PLA_Obj_API_open(a); CheckError(info);      array = (LOQOfloat*) malloc((idx+1)*sizeof(LOQOfloat));      /* Set array to zero, because of axpy op. */      for(i=0; i<idx+1; ++i)	array[i] = 0;      info = PLA_API_axpy_global_to_matrix(idx+1,1,&one,a,idx,idx,					   (void *)array,1); CheckError(info);      info = PLA_Obj_API_close(a); CheckError(info);      info = PLA_API_end(); CheckError(info);      /* Complete computation of row sum. */      for(i=0; i<idx+1; ++i)	rs += fabs(array[i]);      shift_amount = max(rs,1.1*shift_amount);      printf("using shift_amount = %g\n", shift_amount); fflush(stdout);      free(array);      PLA_Shift_diagonal(&a, shift_amount);      shifted = 1;    }    /* Restore error checking state. */    info = PLA_Set_error_checking(error, parameters, sequential, r12);  } while(shifted);  return info;}/* Solves reduced KKT system:   | -Q1 A^T | | delta_alpha | = | c1 |   | A   Q2  | | delta_h     |   | c2 |   Dimension of Q1 is n x n. Dimension of A is m x n.   Y1T and stores intermediary result computed during predictor step.   Dimension of Y1T is m x n.*/void parallel_solve_reduced(PLA_Obj Q1, PLA_Obj Q2, PLA_Obj A, PLA_Obj c1, PLA_Obj c2, 			    PLA_Obj *delta_alpha, PLA_Obj *delta_h, PLA_Obj *Y1T,			    int step){  int info;  PLA_Obj Y2 = NULL, minus_one = NULL, plus_one = NULL;  PLA_Template templ = NULL;  info = PLA_Obj_template(Q1, &templ); CheckError(info);  info = PLA_Mvector_create_conf_to(*delta_alpha, 1, &Y2); CheckError(info);  info = PLA_Mscalar_create(MPIfloat, PLA_ALL_ROWS, PLA_ALL_COLS, 1, 1, 			    templ, &plus_one); CheckError(info);  info = PLA_Obj_set_to_one(plus_one); CheckError(info);  info = PLA_Mscalar_create(MPIfloat, PLA_ALL_ROWS, PLA_ALL_COLS, 1, 1, 			    templ, &minus_one); CheckError(info);  info = PLA_Obj_set_to_minus_one(minus_one); CheckError(info);  if(step == PREDICTOR)    {      /* Compute cholesky decomposition: Q1 <- L1*L1^T         overwriting lower triangular part of Q1 *//*       info = PLA_Chol(PLA_LOWER_TRIANGULAR, Q1); CheckError(info); */      info = PLA_Choldc(Q1); CheckError(info);      /* Compute: Y1^T <- A * (L1^-1)^T.	 Dimension of Y1^T is m x n. */      info = PLA_Copy(A, *Y1T); CheckError(info);      info = PLA_Trsm(PLA_SIDE_RIGHT, PLA_LOWER_TRIANGULAR, PLA_TRANS,		      PLA_NONUNIT_DIAG, plus_one, Q1, *Y1T); CheckError(info);      /* Compute cholesky decomposition: (Q2 + Y1^T*Y1) <- L2*L2^T. */      info = PLA_Syrk(PLA_LOWER_TRIANGULAR, PLA_NO_TRANS, plus_one, *Y1T,		      plus_one, Q2); CheckError(info);/*       info = PLA_Chol(PLA_LOWER_TRIANGULAR, Q2); CheckError(info);  */      info = PLA_Choldc(Q2); CheckError(info);    }  /* Compute Y2 <- L1^-1*c1.      Dimension of Y2 is n x 1. */  PLA_Copy_vector(c1, Y2);  info = PLA_Trsv(PLA_LOWER_TRIANGULAR, PLA_NO_TRANS, PLA_NONUNIT_DIAG,		  Q1, Y2); CheckError(info);  /* Compute delta_h <- c2 + Y1^T*Y2. */  PLA_Copy_vector(c2, *delta_h);  info = PLA_Gemv(PLA_NO_TRANS, plus_one, *Y1T, Y2, plus_one, *delta_h);  CheckError(info);  /* Compute delta_h <- L2^-1*(c2 + Y1^T*Y2). */  info = PLA_Trsv(PLA_LOWER_TRIANGULAR, PLA_NO_TRANS, PLA_NONUNIT_DIAG,		  Q2, *delta_h); CheckError(info);  /* Finally compute delta_h <- L2^-T * (L2^-1*(c2 + Y1^T*Y2). */  info = PLA_Trsv(PLA_LOWER_TRIANGULAR, PLA_TRANS, PLA_NONUNIT_DIAG,		  Q2, *delta_h); CheckError(info);  /* Compute delta_alpha <- Y1*delta_h - Y2. */  PLA_Copy_vector(Y2, *delta_alpha);  info = PLA_Gemv(PLA_TRANS, plus_one, *Y1T, *delta_h, minus_one, 		  *delta_alpha); CheckError(info);  /* Compute delta_alpha <- L1^-T * (Y1*delta_h - Y2). */  info = PLA_Trsv(PLA_LOWER_TRIANGULAR, PLA_TRANS, PLA_NONUNIT_DIAG, Q1,		  *delta_alpha); CheckError(info);  info = PLA_Obj_free(&Y2); CheckError(info);  info = PLA_Obj_free(&plus_one); CheckError(info);  info = PLA_Obj_free(&minus_one); CheckError(info);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品久久久久久久久久久久久久久久久| 欧洲色大大久久| 不卡的av电影| 欧美一级高清片在线观看| 欧美国产日韩一二三区| 亚洲国产精品自拍| 成人激情动漫在线观看| 欧美日韩国产另类一区| 国产精品免费人成网站| 日韩vs国产vs欧美| 欧美做爰猛烈大尺度电影无法无天| 日韩欧美一二三四区| 亚洲黄色小视频| 成人毛片视频在线观看| 欧美xxxx老人做受| 五月天网站亚洲| 欧美日韩专区在线| 亚洲视频免费在线| 粉嫩av亚洲一区二区图片| 欧美一区二区观看视频| 亚洲午夜一区二区三区| 99久久99久久综合| 欧美国产亚洲另类动漫| 久久国产福利国产秒拍| 欧美一级午夜免费电影| 午夜一区二区三区视频| 欧美做爰猛烈大尺度电影无法无天| 国产精品久久久久久久久晋中 | 99久久免费视频.com| 精品国内片67194| 老司机精品视频线观看86| 91精品国产欧美一区二区成人 | 国产精品自在在线| 精品久久久久久久久久久久久久久久久 | 日韩欧美你懂的| 婷婷六月综合亚洲| 欧美美女bb生活片| 首页亚洲欧美制服丝腿| 欧美日本乱大交xxxxx| 午夜精品免费在线观看| 欧美乱妇20p| 日韩黄色片在线观看| 欧美一二三在线| 免费不卡在线观看| 久久综合九色综合97_久久久 | 欧美mv日韩mv国产| 国内精品不卡在线| 国产片一区二区三区| 成人久久久精品乱码一区二区三区| 久久精品一二三| 99久久精品免费精品国产| 亚洲欧洲日韩综合一区二区| 91免费视频网| 五月天欧美精品| 精品欧美一区二区三区精品久久| 麻豆国产欧美日韩综合精品二区| 精品播放一区二区| 99久久婷婷国产综合精品 | 国产欧美一区二区精品性| av一二三不卡影片| 亚洲成人av电影| 精品国产凹凸成av人网站| 成人一级片在线观看| 一区二区三区国产| 欧美一卡二卡在线观看| 国产福利精品一区| 亚洲精品伦理在线| 日韩免费高清视频| jizz一区二区| 首页亚洲欧美制服丝腿| 久久久久久久精| 欧美综合欧美视频| 国产一区二区女| 亚洲一区二区三区四区在线观看| 欧美一区二区三区免费大片 | 色噜噜久久综合| 久久疯狂做爰流白浆xx| 日韩理论片一区二区| 欧美理论片在线| 9久草视频在线视频精品| 午夜精品aaa| 国产精品欧美一级免费| 欧美高清视频不卡网| 成人福利视频在线看| 午夜激情一区二区| 国产精品国产三级国产三级人妇| 91精品婷婷国产综合久久性色| 国产成人夜色高潮福利影视| 视频在线在亚洲| 亚洲人成在线播放网站岛国| 欧美大白屁股肥臀xxxxxx| 色婷婷久久久亚洲一区二区三区| 国产一区二区影院| 五月天婷婷综合| 夜夜嗨av一区二区三区中文字幕 | 久久精品国产精品亚洲精品| 亚洲最新视频在线播放| 国产精品久久久久久久第一福利| 日韩欧美亚洲国产另类| 欧美色区777第一页| www.一区二区| 成人国产一区二区三区精品| 国产一区欧美日韩| 免费的成人av| 天堂va蜜桃一区二区三区漫画版| 亚洲女爱视频在线| 中文成人综合网| 欧美激情艳妇裸体舞| www国产成人免费观看视频 深夜成人网| 欧美精选一区二区| 在线观看成人小视频| 色一区在线观看| 91在线观看视频| 91论坛在线播放| av不卡一区二区三区| 成人动漫在线一区| 99久久精品免费看国产免费软件| 成人网页在线观看| 成人免费毛片嘿嘿连载视频| 国产成人av电影在线| 国产99精品国产| 成人av中文字幕| 99麻豆久久久国产精品免费 | 色欧美日韩亚洲| 日本韩国欧美一区| 欧美三级在线看| 欧美日韩国产乱码电影| 欧美卡1卡2卡| 日韩精品一区二区在线观看| 欧美成人bangbros| 久久久久久**毛片大全| 国产精品视频你懂的| ...av二区三区久久精品| 樱花草国产18久久久久| 偷拍日韩校园综合在线| 麻豆国产欧美日韩综合精品二区| 加勒比av一区二区| 国产精品一区三区| 91免费看片在线观看| 欧美系列亚洲系列| 日韩丝袜情趣美女图片| 日本一区二区三区视频视频| 亚洲视频在线观看三级| 性感美女久久精品| 国产精品一卡二卡| 色噜噜偷拍精品综合在线| 91精品国产免费| 久久久精品国产免费观看同学| 成人免费小视频| 五月婷婷欧美视频| 国产91在线看| 欧美日韩国产大片| 国产视频不卡一区| 亚洲国产美女搞黄色| 国产美女一区二区| 91九色02白丝porn| 精品国产一区二区亚洲人成毛片| 国产精品美日韩| 日本欧美一区二区| 99国产精品一区| 精品少妇一区二区三区在线视频| 国产精品久久久久久久裸模| 午夜精品久久久久久久| 成人av在线资源网站| 日韩一级黄色片| 亚洲女性喷水在线观看一区| 久久69国产一区二区蜜臀| 一本一道久久a久久精品综合蜜臀| 日韩一区二区中文字幕| 一区二区三区在线不卡| 国产精品中文字幕日韩精品| 欧美日韩久久久| 中文字幕一区二区三区视频 | 一区二区三区欧美久久| 激情另类小说区图片区视频区| 91成人在线观看喷潮| 国产欧美一二三区| 男女男精品视频网| 欧美色综合影院| 日韩美女视频一区二区| 国产成人亚洲精品狼色在线| 777午夜精品免费视频| 亚洲精品视频在线看| 成人免费毛片嘿嘿连载视频| 精品免费视频.| 麻豆精品新av中文字幕| 欧美三级日本三级少妇99| 亚洲欧洲色图综合| 成人动漫中文字幕| 国产精品免费人成网站| 国产不卡在线一区| 久久久久久久久伊人| 国产真实乱对白精彩久久| 91精品国产免费| 免费精品视频最新在线| 欧美一区二区在线免费观看| 亚洲成人免费看| 欧美日韩一二三| 亚洲成人一区二区| 欧美日韩成人一区|