如何使Berkeley UPC具有复杂数字



我在笔记本电脑上编译带有复数的UPC代码时遇到了一些问题(MAC OS-X;代码最终将在Linux Centos机器上运行(。我试图在代码中使用FFTW,但这返回了很多错误。

#include </Users/avinash/Programs/fftwinstall/include/fftw3.h>
Error during remote HTTP translation:
upcc: error during UPC-to-C translation (sgiupc stage): 
In file included from code1xc.upc:9:
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: warning: type defaults to `int' in declaration of `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: warning: data definition has no type or storage class
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
/Users/avinash/Programs/fftwinstall/include/fftw3.h:373: syntax error before `fftwq_complex'
......

然后我进行了一些Google搜索,然后遇到了此链接 - https://hpcrdm.lbl.gov/pipermail/upc-users/2013-december/001758.html

显然,BUPC在某些平台上无法使用复杂的数字-http://upc.lbl.gov/docs/user/index.shtml

Programs which #include complex.h, and/or tgmath.h do not work on
    certain platforms.

因此尝试使用在线查询中提到的复杂h编译此简单代码,甚至返回错误。

#include <upc.h>
#include <complex.h>
int main()
{
  return 0;
}
Error during remote HTTP translation:
upcc: error during UPC-to-C translation (sgiupc stage): 
In file included from code1xc.upc:7:
/usr/include/complex.h:45: syntax error before `cacosf'
/usr/include/complex.h:46: syntax error before `cacos'
/usr/include/complex.h:47: syntax error before `cacosl'
/usr/include/complex.h:49: syntax error before `casinf'
/usr/include/complex.h:50: syntax error before `casin'
....

那么,我到底在做什么错?感谢任何帮助。这仅对于伯克利UPC还是GNU UPC也是一个问题吗?我的项目需要共享的复杂阵列。我认为必须有一种方法,因为在线讲座中多次提到了FFT。感谢您的帮助!

便携式UPC程序不依赖C99的复合体。H标头,因为并非所有编译器/系统都普遍支持它。相反,他们经常将自己的复杂类型定义为两元素结构。

例如,请参见此简单的FT实现

另一种常见方法是根据应用程序的需求以及任何客户端数学库期望的数据布局保留单独的真实和虚构组件。

但是,如果您需要复杂三角法或使用专门依赖于C99复合物的库,则这些都不可能有用。假设您有一个支持复杂的C编译器,则可以使用它来编译链接到UPC程序的串行模块。另外,您可以尝试使用Clang UPC前端,我相信它支持某些平台上的C99复合物。

相关内容

  • 没有找到相关文章

最新更新