小编Hai*_*ang的帖子

为什么sys.getsizeof(numpy.int8(1))返回12?

我想创建一个小的NumPy整数来节省内存.但是,我注意到了

import numpy,sys
print sys.getsizeof(numpy.int8(1))
Run Code Online (Sandbox Code Playgroud)

打印12,所以它似乎numpy.int8()生成12个字节而不是1个字节的数据.为什么是这样?

python numpy

5
推荐指数
1
解决办法
1003
查看次数

cublas内核函数会自动与主机同步吗?

关于cublas的一般问题.对于单个线程,如果没有从GPU到CPU的内存传输(例如cublasGetVector),cublas内核函数(例如cublasDgemm)是否会自动与主机同步?

    cublasDgemm();
//cublasGetVector();
    host_functions()
Run Code Online (Sandbox Code Playgroud)

那么,两个相邻的内核调用之间呢?

cublasDgemm();
cublasDgemm();
Run Code Online (Sandbox Code Playgroud)

那么,不涉及前一个内核中使用的全局内存的同步传输呢?

cublasDgemm(...gA...gB...gC);
cublasGetVector(...gD...D...);
Run Code Online (Sandbox Code Playgroud)

cublas

5
推荐指数
1
解决办法
708
查看次数

来自32块的32个线程是否会被安排为warp?

据我所知,在CUDA中,同一块中的32个相邻线程将被安排为warp.但我经常发现一些教程CUDA代码有多个块,每个块有1个线程.在这个模型中,来自32块的32个线程是否会被安排为warp?如果没有,我可以说这个模型不如每个块组织成32个线程一样有效吗?谢谢!

cuda

5
推荐指数
1
解决办法
179
查看次数

如何在CUDA/cublas中转置矩阵?

假设我有一个尺寸A*B在GPU上的矩阵,其中B(列数)是假定C样式的前导维度.在CUDA(或Cublas)中是否有任何方法将此矩阵转换为FORTRAN样式,其中A(行数)成为主要维度?

如果它可以在host->device传输期间进行转置同时保持原始数据不变,那就更好了.

c cuda gpu cublas

5
推荐指数
2
解决办法
1万
查看次数

将cudaMalloc同步主机和设备?

我知道cudaMemcpy会同步主机和设备,但cudaMalloc或cudaFree怎么样?

基本上我想在多个GPU设备上异步内存分配/复制和内核执行,我的代码的简化版本是这样的:

void wrapper_kernel(const int &ngpu, const float * const &data)
{
 cudaSetDevice(ngpu);
 cudaMalloc(...);
 cudaMemcpyAsync(...);
 kernels<<<...>>>(...);
 cudaMemcpyAsync(...);
 some host codes;
}

int main()
{
 const int NGPU=3;
 static float *data[NGPU];
 for (int i=0; i<NGPU; i++) wrapper_kernel(i,data[i]);
 cudaDeviceSynchronize();
 some host codes;
}
Run Code Online (Sandbox Code Playgroud)

但是,GPU按顺序运行,无法找到原因.

cuda

5
推荐指数
1
解决办法
2450
查看次数

如何允许setw适用于以下所有标准输出?

应该是一个微不足道的问题,但发现setw仅适用于其紧接着的输出,并且不确定如何允许它应用于以下所有输出.

例如,对于以下代码行

cout<<setw(3)<<setfill('0')<<8<<" "<<9<<endl;
Run Code Online (Sandbox Code Playgroud)

要么

cout.width(3);
cout.fill('0');
cout<<8<<" "<<9<<endl;
Run Code Online (Sandbox Code Playgroud)

我希望输出008 009代替008 9

c++

5
推荐指数
1
解决办法
1776
查看次数

有没有python方法根据提供的新索引重新排序列表?

假设我有一个工作清单:['a','b','c']和索引列表[2,1,0],它会将工作清单更改为:['c','b','a "]

是否有任何python方法可以轻松完成此任务(工作列表也可能是一个numpy数组,因此更适合使用更具适应性的方法)?谢谢!

python numpy

4
推荐指数
1
解决办法
220
查看次数

cudaMalloc和cudaFree是同步还是异步调用?

我想测试cudaMalloc和cudaFree是否是同步调用,所以我对CUDA SDK中的"simpleMultiGPU.cu"示例代码进行了一些修改.以下是我更改的部分(添加的行不缩进):

float *dd[GPU_N];;
for (i = 0; i < GPU_N; i++){cudaSetDevice(i); cudaMalloc((void**)&dd[i], sizeof(float));}
    //Start timing and compute on GPU(s)
    printf("Computing with %d GPUs...\n", GPU_N);
    StartTimer();

    //Copy data to GPU, launch the kernel and copy data back. All asynchronously
    for (i = 0; i < GPU_N; i++)
    {   
        //Set device
        checkCudaErrors(cudaSetDevice(i));

        //Copy input data from CPU
        checkCudaErrors(cudaMemcpyAsync(plan[i].d_Data, plan[i].h_Data, plan[i].dataN * sizeof(float), cudaMemcpyHostToDevice, plan[i].stream));

        //Perform GPU computations
        reduceKernel<<<BLOCK_N, THREAD_N, 0, plan[i].stream>>>(plan[i].d_Sum, plan[i].d_Data, plan[i].dataN);
        getLastCudaError("reduceKernel() execution failed.\n");

        //Read back GPU results
        checkCudaErrors(cudaMemcpyAsync(plan[i].h_Sum_from_device, …
Run Code Online (Sandbox Code Playgroud)

cuda

4
推荐指数
1
解决办法
1971
查看次数

为什么C++拷贝构造函数在调用其子拷贝构造函数时表现不同?

我有以下玩具类A及其子B:

#include <iostream>

using namespace std;

class A
{
    protected:
        int a;
    public:
        A():a(1){cout<<"A default constructor..."<<endl;}
        A(int i):a(i){cout<<"A non-default constructor..."<<endl;}
        A(const A &ao){cout<<"A copy constructor..."<<endl; a=ao.a;}
};

class B:public A
{
    private:
       int b;
    public:
       B(int i,int j):A(i),b(j){cout<<"B constructor..."<<endl;}
       //B(const B &bo){cout<<"B copy constructor... "<<endl; b=bo.b;}
       void print(){cout<<endl<<"class B, a: "<<a<<" b: "<<b<<endl<<endl;}
};

int main()
{
    B b1(3,8);
    b1.print();
    B b2=b1;
    b2.print();
}
Run Code Online (Sandbox Code Playgroud)

我发现如果我没有为B类提供复制构造函数,编译器会为我合成一个,并且那个使用我为A类提供的复制构造函数.但是,如果我确实为B类提供了复制构造函数,我没有显式调用基类A的复制构造函数(参见代码),编译器会调用类A的默认CONSTRUCTOR吗?这是为什么?

c++

4
推荐指数
1
解决办法
207
查看次数

由气流安排的芹菜任务之间的延迟

我试图通过在 Airflow 中使用 celeryExecutor 来运行以下简单的工作流程:

default_args = {
    'depends_on_past': False,
    'start_date': datetime.now(),
}

dag = DAG('HelloWorld', default_args=default_args, schedule_interval=None)
default_args=default_args)

t1 = BashOperator(
    task_id='task_1',
    bash_command='echo "Hello World from Task 1"; sleep 0.1',
    dag=dag)
t2 = BashOperator(
    task_id='task_2',
    bash_command='echo "Hello World from Task 2"; sleep 0.2',
    dag=dag)
t2.set_upstream(t1)
Run Code Online (Sandbox Code Playgroud)

但是,task_1 和 task_2 之间总是有大约 5 秒的延迟。以下是airflow.cfg 快照:

[scheduler]
# Task instances listen for external kill signal (when you clear tasks
# from the CLI or the UI), this defines the frequency at which they …
Run Code Online (Sandbox Code Playgroud)

celery airflow

4
推荐指数
1
解决办法
2065
查看次数

标签 统计

cuda ×4

c++ ×2

cublas ×2

numpy ×2

python ×2

airflow ×1

c ×1

celery ×1

gpu ×1