簡體   English   中英

magma_dpotrf_gpu給出分段錯誤

[英]magma_dpotrf_gpu gives segmentation fault

我有一個cblas和lapack代碼,試圖將它們轉換為岩漿代碼,以利用GPU。 這是我的CPU代碼,可以正常工作:

cblas_dsyrk(CblasColMajor,CblasUpper,CblasTrans,n,m,1.0,A2,m, 0.0,C_theta,n);
cblas_dsyrk(CblasColMajor,CblasUpper,CblasTrans,n,m,1.0,A1,m,-1.0,C_theta,n);
clapack_dpotrf(CblasColMajor,CblasUpper,n,C_theta,n);

現在,對於岩漿GPU版本,我這樣做:

magma_dmalloc(&d_A1, m*n);
magma_dmalloc(&d_A2, m*n);
magma_dmalloc(&d_C_theta, n*n);

magma_dsetmatrix(m ,n, A1, m, d_A1, m, queue);
magma_dsetmatrix(m ,n, A2, m, d_A2, m, queue);
magma_dsetmatrix(n ,n, C_theta, n, d_C_theta, n, queue);

magma_dsyrk(MagmaUpper, MagmaTrans, n, m, 1.0, d_A2, m, 0.0, d_C_theta, n, queue);
magma_dsyrk(MagmaUpper, MagmaTrans, n, m, 1.0, d_A1, m, -1.0, d_C_theta, n, queue);
magma_int_t *info_potrf; 
magma_dpotrf_gpu(MagmaUpper, n, d_C_theta, n, info_potrf);

由於某種原因,最后一行給出了細分錯誤。 我在這里做錯了什么? 這一切似乎都是正確的。

該解決方案由@RobertCrovella回答。

為了為info_potrf變量分配內存,需要刪除星號,在第二行中,需要添加&以使用變量地址。 這是正確的方法:

magma_int_t info_potrf; 
magma_dpotrf_gpu(MagmaUpper, n, d_C_theta, n, &info_potrf);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM