问题标签 [cray]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
cc - “mcmodel”的 Craycc 等效项
我正在尝试在 craycc 下编译 C 代码。编译失败并出现错误“relocation truncated to fit: R_X86_64_32”。在 Intel 或 GNU 下,我可以使用“mcmodel”标志克服这个错误。但是 craycc 不识别这个标志。有谁知道 craycc 下的等效标志/方法?我查看了 craycc 手册页,但找不到有关此问题的任何讨论。
cmake - 为什么 CMake find_package 忽略链接器标志?
我正在开发一个 Cray 系统,该系统需要在找到动态库之前传递“-dynamic”。就我而言,我正在尝试与 libtiff 链接。该命令cc main.cpp -ltiff
失败,文件未找到但cc main.cpp -dynamic -ltiff
有效。我相信这个文件未找到的行为会导致 CMake 的find_package
.
当我使用 CMake(版本 3.5.2)并-DCMAKE_EXE_LINKER_FLAGS:STRING="-dynamic"
从命令行传递时find_package(TIFF)
。但是当我像这样在 CMakeLists.txt 中设置它时:
它找不到libtiff。但如果我尝试:
它第一次失败,但将“-dynamic”放入缓存中,然后在第二次运行时工作。如果我手动设置TIFF_LIBRARY_RELEASE
为指向 .so 那么find_package
也可以工作(通过填写其余的变量)。
在不将其作为参数传递的情况下执行此操作的正确方法是什么?
fortran - Cray 编译器要求一个标志,然后不识别它
我正在尝试用crayftn
.
我收到一条错误消息
所以它想要国旗--no-relax
?好的,我可以做到。所以我重新链接到那个标志,然后它告诉我
所以它要求“ --no-relax
”,但它不明白。有人知道解决这个难题的方法吗?还是首先解决根本问题的另一种方法?
c - C 编译器使用 Cray 上 Fortran 模块中定义的变量
我想在 ac 程序中使用 f90 模块 (abc) 中定义的整数变量(比如说 xyz)。我发现使用 gnu 编译器可以这样做:
但我找不到 Cray 编译器的相应语法。
更新
在友好提醒阅读手册和其他评论之后,我能够让它工作。这是示例 FORTRAN 模块:
和C代码:
编译
mpi - 使用 arun 放置进程——每个节点需要一个进程
我需要在 Cray 系统上运行 MPI 代码aprun
。由于我不会进入的原因,我被要求运行它,以便没有节点有多个进程。我一直对aprun
手册页感到困惑,我不确定我是否已经弄清楚了。如果我只有两个进程,这个命令会确保它们在不同的节点上运行吗?(假设一个节点上有 32 个核心。)
io - 使用 Cray 编译器可以直接 I/O 吗?
我正在尝试编译使用直接 I/O 的 C 代码。有一行使用 O_DIRECT 标志:
英特尔和 GNU 很好地理解了这一点并进行了编译。Cray 无法通过 O_DIRECT。它不认为它被设置在任何地方。Cray 编译器是否有这个变量的替代方案?或者它可以不做直接 I/O 吗?
fortran - Fortran 代码在 Intel 和 GNU 下执行,在 Cray 下失败
我使这个程序尽可能简单:
它在 Intel 或 GNU 构建下运行良好:
但是 Cray Fortran,由于某种原因无法处理分配:
有人知道为什么吗?
(注意:complex(8)
类型iobuff
不是问题;无论我定义什么类型,代码都会失败并出现相同的错误iobuff
。请注意,各种类型的变量来自我真正想要理解的更大的代码。)
jobs - 在 CRAY 的单个节点中运行多个作业
在 cray 中,我可以使用 qsub 提交作业
如果我请求多个节点,那么我可以提交多个作业,并且它们可以相互并行运行
现在,我的问题是我executable
在 10 个 openMP 线程后无法扩展,即使用 10 以上的任何数字都不会提高性能,但我可以在单个节点中使用多达 40 个 CPU。基本上,这是一种资源浪费。所以,我想知道我是否可以在单个节点中提交多个作业(最多 4 个),每个作业都有 10 个 OpenMP 线程。我为单个节点尝试了上述方法,但是aprun
当一个节点在同一个节点中运行时不会启动下一个作业,因此它是按顺序运行的。那么,是否可以使用 qsub 在 CARY 中的单个节点中提交多个作业。
pbs_version = PBSPro_13.0.409.180551
fortran - Fortran 可执行文件不喜欢整数的命令行输入
这段代码在 Intel 和 GNU 下编译和运行得很好:
输出:
但克雷一点也不喜欢:
现在,问题来了:如果我用简单的 n 设置替换命令行输入,一切都很好:
现在我明白了
更新:尝试从常规文本文件中读取:
克雷也不喜欢那样。同样的问题。
因此,如果n
来自命令行,Cray 可以读取n
. 它认为n
是一个整数,甚至可以写出它的值。但它不能n
在allocate
语句中使用。(顺便说一句,我对语句的格式进行了多种尝试,read
但无济于事。)这是怎么回事?
针对一些评论的更新:
首先,我有可能发现了一个错误吗?我把它移到另一个 Cray 平台上,它运行得很好。两台机器上的 Cray 版本都是 12.0.3。
其次,我的构建非常简单,只是
ftn simplarray.F90
我正在登录节点上构建和编译,这些节点是 Intel Broadwells。