并行 遇到的问题

1.CodeBlocks下载安装
直接下载codeblocks-***mingw-setup.exe
不需要额外安装配置mingw
安装完后打开codeblocks,Settings->Compiler…->Global compiler settings->GNU GCC Compiler->Toolchain executables,设置Compiler’s Installation Directory为codeblocks安装目录下的mingw文件夹,如“C:\Program Files (x86)\codeblocks\mingw”
2.Visual Studio提示无法查找或打开PDB文件,关于Microsoft符号集的问题
Tools -> Options -> Debugging -> Output Window -> Module Load Messages -> Off
3.安装与cuda8.0配套的pytorch
pip3 install https://download.pytorch.org/whl/cu80/torch-1.0.1.post2-cp36-cp36m-linux_x86_64.whlpip3 install torchvision
注: cuda 8.0版本、python 3.6、torch 1.0.1版本
或者
conda install pytorch torchvision cudatoolkit=8.0 -c pytorch
注:上述版本为 cuda8.0(如果使用9.0或者10.0 更改相应参数即可),python版本没有影响,torch最新版本。
验证方式:

import torch
import torchvision
print(torch.cuda.is_available())

看pytorch版本:

import torch
print(torch.__version__)

4.安装完CUDA后,命令行输入nvcc -V无反应
则编辑系统环境变量,将C:\Program Files\NVIDIA GPU
Computing Toolkit\CUDA\v9.0\libnvvp;C:\Program Files\NVIDIA GPU
Computing Toolkit\CUDA\v9.0\bin;添加到PATH中
5.visual studio MPI编程环境配置
安装MPI https://www.microsoft.com/en-us/download/details.aspx?id=57467,两个都下载安装
运行msi 和 exe 文件
安装后会在 C:\Program Files (x86)\Microsoft SDKs\MPI生成几个文件夹
VS中项目右键属性设置:
VC++目录->包含目录,添加:“C:\Program Files (x86)\Microsoft SDKs\MPI\Include;”
VC++目录->库目录,添加:“C:\Program Files (x86)\Microsoft SDKs\MPI\Lib\x86;”
右上角->配置管理器->活动解决方案平台,选择:x86;
C/C++ -> 预处理器->预处理器定义,添加:“MPICH_SKIP_MPICXX;”
C/C++ -> 代码生成 -> 运行库,选择:多线程调试(/MTd);
链接器 -> 输入 -> 附加依赖项,添加:“msmpi.lib;msmpifec.lib;”
每一步都点击“Apply”(应用)
debug后生成exe
进入exe文件目录,按住shift 在空白处右键 ,选择“在此处打开Powershell窗口”,输入mpiexec -n 10 ***.exe即可运行
6.2015+CUDA8.0编写第一个CUDA程序
打开VS2015 → 新建项目 → 其他 → “空项目”
右键项目属性 → 配置管理器 → 全改为“x64”
右键项目 →生成依赖项 →生成自定义 →勾选“CUDA 8.0xxx”
右键项目 → 属性 → 配置属性 → VC++目录 → 包含目录,添加以下目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\include
…… → 库目录,添加以下目录:C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v9.2\lib\x64
右键项目 → 属性 → 配置属性 → 链接器 → 常规 → 附加库目录,添加以下目录:$(CUDA_PATH_V9_2)\lib$(Platform)
右键项目 → 属性 → 配置属性 → 链接器 → 输入 → 附加依赖项,添加以下库:cublas.lib;cublas_device.lib;cuda.lib;cudadevrt.lib;cudart.lib;
cudart_static.lib;cufft.lib;cufftw.lib;curand.lib;cusolver.lib;cusparse.lib;
nppc.lib;nppial.lib;nppicc.lib;nppicom.lib;nppidei.lib;nppif.lib;nppig.lib;
nppim.lib;nppist.lib;nppisu.lib;nppitc.lib;npps.lib;nvblas.lib;nvcuvid.lib;
nvgraph.lib;nvml.lib;nvrtc.lib;OpenCL.lib;
右键源文件 → 添加 → 新建项 → 选择 “CUDA C/C++ File”
或者右键 “xxx.cu" 源文件 → 属性 → 配置属性 → 常规 → 项类型 → 设置为“CUDA C/C++”
使用下面代码测试

#include"cuda_runtime.h"
#include"device_launch_parameters.h"
#include<stdio.h>
#include<stdlib.h>
void main() {
    int deviceCount;
    cudaGetDeviceCount(&deviceCount);
    int dev;
    for (dev = 0; dev < deviceCount; dev++){
        int driver_version(0),
        runtime_version(0);
        cudaDeviceProp deviceProp;
        cudaGetDeviceProperties(&deviceProp, dev);
        if (dev == 0)
            if (deviceProp.minor = 9999 && deviceProp.major == 9999)
                printf("\n");
        printf("\nDevice%d:\"%s\"\n", dev, deviceProp.name);
        cudaDriverGetVersion(&driver_version);
        printf("CUDA驱动版本:%d.%d\n", driver_version / 1000, (driver_version % 1000) / 10); 
        cudaRuntimeGetVersion(&runtime_version);
        printf("CUDA运行时版本:%d.%d\n",runtime_version / 1000, (runtime_version % 1000) / 10);
        printf("设备计算能力:%d.%d\n", deviceProp.major, deviceProp.minor);
        printf("Total amount of Global Memory: %u bytes\n", deviceProp.totalGlobalMem);
        printf("Number of SMs: %d\n",deviceProp.multiProcessorCount);
        printf("Total amount of Constant Memory: %u bytes\n",
deviceProp.totalConstMem);
        printf("Total amount of Shared Memory per block: %u bytes\n",deviceProp.sharedMemPerBlock);
        printf("Total number of registers available per block:  %d\n",deviceProp.regsPerBlock);
        printf("Warp size:%d\n", deviceProp.warpSize);
        printf("Maximum number of threads per SM:%d\n",deviceProp.maxThreadsPerMultiProcessor);
        printf("Maximum number of threads per block: %d\n",
deviceProp.maxThreadsPerBlock);
        printf("Maximum size of each dimension of a block: %d x %d x %d\n", deviceProp.maxThreadsDim[0], deviceProp.maxThreadsDim[1], deviceProp.maxThreadsDim[2]);
        printf("Maximum size of each dimension of a grid: %d x %d x %d\n", deviceProp.maxGridSize[0], deviceProp.maxGridSize[1], deviceProp.maxGridSize[2]);
        printf("Maximum memory pitch:%u bytes\n",deviceProp.memPitch);
        printf("Texture alignmemt:  %u bytes\n",deviceProp.texturePitchAlignment);
        printf("Clock rate: %.2f GHz\n", deviceProp.clockRate * 1e-6f);
        printf("Memory Clock rate:%.0f MHz\n",deviceProp.memoryClockRate * 1e-3f);
        printf("Memory Bus Width:%d-bit\n",deviceProp.memoryBusWidth);
    }
    system("pause");
    //return 0;
}

7.codeblocks SMID,Pthread,OpenMP编程设置
Setting->Compiler->General Compiler Setting->Compiler flags
勾选“Have g++ follow the C++ 11 ISO C++language standard[-std=C++11]”
…->Other compiler options
写上-msse
-mavx
-lpthread
-fopenmp
当然编程时要include相应文件
#include <omp.h> //OpenMP
#include <pthread.h> //pthread
#include <xmmintrin.h> //SSE
#include <emmintrin.h> //SSE2
#include <pmmintrin.h> //SSE3
#include <tmmintrin.h> //SSSE3
#include <smmintrin.h> //SSE4.1
#include <nmmintrin.h> //SSSE4.2
#include <immintrin.h> //AVX、AVX2、AVX-512
8.visual studio配置eigen
直接去官网下载http://eigen.tuxfamily.org/index.php?title=Main_Page#Download
解压后在这里插入图片描述
项目 右键 属性->配置:平台选择“所有平台”
c/c++ ->General->Additional Include Directories里加入Eigen路径
在这里插入图片描述
VC++ Directories->Include Directories里加入Eigen文件夹的路径
在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值