当前位置: 首页 > wzjs >正文

给银行做网站wordpress站标签打开空白

给银行做网站,wordpress站标签打开空白,网络推广的优化服务,wordpress 2017主题在AMGX中使用MPI加载自定义分布式矩阵和向量 AMGX是一个用于大规模并行代数多重网格求解的GPU加速库,支持MPI多线程环境。以下是加载用户自定义分布式矩阵和向量的方法: 1. 矩阵和向量分布的基本概念 在MPI环境中,AMGX使用行分布方式&…

在AMGX中使用MPI加载自定义分布式矩阵和向量

AMGX是一个用于大规模并行代数多重网格求解的GPU加速库,支持MPI多线程环境。以下是加载用户自定义分布式矩阵和向量的方法:

1. 矩阵和向量分布的基本概念

在MPI环境中,AMGX使用行分布方式:

  • 矩阵被划分为行块,每个MPI进程处理一部分行
  • 向量也相应地被划分为与矩阵行分布匹配的部分

2. 加载自定义矩阵

方法一:使用AMGX内置读取器

#include <amgx_c.h>// 初始化AMGX
AMGX_initialize();
AMGX_initialize_plugins();// 创建配置
AMGX_config_handle cfg;
AMGX_config_create(&cfg, "config_version=2, solver=mixed, config_relaxation=1");// 创建资源
AMGX_resources_handle rsrc;
AMGX_resources_create(&rsrc, cfg, MPI_COMM_WORLD, AMGX_GPU_MODE);// 创建矩阵和向量
AMGX_matrix_handle A;
AMGX_vector_handle b, x;
AMGX_matrix_create(&A, rsrc, AMGX_mode_dDDI);
AMGX_vector_create(&b, rsrc, AMGX_mode_dDDI);
AMGX_vector_create(&x, rsrc, AMGX_mode_dDDI);// 从分布式文件加载矩阵
AMGX_read_distributed(A, b, x, "matrix.mtx", "rhs.vec", "sol.vec");

方法二:手动加载自定义数据

// 假设你已经有了本地矩阵数据
int n_local_rows = ...;  // 本地行数
int n_global_rows = ...; // 全局行数
int *row_ptrs = ...;     // CSR行指针
int *col_indices = ...;   // CSR列索引
double *values = ...;     // 矩阵值// 上传矩阵数据
AMGX_matrix_upload_all(A, n_global_rows, n_local_rows, row_ptrs[n_local_rows],row_ptrs, col_indices, values, NULL);// 加载向量数据
double *rhs_values = ...; // 右侧向量值
double *sol_values = ...; // 初始解向量值
AMGX_vector_upload(b, n_local_rows, 1, rhs_values);
AMGX_vector_upload(x, n_local_rows, 1, sol_values);

3. 分布式矩阵加载注意事项

  1. 数据分布一致性

    • 每个进程必须知道自己的行范围
    • 列索引可以是全局的,AMGX会自动处理
  2. 通信模式设置

    AMGX_config_create(&cfg, "config_version=2, communicator=MPI");
    
  3. 边界处理

    • 确保重叠区域的数据正确同步
    • 可能需要设置halo交换模式

4. 完整示例

#include <mpi.h>
#include <amgx_c.h>int main(int argc, char **argv) {MPI_Init(&argc, &argv);// 初始化AMGXAMGX_initialize();AMGX_initialize_plugins();AMGX_register_print_callback(&print_callback);AMGX_install_signal_handler();// 创建配置AMGX_config_handle cfg;AMGX_config_create(&cfg, "config_version=2, solver=mixed, communicator=MPI");// 创建资源AMGX_resources_handle rsrc;AMGX_resources_create(&rsrc, cfg, MPI_COMM_WORLD, AMGX_GPU_MODE);// 创建矩阵和向量AMGX_matrix_handle A;AMGX_vector_handle b, x;AMGX_matrix_create(&A, rsrc, AMGX_mode_dDDI);AMGX_vector_create(&b, rsrc, AMGX_mode_dDDI);AMGX_vector_create(&x, rsrc, AMGX_mode_dDDI);// 加载自定义数据load_custom_distributed_data(A, b, x);// 创建求解器AMGX_solver_handle solver;AMGX_solver_create(&solver, rsrc, AMGX_mode_dDDI, cfg);// 设置矩阵并求解AMGX_solver_setup(solver, A);AMGX_solver_solve(solver, b, x);// 清理资源AMGX_solver_destroy(solver);AMGX_matrix_destroy(A);AMGX_vector_destroy(b);AMGX_vector_destroy(x);AMGX_resources_destroy(rsrc);AMGX_config_destroy(cfg);AMGX_finalize_plugins();AMGX_finalize();MPI_Finalize();return 0;
}void load_custom_distributed_data(AMGX_matrix_handle A, AMGX_vector_handle b, AMGX_vector_handle x) {// 获取MPI信息int rank, size;MPI_Comm_rank(MPI_COMM_WORLD, &rank);MPI_Comm_size(MPI_COMM_WORLD, &size);// 假设全局矩阵大小为1000x1000int global_rows = 1000;int local_rows = global_rows / size;int remainder = global_rows % size;// 调整最后一个进程的行数if (rank == size - 1) local_rows += remainder;// 生成CSR格式的本地矩阵数据int *row_ptr = (int *)malloc((local_rows + 1) * sizeof(int));// ... 填充row_ptr和col_indices、values ...// 上传矩阵AMGX_matrix_upload_all(A, global_rows, local_rows, row_ptr[local_rows],row_ptr, col_indices, values, NULL);// 生成并上传向量double *rhs = (double *)malloc(local_rows * sizeof(double));double *sol = (double *)malloc(local_rows * sizeof(double));// ... 填充rhs和sol ...AMGX_vector_upload(b, local_rows, 1, rhs);AMGX_vector_upload(x, local_rows, 1, sol);free(row_ptr);free(rhs);free(sol);
}

5. 重要提示

  1. 确保所有MPI进程同时调用AMGX函数
  2. 矩阵和向量的分布必须一致
  3. 使用AMGX_matrix_upload_all而不是AMGX_matrix_upload来上传分布式矩阵
  4. 检查AMGX错误代码以确保操作成功

更多详细信息请参考AMGX官方文档中的MPI支持部分。


文章转载自:

http://N5w3JH9i.nLbhj.cn
http://JMKY9Dt3.nLbhj.cn
http://ziB33iUC.nLbhj.cn
http://ZGVFAPUK.nLbhj.cn
http://L19BMySl.nLbhj.cn
http://2ybqYXBk.nLbhj.cn
http://RvKLFg0k.nLbhj.cn
http://CzzasFxy.nLbhj.cn
http://WSpUNoZW.nLbhj.cn
http://w38XwVQL.nLbhj.cn
http://W6fqsvkX.nLbhj.cn
http://x6iOT9dA.nLbhj.cn
http://XVROn5IA.nLbhj.cn
http://so2w6OMW.nLbhj.cn
http://09d12ZD2.nLbhj.cn
http://fiIo0zgJ.nLbhj.cn
http://gSc34G5T.nLbhj.cn
http://WAtzkZzA.nLbhj.cn
http://5VLtsOsY.nLbhj.cn
http://icvQJw8H.nLbhj.cn
http://YEd7SlkI.nLbhj.cn
http://eEZLJUuI.nLbhj.cn
http://JVbwo2V7.nLbhj.cn
http://RDFSgeiE.nLbhj.cn
http://TenCgYrl.nLbhj.cn
http://Ux9vCsKo.nLbhj.cn
http://UzgFjr63.nLbhj.cn
http://vY3hUgHk.nLbhj.cn
http://0tKgYcln.nLbhj.cn
http://pCi4OEOx.nLbhj.cn
http://www.dtcms.com/wzjs/686298.html

相关文章:

  • 广州网站优化运营wordpress mip站
  • 商城微信网站开发福州外文网站建设
  • 公司网站建设南宁吴忠网站建设哪家好
  • 做网站的价位小兽wordpress官网
  • 长沙找人做企业网站文案台州市椒江建设工程机械厂网站
  • 网站建设市场分析报告企业门户网站模板html
  • 阜阳手机端网站建设旅游社网站建设规划书
  • 网站建设的语言与工具江苏平台网站建设价位
  • 免费网站百度收录位置图片在线制作
  • 网站开发 定制 合同 模板苏州seo排名优化费用
  • 做网站的背景像素google adsense wordpress 插件
  • 郑州公司建网站域名如何做网站
  • 网站建设宽度一般都是多少庆阳网站设计公司
  • 石家庄网站建设推广公司网页qq登陆保护功能怎么关闭
  • 网站描本链接怎么做怎样做商城网站的推广
  • c语言也能干大事网站开发seo销售话术开场白
  • 长春网站建设营销q479185700刷屏天津滨海新区落户政策
  • 石家庄外贸公司网站设计公司安全优化大师下载
  • 黑龙江省建设厅网站首页做网站运作国珍
  • 从化免费网站建设个人公众号怎么运营
  • 网站宣传标语系统开发背景
  • 做网站用属于前端学校网站建设关键技术
  • 用wordpress建网站wordpress 手机app
  • 小型网站建设公司价格低设计图片素材网站有哪些
  • 手机壳定制网站制作商河 网站建设
  • 淡水网络公司做网站wordpress找不到分类页面
  • 山东营销网站建设联系方式cvm可以做网站服务器吗
  • 济南网站假设推广wordpress 插件 缓存
  • 十堰建设银行官方网站做ps兼职的网站有哪些
  • 网站建设业务提成北京住建网站