这是一个非常有趣的问题,所以让我设置场景.我在国家计算机博物馆工作,我们刚刚设法从1992年开始运行一台Cray Y-MP EL超级计算机,我们真的想看看它有多快!
我们认为最好的方法是编写一个简单的C程序来计算素数,并显示这需要多长时间,然后在快速的现代台式PC上运行程序并比较结果.
我们很快想出了这个代码来计算素数:
#include <stdio.h>
#include <time.h>
void main() {
clock_t start, end;
double runTime;
start = clock();
int i, num = 1, primes = 0;
while (num <= 1000) {
i = 2;
while (i <= num) {
if(num % i == 0)
break;
i++;
}
if (i == num)
primes++;
system("clear");
printf("%d prime numbers calculated\n",primes);
num++;
}
end = clock();
runTime = (end - start) / (double) CLOCKS_PER_SEC;
printf("This machine calculated all %d prime numbers under …Run Code Online (Sandbox Code Playgroud) 我想为其中一个较旧的Crays编写一个模拟器,但我遇到了一个绊脚石.我似乎无法找到任何实际的代码.(我认为哪种方式有道理,其中大部分都会被用于防御之类......)有谁知道我在哪里可以找到什么东西?二进制或来源,这一切都很好.我最喜欢的是COS的二进制文件.提前感谢.
我今天听说过Cray的新超级计算机--XK6--但我对瓶颈的位置感到有些困惑.它是在互连吗?配置有500,000个16核处理器的XK6可以实现与Toy Story 3实时兼容的图形保真度吗?通过"实时",我的意思是60fps,或每帧大约16.7毫秒.
正在开发一个基本的分析器,它将收集 Cray Chapel 中 GASNet 通信操作的开始和结束时间。唯一想到的想法是在 Chapel 通信函数中插入指令来获取函数调用时间。有没有什么方法可以在不弄乱语言源代码的情况下做到这一点?
我从FORTRAN 90代码调用C例程.一切正常,但我想知道为什么以及如何用较少的参数调用C例程,我应该编译器不要抱怨.编译器在这做什么?我正在使用Cray编译器.
test.c的
extern "C" void test_(double* x, double* y, double* z){
// do some work
}
Run Code Online (Sandbox Code Playgroud)
driver.F90
MODULE DRIVER
! declare arrays
DOUBLE PRECISION, DIMENSION(dim, dim), INTENT(IN) :: x
DOUBLE PRECISION, DIMENSION(dim, dim), INTENT(IN) :: y
! call C subroutine
CALL test(x, y)
END MODULE DRIVER
Run Code Online (Sandbox Code Playgroud) 我在群集上使用openmp。当我将MPI_INIT_THREAD与所需的线程支持级别作为MPI_THREAD_MULTIPLE一起使用时,所提供的支持级别仅为2。在此群集上,可以使用mpi,openmp等。
在我的带有mpich2的ubuntu笔记本电脑上,使用相同的代码,我确实获得了3级的支持。但是,我需要使用群集进行研究。我的程序是C ++。
如果我需要更改某些内容,请告诉我。谢谢。让我知道,如果我需要提供更多信息。
任何人都知道如何从Cray Fortran程序中获取当前主机名?我基本上想要UNIX的输出gethostname().在浏览Craydocs页面后,我发现PXF*函数似乎不包含这些信息.
Wirawan
由于我无法完全理解的原因,Cmake awlays在编译软件时选择了GNU编译器工具集.
我的环境看起来像这样:
which cc
/opt/cray/xt-asyncpe/4.9/bin/cc
which CC
/opt/cray/xt-asyncpe/4.9/bin/CC
echo $CC
/opt/cray/xt-asyncpe/4.9/bin/cc
echo $CXX
/opt/cray/xt-asyncpe/4.9/bin/CC
Run Code Online (Sandbox Code Playgroud)
但是当我使用cmake时,我得到了这个
Using existing /opt/cmake/2.8.4/bin/cmake
-- The C compiler identification is GNU
-- The CXX compiler identification is GNU
-- Check for working C compiler: /usr/bin/gcc
-- Check for working C compiler: /usr/bin/gcc -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- …Run Code Online (Sandbox Code Playgroud) 在OpenCV库中有一个
typedef const _InputArray& InputArray;
Run Code Online (Sandbox Code Playgroud)
在我们的代码中,我们有以下函数定义:
void wimshow(const String& winName, InputArray &img) {
Run Code Online (Sandbox Code Playgroud)
编译时会发生以下错误:
error: cannot declare reference to 'cv::InputArray {aka const class cv::_InputArray&}'
void wimshow(const String& winName, InputArray &img) {
奇怪的是,只有在Cray环境中使用GCC 4.8.1才会出现此错误.在具有GCC 4.8.1的普通Linux环境中进行编译可以正常工作.
乍一看,我会说对引用类型的引用无论如何都不是很有意义,但我很好奇什么可能导致不同的编译器行为!?