看来我的numpy库正在使用4个线程,而设置OMP_NUM_THREADS=1并没有阻止它.
numpy.show_config() 给我这些结果:
atlas_threads_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = f77
include_dirs = ['/usr/include']
blas_opt_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = c
include_dirs = ['/usr/include']
atlas_blas_threads_info:
libraries = ['ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')]
language = c
include_dirs = ['/usr/include']
openblas_info:
NOT AVAILABLE
lapack_opt_info:
libraries = ['lapack', 'ptf77blas', 'ptcblas', 'atlas']
library_dirs = ['/usr/lib64/atlas']
define_macros = [('ATLAS_INFO', '"\\"3.8.4\\""')] …Run Code Online (Sandbox Code Playgroud) 我想将我的函数分成不同的文件,就像我使用c ++(驱动程序文件和不同类别的函数的文件,我最终在编译时链接在一起).
假设我想创建一个简单的"驱动"文件来启动主程序和一个"函数"文件,其中包含由驱动程序调用的简单函数和"函数"文件中的其他函数.
我该怎么做?由于未编译python,如何将文件链接在一起?
我试图在gfortran中使用四倍精度,但似乎real*16不起作用.经过一些钓鱼后,我发现它可以实现为real*10.是real*10 实际上四倍精度?
如何测试代码的精度?是否有标准的简单算法来测试精度?例如,当我想弄清楚计算机零是什么时,我继续除以2.0直到达到0.0.跟踪值让我知道计算机何时'认为'我的非零数字为零 - 给我计算机零.
有没有一种很好的方法可以用我所描述的算法来计算精度?
显然,在我们的Python/2.7.2环境中加载了CrossMap一个包,其中包含一个子包作为子包tabix.当我启动这个版本的python时import tabix,tabix显示:/hpcf/apps/python/install/2.7.2/lib/python2.7/site-packages/CrossMap-0.1.6-py2.7-linux-x86_64.egg/tabix/__init__.pyc表明它正在加载CrossMap.现在,即使我pip install pytabix(tabix.so在site-packages目录中创建了一个文件),它仍然会遇到CrossMap版本.我甚至尝试过安装pytabixlocalling pip install --user pytabix,但它仍然加载了CrossMap版本.
我怎么能点import tabix到tabix.so的文件,而不是分装CrossMap?
更新:即使在转移CrossMap到'old_versions'目录后,当我尝试加载时tabix,它仍会遇到另一个包tabix作为子包.当我import tabix然后运行时tabix,我得到了一个pysam包,RSeQC-2.6.1即使我pytabix在主site-packages目录中拥有它自己的包.pysam包装也会发生同样的事情.这里有什么想法?
我有一些简单的java代码,我写的人工使用大量的RAM,我发现当我得到相关的时间,当我使用这些标志时:
1029.59 seconds .... -Xmx8g -Xms256m
696.44 seconds ..... -XX:ParallelGCThreads=1 -Xmx8g -Xms256m
247.27 seconds ..... -XX:ParallelGCThreads=1 -XX:+UseConcMarkSweepGC -Xmx8g -Xms256m
Run Code Online (Sandbox Code Playgroud)
现在,我理解为什么-XX:+UseConcMarkSweepGC提高性能,但为什么在限制单线程GC时我会获得加速?这是我写得不好的java代码的工件,还是适用于正确优化的java的东西?
这是我的代码:
import java.io.*;
class xdriver {
static int N = 100;
static double pi = 3.141592653589793;
static double one = 1.0;
static double two = 2.0;
public static void main(String[] args) {
//System.out.println("Program has started successfully\n");
if( args.length == 1) {
// assume that args[0] is an integer
N = Integer.parseInt(args[0]);
}
// maybe we can get user …Run Code Online (Sandbox Code Playgroud) 我在网上发现了一些代码,它会在屏幕上移动一个框,然后在框到达屏幕末尾后重置它.
这是代码:
void display(void) {
int sign = 1;
if (lastFrameTime == 0) {
/*
* sets lastFrameTime to be the number of milliseconds since
* Init() was called;
*/
lastFrameTime = glutGet(GLUT_ELAPSED_TIME);
}
int now = glutGet(GLUT_ELAPSED_TIME);
int elapsedMilliseconds = now - lastFrameTime;
float elapsedTime = float(elapsedMilliseconds) / 1000.0f;
lastFrameTime = now;
int windowWidth = glutGet(GLUT_WINDOW_WIDTH);
if (boxX > windowWidth) {
boxX -= windowWidth;
}
boxX += (sign)*256.0f * elapsedTime;
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glPushMatrix();
//creates a new matrix at …Run Code Online (Sandbox Code Playgroud) 我正在编写matlab代码来执行3维积分:
function [ fint ] = int3d_ser(R0, Rf, N)
Nr = N;
Nt = round(pi*N);
Np = round(2*pi*N);
rs = linspace(R0, Rf, Nr);
ts = linspace(0, pi, Nt);
ps = linspace(0, 2*pi, Np);
dr = rs(2)-rs(1);
dt = ts(2)-ts(1);
dp = ps(2)-ps(1);
C = 1/((4/3)*pi);
fint = 0.0;
for ir = 2:Nr
r = rs(ir);
r2dr = r*r*dr;
for it = 1:Nt-1
t = ts(it);
sintdt = sin(t)*dt;
for ip = 1:Np-1
p = ps(ip);
fint = fint + C*r2dr*sintdt*dp; …Run Code Online (Sandbox Code Playgroud) 我正在编写一些代码,我有一个占位符matmul,似乎工作得很好,但我想使用一个LAPACK dgemm实现.我现在只使用gfortran并获得非常好的速度matmul,但我想知道我是否可以变得更好.
目前的电话是:
C = transpose(matmul( transpose(A), B))
Run Code Online (Sandbox Code Playgroud)
where A,B和C,是非正方形的double precision矩阵.我可以轻松地为dgemm当前的gfortran实现编写一个包装器LAPACK,但我喜欢我可以将所有这些作为一个函数(而不是担心call一个surbroutine并且必须处理transpose).
我想知道如果我编译ifort和包含MKL,这将matmul神奇地改变MKL dgemm为我没有包装的功能?
我有浮点变量"lmin"和"lmax".我希望只显示4位有效数字.我目前正在使用我在网上找到的表格......
string textout;
stringstream ss;
ss << lmin;
textout = ss.str();
output(-0.5, -0.875, textout);
ss.str("");
ss << lmax;
textout = ss.str();
output(0.2, -0.875, textout);
Run Code Online (Sandbox Code Playgroud)
其中"输出"只是我编写的一个函数,用于解析字符串并将其打印到屏幕上.重要的一点是,我如何只打印一个ROUNDED版本的lmin和lmax到ss?
假设我有一个定义一些基本常量的模块,例如
integer, parameter :: i8 = selected_int_kind(8)
Run Code Online (Sandbox Code Playgroud)
如果我在我的主程序中包含这个并且我还包含一个执行其他操作的模块(称为此模块functions)但functions也包括uses constants,那么我constants在主程序中主要包括两次吗?
如果是这样,这是不是很糟糕?在程序中多次包含模块会不会很危险?