为大家整理的关于“重庆排名前10大数据培训学校推荐”的相关信息。说起Java大家一定不陌生,毕竟Java这几年通过互联网+理念慢慢的渗透到了各大行业中,现在的Java软件开发岗位尤为火爆。同时也吸引着不少年轻人选择通过Java培训加入到行业中,在国内Java培训机构也是不少,想要在其中选择一家适合自己的是不太简单的,在这里,排名榜小编作为一名IT行业的观察者,从课程设计、教师资质、就业等多方面对Java培训机构进行了一系列的考察和筛选,结果仅供大家参考。
java一直是IT行业的高薪代表,其功能强大,简单易用,如今也是全球范围内使用人数比较多的编程语言之一,基于其强大的发展前景,java目前仍然十分火热,去专业的java培训学校进行学习,这也是快速入门的学习方式。国内java培训学校哪家好?小编带大家了解一下重庆排名前10大数据培训学校推荐:
1、火星时代-快速从小白到大神
2、汇众教育-专注游戏开发培训/动漫设计培训/影视后期剪辑
3、达内教育-IT培训/UI设计/运营/影视特效培训机构
4、中公IT教育培训机构-编程培训
5、天琥教育-专注互联网视觉教育
6、千锋教育培训
7、博为峰培训-零基础学博为峰
8、东方瑞通
9、美迪电商教育
10、新猿教育-IT教育培训机构
以上排名不分先后,仅供参考。
java工程师的薪水通常是多少?通过日常的各种薪酬统计,我们可以了解到it行业总体薪酬较高,而java作为it行业的佼佼者,薪酬自然不会低,职友集数据显示,全国java开发工程师的平均薪酬为13.6k/月,其中以10k-15k薪酬的占比高,达33.5%。也许有些人看这个工资水平感觉不高,但实际上这是全国的平均水平,与北京、上海、深圳等城市相比,每个月的工资会稍微高一点,可以达到2万左右。而这一薪酬水平是7.8k/月,相当于平均工资的74.7%,所以还是不错的。java工程师职位职责:需求分析,系统设计工作,完成系统需求分析,编写系统设计说明书;负责按要求编制各类设计文件,并参与文件的编制;用java和数据库语言开发一个项目。
本文介绍用在Windows下把C/C++的函数(这类函数通常执行复杂的运算)编译后封装成Python的库,并用Python调用。C的函数主要实现使用GPU加速运算。
(1)创建VS项目
设置项目的属性为DLL动态库:
(2)写C代码
C代码基本结构:
然后将项目生成解决方案,得到*.dll文件。(源代码见文末)
(3)在Python库的路径下新建一个文件夹,作为库的名字,如:
E:\Anaconda3\Lib\site-packages\cuda。注意不要和标准的库名冲突,建议取成:C_*的形式。
找到之前生成的*.dll文件(这里是cuda.dll),放入上述文件夹内。
(4)新建一个__init__.py文件
代码如下:
载入dll的方法:用ctypes.CDLL('filepath')。
其中,cuda.add函数是把两个数组相加(当然Python里没有数组的概念,传入的是列表),调用的是C中的addWithCuda这个函数。而addWithCuda这个函数的参数分别是:目标数组、相加的两个数组、数组长度。在Python调用时,需要生成C格式的数组,如c_a。
cuda.help_fuc是调用C中的help函数,而help函数是解释addWithCuda这个函数的,在C中返回的是一个字符串,而在Python中,也需要将其格式化。由于兼容性问题(可能是Python3.*的一个小BUG),还需用
dll.help.restype = c_uint64
语句把help函数的返回值变成64位无符号整数。最后,Python把获得的64位无符号整数转为utf-8格式的字符串。
这样一个库就封装完毕,可以用Python调用cuda这个库中的函数了。
(5)调用函数
运行结果:
其中,help(cuda.add)是返回了__init.py__中add函数的说明。
在实际使用时,如果输入的列表长度不相同,则会自动用0来补充:
源代码
1.cuda.cu
#include windows.h
#define DLL_API __declspec(dllexport)
#include "cuda_runtime.h"
#include "device_launch_parameters.h"
#include stdio.h
extern "C" {
DLL_API cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size);
DLL_API char * help(void);
}
DLL_API char * help(void) {
return "*******************\n\
Function:addWithCuda\n\
arg[0]: int target_arr\n\
arg[1]: int add_arr1\n\
arg[2]: int add_arr2\n\
arg[3]: int arr_len\n\
*******************\n";
}
__global__ void addKernel(int *c, const int *a, const int *b){
int i = threadIdx.x;
c[i] = a[i] + b[i];
}
cudaError_t addWithCuda(int *c, const int *a, const int *b, unsigned int size){
int *dev_a = 0;
int *dev_b = 0;
int *dev_c = 0;
cudaError_t cudaStatus;
cudaStatus = cudaSetDevice(0);
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaSetDevice failed! Do you have a CUDA-capable GPU installed?");
goto Error;
}
cudaStatus = cudaMalloc((void**)dev_c, size * sizeof(int));
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMalloc failed!");
goto Error;
}
cudaStatus = cudaMalloc((void**)dev_a, size * sizeof(int));
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMalloc failed!");
goto Error;
}
cudaStatus = cudaMalloc((void**)dev_b, size * sizeof(int));
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMalloc failed!");
goto Error;
}
cudaStatus = cudaMemcpy(dev_a, a, size * sizeof(int), cudaMemcpyHostToDevice);
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMemcpy failed!");
goto Error;
}
cudaStatus = cudaMemcpy(dev_b, b, size * sizeof(int), cudaMemcpyHostToDevice);
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMemcpy failed!");
goto Error;
}
addKernel1, size(dev_c, dev_a, dev_b);
cudaStatus = cudaGetLastError();
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "addKernel launch failed: %s\n", cudaGetErrorString(cudaStatus));
goto Error;
}
cudaStatus = cudaDeviceSynchronize();
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaDeviceSynchronize returned error code %d after launching addKernel!\n", cudaStatus);
goto Error;
}
cudaStatus = cudaMemcpy(c, dev_c, size * sizeof(int), cudaMemcpyDeviceToHost);
if (cudaStatus != cudaSuccess) {
fprintf(stderr, "cudaMemcpy failed!");
goto Error;
}
Error:
cudaFree(dev_c);
cudaFree(dev_a);
cudaFree(dev_b);
return cudaStatus;
}
2.__init__.py
from os import path
from ctypes import *
dll = CDLL(path.realpath(__file__)[:-11]+'\cuda.dll')
def add(a, b):
"""Add two arrays"""
size = max(len(a), len(b))
c_a = (c_int * size)(*a)
c_b = (c_int * size)(*b)
c_c = (c_int * size)(*[0])
dll.addWithCuda(byref(c_c), byref(c_a), byref(c_b), size)
return [item for item in c_c]
def help_fuc():
dll.help.restype = c_uint64
rst = string_at(dll.help(), -1)
print(rst.decode('utf-8'))
3.mian.py
import cuda
cuda.help_fuc()
help(cuda.add)
a=[1,2,3,4,5]
b=[10,20,30,40,50]
val=cuda.add(a, b)
以上是关于“重庆排名前10大数据培训学校推荐”的相关资讯,希望对您有所帮助。培训Java这种技术内容,如果没有完善的硬件支持,是无法进行的。所以,如果选择java大数据培训机构,一定要实地看一看。
更多培训课程,学习资讯,课程优惠,课程开班,学校地址等学校信息,请进入
学习资讯
详细了解
你也可以留下你的联系方式,让课程老师跟你详细解答: 在线咨询