Burger的创作纪念日

机缘

        我的第一篇博客,是两年前五月份的生成语音对抗样本。当时有一门课程是云计算,其中一个实验是在云服务器上跑通一个生成语音对抗样本的实验。在配置环境的过程中会出很多bug,当时没有一个同学做出来,我在做的过程中也是很崩溃,所幸最后做出来了,很有成就感,于是把做的过程记录下来,希望能帮到其他同学。

        这一写,就开启了我创作的大门。


收获

  1. 功利一点来说,虚荣心的满足是一大收获。截止到目前,我已经有200个粉丝(虽然大多数是机器人)、两万多总访问量、内容获得295次点赞、26次评论、291次收藏、代码片获得605次分享……
  2. 其次我把写博客当成一种知识的梳理。我会把自己精读的论文写成博客、也会把自己学到的代码技巧或者bug的解决写成博客。在写的过程中自己会对知识有一个系统的认识。
  3. 然后我的博客或多或少会帮助一些学弟学妹们。刚进入计算机科学与技术这个专业时,我什么都不会,什么都要从零开始。我在优快云上找到了一些学长学姐留下的经验,从而使我完成一些比较难的实验。现在我也有能力进行创作了,因此把这份爱传递下去,帮助更多的学弟学妹。
  4. 最近发的动态收到了大佬的评论,受宠若惊。榜样是一个人进步的力量,希望有朝一日可以与榜样比肩。

 


日常

        创作已经是我学习生活的一部分了,一般来说只要有了新的学习体会、而且又比较有空,我就会进行创作。

        在有限的精力下,如何平衡创作和工作学习呢?这个其实是不平衡的,上面说过,比较有空才会进行创作,首先解决的一定是工作学习,工作学习是我们的立身之基、是我们创作的源泉。正是因为在工作学习中解决了问题,才会到优快云发博客进行创作,切勿本末倒置。

        还有就是:厚积薄发。创作一定是你之前经过了很多的学习积累,一心只想写博客赚流量、而不进行学习,写出来的博客是没有什么价值的。


成就

        我过去写得最好的一段代码是大三时候学习并行计算的时候,写的Openacc多卡优化Floyd算法。这同样是班里同学都没有做出来,而我第一个将它实现(虽然运行结果有点问题,但跑出来了)。

#define INF 1e7
#include <omp.h>
#include <openacc.h>
#include <math.h>
#include <stdio.h>
#include <stdlib.h>
#include <assert.h>
#include <algorithm>
using namespace std;
 
inline int index(const int i, const int j) {
  return i * SIZE + j;
}
 
// add your codes begin
#define processor 2
// add your codes end
 
int main() {
  const int size2 = SIZE * SIZE;
  float *data = new float[size2];
  for (int i = 0; i < size2; i++) data[i] = -INF;
 
  srand(SIZE);
  for (int i = 0; i < SIZE*20; i++) {
    int prev = rand() % SIZE;
    int next = rand() % SIZE;
    if ((prev == next) || (data[index(prev, next)] > -INF)) {
      i--;
      continue;
    }
    data[index(prev, next)] = log((rand() % 99 + 1.0) / 100);
  }
 
  double t = omp_get_wtime();
  // add your codes begin
  int blocksize=SIZE/processor;
  omp_set_num_threads(processor);
  #pragma omp parallel
  {
    int my_gpu=omp_get_thread_num();
    acc_set_device_num(my_gpu,acc_device_nvidia);
    #pragma acc data copyin(data[0:size2])//不能使用copy
    {
      #pragma omp for schedule(static,1)
      for(int block=0;block<processor;block++){
        int istart=block*blocksize;
        int iend=istart+blocksize;
        for(int k=0;k<SIZE;k++){
          #pragma acc parallel loop gang worker num_workers(4) vector_length(128) async(block)
          for(int i=istart;i<iend;i++){
            #pragma acc loop vector
            for(int j=0;j<SIZE;j++){
              if(data[index(i,j)]<data[index(i,k)]+data[index(k,j)]){
                data[index(i,j)]=data[index(i,k)]+data[index(k,j)];
              }          
            }
          }
        }
        #pragma acc update self(data[istart*SIZE:SIZE*blocksize]) async(block)
      }
      #pragma acc wait
    }
  }
  // add your codes end 
  t = omp_get_wtime() - t;
  printf("time %f %d\n", t, SIZE);
 
  for (int i = 0; i < 20; i++) {
    int prev = rand() % SIZE;
    int next = rand() % SIZE;
    if (prev == next) {
      i--;
      continue;
    }
    printf("test %d %d %f\n", prev, next, data[index(prev, next)]);
  }
}

憧憬

        目前正在准备发论文,希望八月份能有一个好结果。在论文顺利发表之后,就可以开始比较频繁的博客创作了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Burger~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值