小编Dan*_*iel的帖子

Plotly:如何在两个子图上使用相同的配色方案?

我试图用 plotly 绘制两个散点图,其中在两个子图中自动选择的颜色是相同的,但我找不到这样做的方法。

下面是一个代码片段:

import plotly as py
import plotly.tools as to
import numpy as np
import plotly.graph_objs as go
fig=to.make_subplots(rows=1,cols=2,subplot_titles=['Plot 1','Plot 2'])
X=[0,50,100,150,200,250,300,350,400,450,500]
Y=[1,2,3,4,5,6,7,8,9,10,11]
Z=Y.copy()
for i  in np.arange(11):
    if i==0:
            Z[0]=Y[0]
    else:
            Z[i]=Y[i]+Z[i-1]
trace=go.Scatter(x=X,y=Y)
fig.append_trace(trace,1,1)
trace=go.Scatter(x=X,y=Z,showlegend=False)
fig.append_trace(trace,1,2);
py.offline.plot(fig)
Run Code Online (Sandbox Code Playgroud)

上面的代码绘制了两个子图,散点将具有不同的颜色。我希望它们具有相同的颜色。我知道我可以对两个散点上的颜色进行硬编码,但我需要从某些配色方案中自动选择颜色。

在此处输入图片说明

我怎样才能达到我所需要的?

python plotly

9
推荐指数
1
解决办法
5507
查看次数

针对不同体系结构的不同内核

我想知道是否有一些简单的方法可以为不同的架构提供不同版本的内核.他们是一个简单的方法吗?或唯一的可能性是在独立文件中定义独立内核并要求nvcc编译为每个文件的不同架构?

cuda

7
推荐指数
1
解决办法
136
查看次数

图形时间轴创建用于分析多线程C++程序的软件API

我正在构建一个高性能的多线程程序.一些函数的持续时间和执行的重叠计数很多,我希望以某种方式产生一种视觉时间轴图,显示函数何时开始及其持续时间.我希望有类似于NVIDIA分析器的图表.使用该boost::chrono包我已经收集了时间表,但找不到任何用于绘制它们的软件或API.有人知道吗?

问候

丹尼尔

c++ multithreading profiling

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

GTX 680,每个线程的Keplers和最大寄存器

因为我很困惑,我问下面的问题......

在各种网站和论文中,我发现声明说Kepler体系结构增加了每个线程的寄存器数量,但在我的GTX680上,这似乎并不正确,因为RegsPerBlock是65536,因此对于1024个线程,它将是64个regs.我缺少什么?将来每个线程会有更多的寄存器吗?

关心丹尼尔

cuda

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

C++范围的变量重新排序和计时器

我非常喜欢scoped_lock的工作方式,并且想知道天气可以做类似的实现来计算特定的执行代码

如果说我实现了一个简单的类scoped_timer,它在构造时启动一个计时器并在删除时停止并报告已经过的时间,那么这个示例代码是否会正确计时

func()
{
    //some code
    {
       scoped_timer a;
       //some code that does not include a
     }
     //some code
 }
Run Code Online (Sandbox Code Playgroud)

在实践中,我保证scoped_time a在开始时构造并在它超出范围时完全破坏.编译器是否可以决定对代码进行重新排序,以免在范围结束时完全破坏代码或在开头构造代码,因为不依赖于object a?C++标准有保证吗?

谢谢

丹尼尔

c++

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

atomicCAS:块内的行为

我正在用CUDA中的原子做一些实验.我的一个大问题是当同一个块中运行的两个线程原子地访问同一个地址时,它们是如何表现的.我尝试使用atomicAdd进行一些测试并且它原子地工作但是当我使用atomicCAS尝试下面的代码时,结果不是我所期望的.有人有解释吗?

#include <cuda_runtime.h>
#include <iostream>
#include <cuComplex.h>
using namespace std;
__global__ void kernel(int * pointer)
{
    *pointer=0;
    *(pointer+threadIdx.x+1)=0;
    __syncthreads();
    *(pointer+threadIdx.x+1)=atomicCAS(pointer,0,100);
}
int main(int argc,char ** argv)
{
    int numThreads=40;
    dim3 threadsPerBlock;
    dim3 blocks;
    int o[numThreads+1];
    int * pointer;
    cudaMalloc(&pointer,sizeof(int)*(numThreads+1));
    cudaMemset(pointer,0,sizeof(int)*(numThreads+1));
    threadsPerBlock.x=numThreads;
    threadsPerBlock.y=1;
    threadsPerBlock.z=1;
    blocks.x=1;
    blocks.y=1;
    blocks.z=1;
    kernel <<<threadsPerBlock,blocks>>> (pointer);
    cudaMemcpy(o,pointer,sizeof(int)*(numThreads+1),cudaMemcpyDeviceToHost);



    for (int i=0;i<numThreads+1;i++)
            cout << o[i] << " ";

    cout << endl;

}
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,在同一个块内运行的atomicCAS访问相同的地址进行比较和交换...我的期望是只有一个atomicCAS会找到要比较的值0而其他所有人都会找到100,但奇怪的是输出我的计划是:

 100 100 0 0 0 0 0 0 0 0 0 0 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

cuda

0
推荐指数
1
解决办法
917
查看次数

标签 统计

cuda ×3

c++ ×2

multithreading ×1

plotly ×1

profiling ×1

python ×1