我有一个本地版本的Python 3.4.1,我可以运行python -m pip install,但我无法找到要运行的pip二进制文件pip install.这两者有什么区别?
我试图从CUDA例子中理解integrate_functorin particles_kernel.cu:
struct integrate_functor
{
float deltaTime;
//constructor for functor
//...
template <typename Tuple>
__device__
void operator()(Tuple t)
{
volatile float4 posData = thrust::get<2>(t);
volatile float4 velData = thrust::get<3>(t);
float3 pos = make_float3(posData.x, posData.y, posData.z);
float3 vel = make_float3(velData.x, velData.y, velData.z);
// update position and velocity
// ...
// store new position and velocity
thrust::get<0>(t) = make_float4(pos, posData.w);
thrust::get<1>(t) = make_float4(vel, velData.w);
}
};
Run Code Online (Sandbox Code Playgroud)
我们打电话make_float4(pos, age)但是make_float4被定义vector_functions.h为
static __inline__ __host__ __device__ float4 …Run Code Online (Sandbox Code Playgroud) 我在两台服务器上工作,在一台服务器上.pydistutils.cfg看起来像:
install_scripts=~/opt_old/bin
install_data=~/opt_old/share
install_lib=~/usr/lib/python2.6/site-packages
Run Code Online (Sandbox Code Playgroud)
我认为,这会在本地版本的python上使用pip和链接库时出现问题.
在第二台服务器上,该文件不存在,我没有任何问题.
为什么我们需要这个文件,为什么PYTHONPATH不够用?
我安装了本地版本的Python并重命名了.pydistutils.cfg文件.因此,似乎该文件并不重要.
默认情况下brew install openmpi用于clang创建其包装器.
我需要gcc-4.9为包装器指定(Homebrew安装).
我试过了
$export CC=gcc-4.9
$brew install openmpi
$brew install --cc=gcc-4.9 openmpi
$brew install --with-gcc49 openmpi
$brew install -CC=gcc-4.9 -CXX=g++-4.9 -FC=gfortran -F77=gfortran openmpi
$brew install openmpi --cc=gcc-4.9
$brew install openmpi --CC=gcc-4.9 --CXX=g++-4.9 --FC=gfortran --F77=gfortran
Run Code Online (Sandbox Code Playgroud)
最后,我修改了openmpi公式添加:
args = %W[
CC=gcc-4.9
CXX=g++-4.9
FC=gfortran
F77=gfortran
Run Code Online (Sandbox Code Playgroud)
我还是得到的
$mpicc --showme
clang -I/usr/local/Cellar/open-mpi/1.8.4/include -L/usr/local/opt/libevent/lib -L/usr/local/Cellar/open-mpi/1.8.4/lib -lmpi
Run Code Online (Sandbox Code Playgroud) 对不起,如果这是一个非常基本的问题h5py.
我正在阅读文档,但我没有找到类似的例子.
我正在尝试使用Python创建多个hdf5数据集,但事实证明,关闭文件数据后会被覆盖.
假设我做了以下事情:
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
Run Code Online (Sandbox Code Playgroud)
我明白了
KeyError:"无法打开对象(对象'data1'不存在)"
如果我追加数据,则需要先在'w'模式下打开,然后在'a'模式下追加,有两个不同的语句.
import numpy as np
import h5py
f = h5py.File('test.hdf5', 'w')
f.create_dataset('data1', data = np.ones(10))
f.close()
f = h5py.File('test.hdf5', 'a')
f.create_dataset('data0', data = np.zeros(10))
f.close()
f = h5py.File('test.hdf5', 'r')
f["data1"].value
f.close()
Run Code Online (Sandbox Code Playgroud)
如果我'a'在两种情况下都以模式打开文件:
import numpy as np …Run Code Online (Sandbox Code Playgroud) 我正在从http://oceancolor.gsfc.nasa.gov/DOCS/DistFromCoast/加载 tiff 文件
from PIL import Image
im = Image.open('GMT_intermediate_coast_distance_01d.tif')
Run Code Online (Sandbox Code Playgroud)
数据量大(im.size=(36000, 18000)1.3GB),常规转换无效;即,imarray.shape返回()
import numpy as np
imarray=np.zeros(im.size)
imarray=np.array(im)
Run Code Online (Sandbox Code Playgroud)
如何将此 tiff 文件转换为numpy.array.
我可以使用这一行创建一个mpg视频
ffmpeg -f image2 -i 100%03d0.png movie.mpg
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试创建一个mp4视频,我会得到一个黑屏的视频.
ffmpeg -f image2 -i 100%03d0.png movie.mp4
Run Code Online (Sandbox Code Playgroud)
我的数据目录如下:1000010.png,1000020.png,... 1001260.png
这个问题可能看起来非常基本但却产生了很大的混乱.
我尝试将a numpy.array与标量进行比较:
a=numpy.array([0.,1.,2.,-1.,-4.])
if a.any()>0.:
print 'a:',a
Run Code Online (Sandbox Code Playgroud)
正如所料,我们得到:
a: [ 0. 1. 2. -1. -4.]
Run Code Online (Sandbox Code Playgroud)
现在,如果我这样做,找到负值
a=numpy.array([0.,1.,2.,-1.,-4.])
if a.any()<0.:
print 'a:',a
Run Code Online (Sandbox Code Playgroud)
我没有得到任何意味着所有值都大于0的东西.
按照这些说明(运行笔记本服务器和远程访问IPython笔记本 ),我按如下方式进行:
在远程服务器上:
1)设置NotebookApp.password()
In [1]: from IPython.lib import passwd
In [2]: passwd()
Enter password:
Verify password:
Out[2]: 'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
Run Code Online (Sandbox Code Playgroud)
2)创建个人资料
user@remote_host$ ipython profile create
Run Code Online (Sandbox Code Playgroud)
3)编辑 ~/.ipython/profile_default/ipython_notebook_config.py
# Password to use for web authentication
c = get_config()
c.NotebookApp.password =
u'sha1:67c9e60bb8b6:9ffede0825894254b2e042ea597d771089e11aed'
Run Code Online (Sandbox Code Playgroud)
4)在端口8889上启动笔记本
user@remote_host$ ipython notebook --no-browser --port=8889
Run Code Online (Sandbox Code Playgroud)
然后笔记本开始了
[I 16:08:10.012 NotebookApp]使用CDN的MathJax:https://cdn.mathjax.org/mathjax/latest/MathJax.js
[W 16:08:10.131 NotebookApp]终端不可用(错误是没有名为'terminado'的模块)
[我16:08:10.132 NotebookApp]从本地目录服务笔记本:/ cluster/home/user
[I 16:08:10.132 NotebookApp] 0个活动内核
[I 16:08:10.132 NotebookApp] IPython Notebook运行于:http:// localhost:8889 /
[I 16:08:10.132 NotebookApp]使用Control-C停止此服务器并关闭所有内核(两次跳过确认).
在我的本地机器上
5)SSH隧道
user@local$ ssh -N …Run Code Online (Sandbox Code Playgroud) 假设我有以下课程
class Daddy:
children=[]
def addChild(self,aChild):
self.children.append(aChild)
class Child:
name = ''
def __init__(self, aName):
self.name = aName
aChild = Child('Peter')
aDaddy = Daddy()
aDaddy.addChild(aChild)
print aDaddy.children[0].name
del(aDaddy)
anotherDaddy = Daddy()
print anotherDaddy.children[0].name
Run Code Online (Sandbox Code Playgroud)
Daddy()保持对对象aDaddy的引用,我得到以下输出:
Peter
Peter
Run Code Online (Sandbox Code Playgroud) 我正在使用一个使用 分配指针的库fftw_malloc,但我的数据以std::complex<double>*.
分配和释放内存的最有效方法是什么?
#include <fftw3.h>
#include <iostream>
int main()
{
std::complex<double> * p1, *p2;
std::vector< complex<double> > v;
int N=10;
//Allocating memory
p1 = (std::complex<double> *) fftw_malloc( sizeof(std::complex<double>) * N);
p2 = new std::complex<double>[N];
v.reserve(N);
//Do some stuff
manipulate(p1);
manipulate(p2);
manipulate(v.data());
//Freeing memory
fftw_free(p1);
delete[] p2;
}
Run Code Online (Sandbox Code Playgroud)
鉴于应该避免强制转换,我们可以说这p2比p1?
可以使用sph_legendreor调用tr1并编译它gcc-5gcc-6
#include<tr1/cmath>
int main()
{
std::tr1::sph_legendre(1,1,0);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,如果我尝试将其编译为clang++:
clang++ -stdlib=libstdc++ legendre.cpp -o legendre
我明白了
错误:命名空间“std::tr1”中没有名为“sph_legendre”的成员
在第 40.3 节中,C++PP(第 4 版)指出:
“对于特殊数学函数有一个单独的 ISO 标准 [C++Math,2010]。实现可以将这些函数添加到 cmath”
我怎样才能编译这些特殊函数clang++?