SparkCL简介

SparkCL源码链接

Spark + Aparapi = SparkCL

  • 其中Spark都很熟悉了,是云计算框架,将Hadoop 里的Mapreduce优化了。
  • Aparapi 是Java版的Opencl,不用JavaCL的原因是,JavaCL需要更多底层的操作,而我们的目的只是调用一下GPU进行计算,并不管具体GPU并行的事情。另外,Aparapi有一个容错机制,就是如果没有检测到GPU硬件的话,就会返回给JVM来运行(在源码KernelRunner.java 333行)。

SparkCL的改进

经过example里代码的对比,可以发现:SparkCL是通过自定义mapCL函数或者reduceCL函数来实现GPU并行。也就是说,sparkCL通过自定义mapCL/ reduceCL改写transformation。

其中mapCL/ reduceCL 里自定义funcX函数,这个函数在spark kernel实例化的时候,可以动态调用具体的mapParameter函数和mapReturnValue函数。mapParameter主要是set GPU参数,比如Range,mapReturnValue是执行具体的任务。

最后mapCL/ reduceCL 再调用spark的map(funX)和reduce(funX)

以下是mapCL代码:


        public <R> JavaRDD<R> mapCL(final SparkKernel<T,R> kernel) 
    {

        Function<T,R> funcX = new Function<T,R>()
        {

            @Override
            public R call(T v1) throws Exception 
            {
                final SparkKernel<T,R> cachedKernel = (SparkKernel<T, R>) SparkCLCache.getInstance().tryGetCachedKernelVersion(kernel);
                cachedKernel.mapParameters(v1);
                exclusiveExecKernel(cachedKernel);
                return cachedKernel.mapReturnValue(v1);
            }

        };

        return (JavaRDD<R>) m_data.map(funcX);
    }
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值