机缘
我的第一篇博客,是两年前五月份的生成语音对抗样本。当时有一门课程是云计算,其中一个实验是在云服务器上跑通一个生成语音对抗样本的实验。在配置环境的过程中会出很多bug,当时没有一个同学做出来,我在做的过程中也是很崩溃,所幸最后做出来了,很有成就感,于是把做的过程记录下来,希望能帮到其他同学。
这一写,就开启了我创作的大门。
收获
- 功利一点来说,虚荣心的满足是一大收获。截止到目前,我已经有200个粉丝(虽然大多数是机器人)、两万多总访问量、内容获得295次点赞、26次评论、291次收藏、代码片获得605次分享……
- 其次我把写博客当成一种知识的梳理。我会把自己精读的论文写成博客、也会把自己学到的代码技巧或者bug的解决写成博客。在写的过程中自己会对知识有一个系统的认识。
- 然后我的博客或多或少会帮助一些学弟学妹们。刚进入计算机科学与技术这个专业时,我什么都不会,什么都要从零开始。我在优快云上找到了一些学长学姐留下的经验,从而使我完成一些比较难的实验。现在我也有能力进行创作了,因此把这份爱传递下去,帮助更多的学弟学妹。
- 最近发的动态收到了大佬的评论,受宠若惊。榜样是一个人进步的力量,希望有朝一日可以与榜样比肩。
日常
创作已经是我学习生活的一部分了,一般来说只要有了新的学习体会、而且又比较有空,我就会进行创作。
在有限的精力下,如何平衡创作和工作学习呢?这个其实是不平衡的,上面说过,比较有空才会进行创作,首先解决的一定是工作学习,工作学习是我们的立身之基、是我们创作的源泉。正是因为在工作学习中解决了问题,才会到优快云发博客进行创作,切勿本末倒置。
还有就是:厚积薄发。创作一定是你之前经过了很多的学习积累,一心只想写博客赚流量、而不进行学习,写出来的博客是没有什么价值的。
成就
我过去写得最好的一段代码是大三时候学习并行计算的时候,写的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)]);
}
}
憧憬
目前正在准备发论文,希望八月份能有一个好结果。在论文顺利发表之后,就可以开始比较频繁的博客创作了。